Uso de Variables Globales (DTS SQL Server 2000)

Publicado septiembre 16, 2007 por roquesalde
Categorías: Técnico

Algo muy importante y potente que tenemos dentro de los DTS de SQL 2000 es el uso de variable globales, por ejemplo podemos tener el problema de querer traer registros a una tabla a partir de una fecha en particular o un cálculo específico, si el sistema del que extraemos datos y a la BD en la que insertamos esos datos están en SQL Server, no es demasiado problema porque podemos aplicar esos filtros con subconsultas, pero qué sucede cuando el sistema origen se encuentra en Oracle o Sybase, o cualquier motor distinto de SQL Server, con una simple subconsulta no podemos lograrlo, debemos utilizar si o si variables globales. ¿Porqué son globales? Porque al contrario de las variables que definimos dentro de un store procedure con la sentencia declare nombre as tipoDeDato  y les asignamos un valor con una sentencia por ejemplo así:

SELECT @variable1 = fecha  FROM Tabla

Las variables globales las generamos con las “Tareas de Ejecución de SQL”

imagen1.jpg

Dentro de esa tarea seleccionamos una conexión que puede ser a cualquier motor de BD (previamente creada obviamente), y escribimos nuestro SQL del dato que queremos traer.

imagen2.jpg

Luego hacemos clic en el botón “Parámetros” y tenemos dos solapas, una que dice “Parámetros de Entrada” y “Parámetros de Salida”, como nosotros en este caso queremos generar un parámetro o variable de salida seleccionamos la segunda solapa.

imagen3.jpg

Como el resultado que obtenemos de la consulta es un solo registro, seleccionamos “Valor de Fila”, si lo que obtenemos es un conjunto de filas (Recordset para los familiarizados con Visual Basic) seleccionamos “Conjunto de Filas”, y hacemos clic en “Crear Variables Globales”

Una vez creada la variable, asignamos al parámetro (nombre de columna resultado de query generada previamente) la variable global que hemos creado, hasta aquí está creada y cuando se ejecute el DTS se llenará con el resultado de esa query, ahora falta saber cómo usamos esa variable en otro objeto, que puede ser una “Tarea de Transformación de Datos”, una “Tarea de Secuencias ActiveX”, etc.

Nosotros en este ejemplo vamos a utilizarla en una “Tarea de Transformación de Datos”

imagen4.jpg

Creamos las conexiones origen y destino pertinentes, y en la tarea de transformación de datos escribimos una query por ejemplo así:

imagen5.jpg

Al escribir una condición igualando al signo “?”, SQL Server se da cuenta que estamos por asignar una variable a ese parámetro, hacemos clic en “Parámetros”  y seleccionamos el parámetro creado.

Este es uno de los usos más simples que tenemos de variables globales, de aquí para adelante se pueden hacer muchas cosas más, la variable dura lo que dura la ejecución del DTS, al igual que una variable de SP dura lo que dura la ejecución del SP.

Bueno, espero le sirva a alguien esta opción de utilizar variables globales en los DTS, se aceptan críticas y/o sugerencias respecto a variables globales. Próximamente veremos cómo hacer lo mismo y más en SSIS (podríamos decir que son los DTS de SQL Server 2005)

Saludos!

¿Por qué fallan algunos proyectos de Business Intelligence?

Publicado julio 2, 2007 por leandrosrur
Categorías: General

A veces nos sorprende que con el desarrollo al que han llegado muchas herramientas de nicho dentro de Business Intelligence, el uso de metodologías como Corporate Performance Management, Balanced Scorecard y el mayor nivel de conocimiento de técnicos y usuarios, se produzcan tantos errores conceptuales y prácticos en las implementaciones de soluciones Business Intelligence, en términos de exceso de costos sobre lo previsto, no utilización por parte de los participantes, no cumplir con las expectativas del proyecto, información errónea, etc. En base a algunas experiencias voy a comentar cuales son algunos de los principales fallos:

  • La selección del software y hardware a veces se realiza siguiendo criterios de acuerdos generales o compromisos, antes de hacer análisis exclusivamente técnico. En muchas ocasiones incluso se eligen las herramientas teniendo en cuenta únicamente el software front end desconociendo y dejando de lados componentes más relevantes como ser ETL, Base de Datos DW, OLAP, etc.
  • No se reconoce el tipo de solución adecuada: Dentro del mundo BI existen muchas soluciones de negocio para cada necesidad de información como ser tableros de control, planeamiento, análisis, reportes, proyección para lo cual es muy importante entender la o las necesidades del negocio y la capacidad de la empresa de adoptarla, no todas las empresas necesitan soluciones de DW, de Tablero o de análisis por escenarios, es sumamente importante analizar variables como tipo de decisión a tomar, necesidades de información, tecnología disponible, aceptación de los usuarios, nivel cultural, etc.
  • Muchos Data Warehouses crecen en tamaño de forma desproporcionada porque en el diseño y en el análisis del proyecto se armaron repositorios con excesiva información y en algunos casos tan operativa que se hace imposible la administración y actualización del mismo.
  • Algunas empresas gestionan internamente sus proyectos entendiendo que el administrador de base de datos puede responder como líder de estos proyectos desentendiendo la complejidad y alto poder de necesidades y dependencias de tiempo que se generan.
  • Se fijan fechas en producción de estos proyectos poco realistas sin tener en cuenta riesgos, necesidad de integración de información, gestión de fuentes OLTP y estabilidad/testing de los distintos workflows de carga y actualización.
  • Antes del proyecto, no se realizan pruebas de concepto para determinar la viabilidad del proyecto haciendo análisis de estabilidad de fuente de datos, capacidad de desarrollo, presupuesto, etc.
  • Los datos de origen no están limpios. Duplicidades, errores, caracteres erróneos, implican en muchos casos un proceso ETL más costoso, mayor tamaño de la Base de datos y peor rendimiento.
  •  No existe un sponsor ejecutivo en el proyecto: Es indispensable que en estas soluciones se defina y ejerza dicho rol una persona con cargo directivo y de decisión dentro de la empresa ya que estos proyectos implican acompañamiento en los procesos, reemplazo de trabajos manuales por herramientas automáticas y hasta en algunas ocasiones cambios culturales acerca de forma de trabajar y de desarrollarse operativamente en el día a día.
  • Escaso involucramiento de los usuarios finales que les lleva a sentir cierta frustración con los resultados obtenidos. El usuario final tiene que participar desde el inicio del proyecto ya que en diferentes roles va a ser el beneficiario de la solución y conceptualmente va a tener que trabajar para acostumbrarse a las formas de estas soluciones.
  • No alinear el proyecto dentro de una estrategia de negocio. El proyecto debe dar soporte a los procesos de negocios actuales y de toma de decisiones que lleva la compañía, permitiendo obtener la información correcta, oportuna y entendible a cada involucrado en tomar decisiones.   

Existen más factores que consiguen que un proyecto de Business Intelligence no cumpla su objetivo. Como consecuencia se frustran los usuarios, se genera mala imagen de los productos de BI y se producen riesgos internos para el director de informática y otros sponsors participantes. Es importante tener en cuenta si bien es atractiva y necesaria esta solución, las distintas variables del proyecto como ser estabilidad, capacidad, conocimiento, detección y tiempo son pilares fundamentales para que un proyecto de BI sea exitoso.

Que es BI? ( Descubriendo el Business Intelligence )

Publicado junio 28, 2007 por facu375
Categorías: General

ETL, Data Warehouse, OLAP, data mining, etc….. pero….. que es Business Intelligence???  

Este sencillo documento prentende explicar, o mas bien dar una introduccion, lo mas claramente posible sobre el significado Business Intelligence junto con sus principales componentes.

 Descargar documento de Bussines Intelligence 

Herramientas ETL (…o Mundo ETL)

Publicado junio 24, 2007 por leandrosrur
Categorías: Técnico

 Dentro de los proyectos de Business Intelligence unos de los componentes fundamentales y quizás el más crítico es el proceso de integración de datos en un repositorio que permita almacenar la información ya consolidada para ser explotada por herramientas de análisis.El componente que soporta esta característica es el ETL (Extract, Transorm and Load) que ademán de definir un workflow de tareas a realizar posee funcionalidades de notificaciones, eventos y hasta en algunos casos procesos extras al mundo BI como ser réplica y/o uniformidad de bases de datos.Si bien es común y más práctico utilizar el componente ETL nativo de la base de datos en donde vamos a integrar nuestro proyecto (BD de un DataWarehouse, etc.), existen componentes ETL que proveen las herramientas BI – CPM y hasta empresas que se dedican exclusivamente a desarrollar este tipo de aplicaciones.En los últimos 5 años ha crecido el segmento de herramientas ETL más del 50 % en lo que se refiere venta de licencias de productos y de servicios asociados a nivel mundial marcando claramente que el mercado corporativo necesita cada vez más una herramienta capaz de consolidar en tiempo, forma y calidad los datos dispersos en N fuentes distintas y hasta en algunos casos recibir esta información “casi” en línea respecto a la transacción.Estadíticamente estos son los usos más comunes de los ETL:

  • Data Warehouse: Casi el 80% del uso está relacionado con esta arquitectura. (incluyendo datamarts o bd que dan soporte a un proyecto de BI)
  • Tareas de Bases de datos: También se utilizan para consolidar, migrar y sincronizar bases de datos operativas.
  • CDI: El Customer Data Integration es una función que permite unificar y homogenizar la cartera de clientes de las grandes corporaciones, disueltas y repetidas en diferentes fuentes.
  • Gobierno: Algunos gobiernos consolidan información transaccional de todos los procesos magnéticos, electrónicos en un ODS para controlar en línea ciertas operaciones.

 etl-vp-and-display.gif  

Así como otras aplicaciones, en función a la ventas y a las capacidades de funcionalidades técnicas el mundo ETL hoy en el mercado se segmenta en tres niveles: Herramientas TOP: Mayores funcionalidades y costo promedio de U$S 350.000 por licencia. 

  1. Data Stage (Ascential Software)
  2. Powercenter (Informatica)
  3. SAS ETL Enterprise (SAS)   

Herramientas Nivel Medio: Específicas para proyectos BI, promedio de U$S 20.000 por licencia 

  1. Data Integrator (Business Objects)
  2. Decision Stream (Cognos Inc.)
  3. Advantage DT (Computer Associates)
  4. Transformation Server (Data Mirror)
  5. Co OSystem(AB Initio Software)
  6. DB2 Warehouse Manager (IBM)
  7. Warehouse Builder (Oracle Corp.)
  8. Integration Services (Microsoft) 

Herramientas Nivel Bajo: Herramientas nuevas o muy específicas, promedio de U$S 10.000 por licencia. 

  1. Hummingbird ETL (Hummingbird)
  2. ETL Manager (Iway Software)
  3. Warehouse Builder (Teradata)
  4. Sunopsis ETL (Sunopsis)    

El grupo Forrester (www.forrester.com) ofrece una definición sobre el mercado ETL y analiza porqué es un mercado a seguir de cerca, examina el tamaño de éste durante el periodo 2000-2007 así como su evolución futura, ofrece un ranking comparativo de los principales vendedores de ETL según su cuota de mercado, y hasta brinda una serie de recomendaciones sobre posibles oportunidades de mercado en el sector.Estando sumergidos en el mundo BI no podemos ser ajenos del auge que posee cada solución en particular y en este caso específico todo un mercado exclusivo para los desarrollos ETL…  

Compartir recursos entre PCS a través de Internet

Publicado junio 24, 2007 por lucasforchino
Categorías: Técnico

¿Es posible compartir recursos entre máquinas como si estuviéramos en una red local , siendo que estas se encuentran separadas y su único medio de conexión es Internet ?

 internet

La respuesta a esta pregunta son las redes VPN.  Una red VPN es una red privada que se crea dentro de otra red de carácter público , de esta manera nos permitirá unir varias PCs y  trabajar  como si estuviéramos en nuestra propia red de área local de manera transparente. Este tipo de conexión es de muy fácil instalación y requiere de la configuración de una PC “Server” que será la que acepte las conexiones y de tantas PCs “Clientes” como se quieran,  que serán las que se conecten a la PC a la servidora y/o a su red.Una vez establecida la conexión los datos solo podrán ser leídos por el emisor y el receptor de manera segura ya que los mismos son encriptados.

La idea de este tutorial es centrarse en la instalación básica tratando de abstraernos de toda complejidad. Quedara pendiente en alguno otro post la explicación más avanzada de los protocolos y aspectos de seguridad. Además hay que tener en cuenta que la instalación se realizara sobre un Windows XP por lo que pueden haber variaciones según el Windows en el que se instale.

Descargar Tutorial instalación Red VPN

Optimización de Consultas SQL parte II

Publicado junio 16, 2007 por roquesalde
Categorías: Técnico

Continuando con el post iniciado por mi compañero Lucas Forchino enunciaré algunos tips a tener en cuenta a la hora de generar la sentencia SQL de manera que el motor de BD la ejecute más eficientemente.

Comenzaremos con tres puntos en particular a tener en cuenta y entender porqué mejoran tanto nuestras sentencias SQL.

  • EMPAREJAMIENTOS EN WHERE VS. EMPAREJAMIENTOS EN EL FROM
    • ORDEN DE PROCESAMIENTO DE UNA CONSULTA MULTITABLA
  • COMPOSICIONES EXTERNAS (EN EL WHERE Y EN EL FROM)
  • QUERY PERFORMANCE

COMPOSICIONES EN EL WHERE VS. COMPOSICIONES EN EL FROM

Debido al orden de procesamiento de una consulta multitabla el motor de BD se ve beneficiado si las composiciones son realizadas en el FROM a través de INNER JOIN o alguna de sus variantes (LEFT OUTER JOIN, RIGHT OUTER JOIN). Esto se debe a que el motor al procesar una consulta SQL lo hace en este orden:

  • Realiza el producto cartesiano de las tablas en el FROM
  • Si existe cláusula WHERE aplica la condición de búsqueda
  • Para las filas restantes calcula el valor de cada elemento en la lista del SELECT
  • Si existe un SELECT DISTINCT elimina las filas duplicadas
  • Si existe un ORDER BY ordena el resultado

Al ser el primer paso el producto cartesiano de las tablas que se encuentran listadas en el FROM, dependiendo del número de columnas de cada tabla y la cantidad de registros en cada una de ellas, se genera un resultado que puede llevarle demasiado tiempo al motor de BD, y luego tiene que aplicar la condición existente en la cláusula WHERE para reducir el número de registros resultante del producto cartesiano. Si nosotros realizamos la composición directamente en el FROM evitamos utilizar la cláusula WHERE para dicho propósito haciendo mucho más eficiente la consulta, ya que al momento de realizar el producto cartesiano estamos diciéndole al motor qué registros queremos de ese producto. La sintaxis sería la siguiente:

                SELECT F.numFactura,C. CliNom, F.Monto

                FROM Factura F INNER JOIN Cliente C ON F.codcli=C.codcli

Como vemos no necesitamos la cláusula WHERE para realizar el emparejamiento de las tablas, si sería necesaria la cláusula WHERE  si quisiéramos filtrar los resultados de dicha consulta por fecha o monto por ejemplo. Si nuestra composición entre tablas requiere más de un campo y más de dos tablas la sintaxis sería la siguiente:

SELECT F.numFactura, C.cliNom, F.Monto, V.venNom

FROM Factura F INNER JOIN Cliente C ON F.tipoDoc=C.tipoDoc     AND F.numDoc=C.numDoc INNER JOIN Vendedor ON F.codVen=V.codVen

COMPOSICIONES EXTERNAS

Al realizar composiciones internas o INNER JOIN entre dos tablas, los registros que no se correspondan en ambas tablas son eliminados de la lista de resultados, si yo no deseo que se eliminen los registros de una o ambas tablas aunque queden desemparejados debo realizar composiciones externas. Por ejemplo:

join_00011.jpg

Existen registros en la tabla TMARCAS que no se encuentran en la tabla TCOCHES, si yo realizo una composición interna esas marcas no formarían parte de mi conjunto de resultados. Al realizar una composición externa podría recuperar todo el conjunto de resultados, las composiciones externas dependen del orden en el que se listen las tablas:

SELECT TC.Coche, TM.marca

 FROM TCOCHES TC RIGHT OUTER JOIN TMARCAS TM ON TC.marca=TM.codigo

QUERY PERFORMANCE

Buenas prácticas para mejorar nuestras consultas SQL

  • Realizar las composiciones en el FROM
  • Tener en cuenta el orden en el que enunciamos las tablas en el FROM
  • Uso de funciones de T-SQL
  • Evitar el uso de SELECT *
  • Evitar el SELECT DISTINCT y el ORDER BY

Estas fueron unas breves recomendaciones a tener en cuenta a la hora de generar nuestras sentencias SQL, más adelante seguiremos con este tema, por ejemplo el uso de subconsultas, consultas en el FROM, uso de IF y CASE para condiciones, etc. las cuales son fundamentales a la hora de realizar nuestros procesos ETL.

Generar Proyecto a partir de una BD de Analysis Services 2005

Publicado junio 3, 2007 por roquesalde
Categorías: Técnico

Debido a la necesidad de realizar cambios a la estructura de las dimensiones y cubos migrados desde Analysis Services 2000 y encarando la generación de un proyecto nuevo, me di con la sorpresa de que en Visual Studio existe un proyecto de “Crear un nuevo Proyecto de Analysis Services importando una BD existente….” Con lo que me resuelve mi problema de perder el proyecto cuando migro los cubos de Analysis Services 2000. Obviamente esto no lo vi antes por NO leer todas las opciones que me presenta la herramienta…uno nunca quiere leer el Manual de Uso😛La creación del proyecto es bastante sencilla y al mejor estilo Wizard de Microsoft, donde le damos al “Siguiente” y queda todo armado. Lo primero que debemos hacer es seleccionar el proyecto de importación de BD de Analysis Services 2005.

La creación del proyecto es bastante sencilla y al mejor estilo Wizard de Microsoft, donde le damos al “Siguiente” y queda todo armado. Lo primero que debemos hacer es seleccionar el proyecto de importación de BD de Analysis Services 2005.Automáticamente se despliega un asistente el que básicamente nos pide el nombre del servidor de Analysis Services y luego la BD de la que deseamos generar el proyecto.

Hacemos clic en un par de “siguientes “más y listo, tenemos nuestro proyecto generado y listo para poder hacer los cambios que sean requeridos ahorrándonos el trabajo de generar un proyecto de cero.

Espero que le haya sido útil a más de uno, se aceptan sugerencias, críticas y mejores prácticas, lo importante es compartir el conocimiento.


Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.