sábado, 20 de abril de 2019

Capítulo 6 - Poblando un Data Mart

1. Etapas de un proceso ETL

Una vez definida la base de datos STAR o SNOWFLAKE para el Data Mart, se debe efectuar la población con la información de los sistemas transaccionales. Este proceso puede alcanzar niveles de complejidad muy altos.

Los procesos que pueblan el Data Mart se denominan procesos ETL (Extraction, Transformation and Loading). Estos procesos extraen la data de los sistemas transaccionales, la transforman para asegurar la uniformidad y consistencia de los datos, y cargan dicha información en el Data Mart.

Con frecuencia, los procesos ETL deben modificar el formato y la presentación de los datos leídos desde los sistemas transaccionales. La siguiente figura muestra las operaciones de transformación que pueden realizarse:

2. Opciones para implementar proceso ETL

2.1. Transact - SQL

SELECT DISTINCT Date = (S.ShipDate),
DayOfWeek = DateName("dw", S.ShipDate),
Month = DatePart("mm",S.ShipDate),
Year = DatePArt("yy", S.ShipDate),
Quarter = DatePArt("qq",S.ShipDate),
DayOfYear=DatePart("dy", S.ShipDate),
Holiday = 'N',
Weekend = Case DatePart("dw", ShipDate)
When (1) then 'Y' When (7) then 'Y'
Else 'N'
End,
YearMonth = DateName("month",S.ShipDate) + '-' +
DateName("year", S.ShipDate),
WeekOfYear = DatePart("wk",S.ShipDate)
FROM Sales.SalesOrderHeader S WHERE S.ShipDate IS NOT NULL

2.2. Consultas Distribuidas

Las consultas distribuidas permiten consolidar la información a partir de múltiples servidores de datos. A través de SQL Server 2012, se pueden crear linked servers (servidores enlazados) sobre los cuales se pueden efectuar consultas Transact – SQL. La comunicación con los servidores enlazados se establece mediante proveedores OLEDB; por tanto, cualquier origen de datos accesible por OLEDB puede ser configurado como un servidor enlazado.

El siguiente ejemplo muestra una consulta distribuida Transact – SQL sobre un origen de datos Access (obsérvese la utilización de la función OPENROWSET):

Use Demo 
Insert Into HistoricoPedidos 
Select a.* From OPENROWSET(‘Microsoft.Jet.OLEDB.4.0’, 
‘C:\MSOffice\Access\Samples\Northwind.mdb’; ‘nuevocliente’;’password’, Pedidos)

La siguiente consulta muestra cómo utilizar la sentencia SELECT para acceder un servidor enlazado llamado ContaServer y extraer información de la tabla Proveedores, ubicada en la base de datos Ventas:

Use Demo 
Select NomCliente, Telefono 
INTO ListaFono FROM ContaServer.Ventas.dbo.Proveedores

2.3. El utilitario BCP y la sentencia Bulk Insert

El utilitario Bulk Copy Program (BCP) y la sentencia BULK INSERT permiten cargar datos provenientes de un archivo de texto hacia una base de datos SQL Server 2014.
También puede efectuarse el camino inverso; es decir, leer información de una tabla SQL Server y volcarla en un archivo de texto.

El utilitario BCP debe ejecutarse desde la línea de comandos del sistema operativo. La sentencia BULK INSERT se invoca desde una sesión de SQL Server 2014, que puede ser iniciada desde el SSMS.

2.4. SQL Server Integration Services (SSIS)

Esta herramienta permite crear “paquetes” de transformación de datos. Cada paquete consta de uno o más pasos, que extraen la data del origen, la transforman y la mueven hacia su destino.

Los servicios de transformación se conectan con las fuentes de datos a través de diversos conectores (proveedores .Net, proveedores .Net para OLE DB, y proveedores OLE DB nativos). Esta característica convierte a los paquetes SSIS en una herramienta muy útil para implementar procesos ETL que trabajan con información procedente de diversos orígenes.

3. Introducción a SQL Server Integration Services

SQL Server Integration Services (SSIS) no constituye la evolución de los Data Transformation Services (DTS) de SQL Server 2000. Es una plataforma completamente nueva para implementar procesos ETL de alcance empresarial.

Elementos de SSIS
SSIS está constituido por varios elementos que permiten construir aplicaciones de carga y transformación de datos altamente complejos y flexibles. A continuación, se presentan los elementos básicos de SSIS:

3.1. Connection Managers

Definen conexiones hacia los orígenes de datos. SSIS es capaz de conectarse con cualquier origen de datos accesible a través de proveedores .Net y OLE DB.

3.2. Tasks: Una tarea (task)

Define una unidad de transformación o procesamiento de datos. Las tareas pueden ejecutar diversas acciones: ejecutar sentencias SQL, ejecutar scripts .Net, enviar correos, etc. Un tipo especial de tarea es el Data Flow Task (tarea de flujo de datos) que efectúa transferencias de registros entre varios tipos de orígenes de datos.

3.3. Control flow

Permite definir secuencias lógicas de transferencia de información. Por ejemplo, a través de los flujos de control, se pueden definir bucles que repitan varias veces una transferencia de datos.

3.4. Containers

Las tareas de transformación se pueden agrupar en contenedores (containers). El uso de contenedores hace más sencillo definir la secuencia lógica de ejecución de las tareas.

3.5. Package

Todas las tareas y contenedores se hallan dentro de un package (paquete) de SSIS. Un proyecto SSIS puede contener varios paquetes.

4. Implementación de ETL a través de SQL Server Integration Services

4.1. El asistente de importación y exportación

SQL Server posee un asistente que nos permite importar y exportar datos de manera sencilla y rápida. Este asistente soporta la mayoría de conectores a diversas fuentes y bases de datos.

4.2. SQL Server Data Tools (SSDT) y el diseñador de paquetes

SQL Server Data Tools se considera como la siguiente evolución de Visual Studio basada en herramientas de base de datos que proporciona a los desarrolladores una herramienta única para apoyar las necesidades del desarrollo de bases de datos.

La herramienta para el desarrollo de proyectos de Business Intelligence en Visual Studio 2013 y versiones anteriores la conocíamos como Business Intelligence Development Studio (BIDS), ahora para Visual Studio 2010, 2012 y 2013 estará bajo el nombre de SQL Server Data Tools, sumándose a este nuevo conjunto de herramientas para el desarrollo de base de datos.

4.3. Paquetes: Conexiones y Transformación

MicrosoftSQL Server Integration Services (SSIS) es una plataforma que permite generar soluciones de integración de datos de alto rendimiento, entre las que se incluyen paquetes de extracción, transformación y carga de datos (ETL) para el almacenamiento de datos. SSIS incluye herramientas gráficas y asistentes para generar y depurar paquetes; tareas para realizar funciones de flujo de datos tales como operaciones de FTP; ejecución de instrucciones SQL y envío de mensajes de correo electrónico; orígenes y destinos de datos para extraer y cargar datos; transformaciones para limpiar, agregar, combinar y copiar datos; un servicio de administración, el servicio Integration Services para administrar la ejecución y almacenamiento de paquetes; e interfaces de programación de aplicaciones (API) para programar el modelo de objetos de Integration Services.

4.4. Precedencias

En el ejercicio anterior, se creó una tarea de flujo de datos para transferir datos hacia la tabla ResumenProductos. Es posible que, antes de efectuar la transferencia de los registros, se desee limpiar esta tabla a través de una sentencia DELETE o TRUNCATE. Para ello, SSIS tiene una tarea llamada Execute SQL Task, a través de la cual se puede ejecutar un batch SQL. Bastará con agregar esta tarea al paquete, y escribir en ella la sentencia SQL que elimine la información de la tabla ResumenProductos.

Sin embargo, al ejecutar el paquete, es posible que la tarea de eliminación de los registros se efectúe después de la transferencia de registros. Como resultado, al finalizar el paquete, la tabla ResumenProductos estará vacía. Por tanto, es necesario implementar algún mecanismo de precedencia que garantice que la tarea SQL se efectuará antes de la transferencia de datos.

SSIS permite conectar dos tareas a través de una precedencia. De esta forma, se garantiza que la segunda tarea se efectuará después de la primera. A través de las precedencias, se puede determinar el orden en que se efectuarán las transformaciones y tareas. Los principales tipos de precedencia son los siguientes:

  • On Success: La tarea o transformación destino se efectúa sólo si la transformación origen termina exitosamente.
  • On Failure: La tarea o transformación destino se efectúa sólo si la transformación origen falla.
  • On Completion: La tarea o transformación destino se efectúa al terminar la transformación origen, sin importar si acabó exitosamente o si produjo un error.

Es posible, también, configurar una precedencia para evaluar una expresión, a través de la cual se verifique el valor de una variable. De esta manera, si la expresión devuelve True, la tarea destino se efectuará.

4.5. Script Component (Componente Script)

SSIS incluye un tipo de transformación que permite al desarrollador implementar componentes avanzados, escritos a través de .Net: el Script Component. El código de un Script Component puede aprovechar toda la funcionalidad disponible en el .Net Framework, lo cual permite crear paquetes muy complejos y personalizados. Los lenguajes soportados son Visual Basic .Net y C#.

Se puede usar el componente de script en paquetes para los siguientes fines:

  •  Aplicar varias transformaciones a los datos en lugar de usar varias transformaciones en el flujo de datos. Por ejemplo, un script puede sumar los valores de dos columnas y luego calcular el promedio de la suma.
  • Tener acceso a las reglas de negocios en un ensamblado .NET existente. Por ejemplo, un script puede aplicar una norma empresarial que especifica el intervalo de valores que son válidos en la columna Income.
  • Usar fórmulas personalizadas y funciones, además de las funciones y operadores que proporciona la gramática de la expresión Integration Services. Por ejemplo, validar números de tarjeta de crédito mediante la fórmula.
  • Validar datos de columna y omitir registros que contienen datos no válidos. Por ejemplo, un script puede evaluar si un valor de franqueo es razonable y omitir registros con valores extremadamente altos o bajos.
Existen tres tipos de componentes de script:
  • Source Components: No poseen columnas de input. A través de estos componentes, se pueden escribir orígenes personalizados de datos. De esta manera, es posible desarrollar orígenes sobre formatos de datos no soportados de forma nativa por SSIS.
https://msdn.microsoft.com/en-us/library/ms136060(v=sql.110).aspx
  • Destination Components: No poseen columnas de output. A través de estos componentes, se pueden escribir destinos personalizados de datos para escribir la información hacia formatos no soportados de forma nativa por SSIS.
https://msdn.microsoft.com/en-us/library/ms135939(v=sql.110).aspx
  • Transformation Components: Poseen columnas de input y columnas de output. A través de estos componentes, se puede escribir lógica compleja para efectuar transformaciones personalizadas de datos.

https://msdn.microsoft.com/en-us/library/ms136114(v=sql.110).aspx?cs-save-lang=1&cs-lang=vb#code-snippet-6
Según la forma en que se usa el componente, admite una entrada o salidas, o ambas cosas. El script es invocado por cada fila en la entrada o la salida.

4.6. Containers (Contenedores)

Los contenedores permiten agrupar tareas relacionadas. El uso de contenedores hace más sencillo definir el flujo de las tareas al interior de un paquete. La siguiente figura muestra un ejemplo de la definición de tareas agrupadas en contenedores:
Como puede observarse en la figura, resulta más sencillo representar el flujo de ejecución de las tareas utilizando contenedores. Existen tres tipos de contenedores y son los siguientes:

Sequence Container:
Agrupa tareas relacionadas entre sí. Las tareas en el interior de este tipo de contenedor se ejecutarán en paralelo, a menos que se hayan definido precedencias entre ellas.
Se ejecutan las tareas en paralelo cuando no se contempla precedencia entre ellas.
No es más que un contenedor de otros componentes. Sirve para:

  • Paralelizar procesos (que varias cajitas se ejecuten a la vez)
  • Que un conjunto de procesos solo se ejecuten si se ha producido un evento anterior o bajo determinadas circunstancias.
  • Permitir administrar propiedades en varias tareas de una ubicación estableciendo propiedades en un contenedor de secuencias en lugar de hacerlo en las tareas individuales.
  • Proporciona un ámbito para variables usadas por un grupo de tareas y contenedores relacionados.

For Each Loop:
Este contenedor efectúa una iteración a través de los elementos de una colección. Esta colección puede provenir de diversas fuentes: la lista de archivos dentro de una carpeta del sistema operativo, una colección de ADO .Net, etc. Las tareas dentro del contenedor For Each Loop repetirán su ejecución, por cada elemento encontrado en la colección.

Ejecuta un flujo de control repetidamente mediante un enumerador. Este bucle recorre elementos de una colección, la colección pueden ser desde ficheros en un directorio hasta registros en un dataset.

Ejemplo: Si la carpeta especificada por el enumerador contiene cuatro archivos, el bucle se repetirá cuatro veces y copiará cuatro archivos.

For Loop:
Evalúa una expresión, y repite la ejecución de las tareas hasta que dicha expresión sea verdadera.
Ejecuta un flujo de control repetidamente probando una condición.
Es un bucle al estilo de la programación normal en el que se especifica:

  • Cláusula de inicialización
  • Cláusula de evaluación (detiene el bucle cuando devuelve False, es por tanto una expresión booleana)
  • Cláusula de asignación (sirve para cambiar los valores y que la expresión booleana que se evalúa pueda ir cambiando).

4.7. Variables

A menudo, es necesario que los paquetes SSIS utilicen valores que deben calcularse en tiempo de ejecución. Por ejemplo, una variable en un paquete SSIS puede ser utilizada para almacenar el nombre de un servidor de base de datos. De esta manera, si una base de datos cambia de servidor, no sería necesario actualizar los connection managers o data sources en el proyecto SSIS.

Las propiedades de los objetos de SSIS (data sources, connection managers, tasks, containers, etc.) Pueden ser obtenidas desde variables. El uso de variables resulta particularmente útil cuando se utilizan Script Components o Script Tasks.

Una variable en SSIS tiene siempre el ámbito o alcance del container donde fue declarada. Por ejemplo, si se declara una variable en el paquete SSIS, dicha variable será visible desde cualquier lugar del paquete. Si la variable es declarada en un contenedor For Each Loop, será visible solo en las tareas que se encuentren en dicho contenedor.

4.8. Lookup (Busqueda)

Los Lookups implementan un mecanismo útil para efectuar transformaciones utilizando tablas de equivalencia. La transformación Búsqueda realiza búsquedas mediante la combinación de datos de columnas de entrada con columnas de un conjunto de datos de referencia. La búsqueda se utiliza para tener acceso a información adicional en una tabla relacionada que está basada en valores de columnas comunes.

Ejemplo: La figura superior muestra la utilización de una tabla de búsqueda para convertir los códigos de distritos de Lima en sus respectivos nombres. La transformación Búsqueda intenta realizar una combinación de igualdad entre valores de la entrada de la transformación y valores del conjunto de datos de referencia. Una combinación de igualdad quiere decir que cada fila de la entrada de transformación debe coincidir con, al menos, una fila del conjunto de datos de referencia. Si una combinación de no es posible, la transformación Búsqueda realiza una de las siguientes acciones:


  • Si no hay ninguna entrada correspondiente en el conjunto de datos de referencia, no se produce ninguna combinación. De forma predeterminada, la transformación Búsqueda trata como errores las filas sin entradas coincidentes. Sin embargo, la transformación Búsqueda se puede configurar para redirigir dichas filas a un resultado no coincidente.
  • Si hay varias coincidencias en la tabla de referencia, la transformación Búsqueda devuelve solo la primera coincidencia devuelta por la consulta de búsqueda. Si se encuentran varias coincidencias, la transformación Búsqueda genera un error o advertencia solo cuando la transformación se ha configurado para cargar todo el conjunto de datos de referencia en la memoria caché. En este caso, la transformación Búsqueda genera una advertencia cuando detecta varias coincidencias mientras la transformación llena la memoria caché.

4.9. Data Conversions (Conversión de datos)

Los procesos ETL deben leer información de múltiples tipos de fuentes, y transferirla a diversos destinos. Es muy posible, por tanto, que sea necesario efectuar conversiones de datos.

La transformación Conversión de datos convierte los datos de una columna de entrada a otro tipo de datos diferente y después los copia a una nueva columna de salida. Por ejemplo, un paquete puede extraer los datos de diferentes orígenes y después usar esta transformación para convertir las columnas al tipo de datos necesario para el almacén de datos de destino. Puede aplicar múltiples conversiones a una sola columna de entrada.

Un paquete puede utilizar esta transformación para realizar las siguientes conversiones de tipos de datos:

  • Cambiar el tipo de datos.
  • Establecer la longitud de la columna de los datos de cadena así como la precisión y la escala de los datos numéricos.
  • Especificar una página de códigos.

4.10. Package Configurations

A menudo, para aumentar la flexibilidad de un paquete SSIS, es necesario pasarle ciertos valores de entrada. Por ejemplo, si una base de datos se mueve hacia otro servidor, es deseable que el nombre del servidor pueda ser establecido en tiempo de ejecución sin necesidad de modificar el paquete SSIS.

Los Package Configurations implementan mecanismos para pasarle valores de entrada a un paquete SSIS. Los package configurations permiten definir información de entrada a través de:

  • Un archivo XML: Los valores quedan almacenados en un archivo XML. El paquete SSIS cargará estos valores al iniciarse su ejecución.
  • Variables de entorno: Los valores de entrada del paquete se obtienen de las variables de entorno de Windows.
  • Entrada de registro: Los valores de entrada del paquete se obtienen desde el registro de Windows.
  • Parent package variable: Los valores de entrada del paquete se encuentran definidos como variables en un paquete de nivel superior que contiene al paquete actual.
  • SQL Server: Los valores de entrada del paquete se encuentran almacenados en una tabla de SQL Server.

4.11. Derived Column (Columna derivada)

La transformación Derived Column se utiliza para generar nuevas columnas, con base en las columnas de input ya existentes. Esto se hace a través de expresiones, es decir, fórmulas que se aplican a las columnas de input para generar un nuevo valor de output. El lenguaje de expresiones de SSIS posee un vasto conjunto de funciones y operadores que permiten efectuar transformaciones avanzadas en la información de una fila.

Puede utilizar esta transformación para realizar las siguientes tareas:

  • Concatenar datos de distintas columnas en una columna derivada. Por ejemplo, puede combinar valores de las columnas FirstName y LastName en una sola columna derivada, denominada FullName, mediante la expresión FirstName + " " + LastName.
  • Extraer caracteres de datos de cadena mediante funciones como SUBSTRING y después almacenar el resultado en una columna derivada. Por ejemplo, puede extraer de la columna FirstName la inicial del nombre de una persona mediante la expresión SUBSTRING(FirstName,1,1).
  • Aplicar funciones matemáticas a datos numéricos y almacenar el resultado en una columna derivada. Por ejemplo, puede cambiar la longitud y la precisión de una columna numérica, SalesTax, a un número con dos cifras decimales mediante la expresión ROUND(SalesTax, 2).
  • Crear expresiones que comparen columnas de entrada y variables. Por ejemplo, puede comparar la variable Versión con los datos de la columna ProductVersion y, en función del resultado de la comparación, usar el valor de Version o ProductVersion mediante la expresión ProductVersion == @Version? ProductVersion : @Version.
  • Extraer partes de un valor datetime. Por ejemplo, puede utilizar las funciones GETDATE y DATEPART para extraer el año actual mediante la expresión DATEPART("year",GETDATE()).
  • Convierta las cadenas de fecha a un formato específico mediante una expresión.

4.12. Fuzzy Lookup (Búsqueda aproximada)

Al igual que el Lookup, la transformación Fuzzy Lookup compara los datos de entrada con una tabla de equivalencias. Sin embargo, en Fuzzy Lookup no es necesario que las equivalencias sean exactas; basta con que exista cierta similitud para que Integration Services decida que existe una correspondencia.

La transformación Fuzzy Lookup crea columnas adicionales que almacenan indicadores numéricos de semejanza. Esta característica permite que el desarrollador del paquete establezca políticas de tipo “si la semejanza es mayor que 90%, la decisión tomada por Integration Services es correcta. Para las filas restantes, el administrador tomará la decisión final”

Las columnas de salida de transformación incluyen las columnas de entrada marcadas como columnas de paso, las columnas seleccionadas en la tabla de búsqueda y las siguientes columnas adicionales:

  • _Similarity, una columna que describe la similitud entre los valores de las columnas de entrada y de referencia.
    • La puntuación 0.0 significa que no se encontraron coincidencias
    • Mientras que 1.0 significa que se encontró una coincidencia exacta.
    • Una puntuación entre 0.0 y 1.0 indica un grado de similitud, en el que un valor cercano a 1.0 indica mayor similitud.
  • _Confidence, una columna que describe la calidad de la coincidencia. La transformación utiliza la conexión a la base de datos de SQL Server para crear las tablas temporales que utiliza el algoritmo de coincidencia aproximada.

4.13. Agregate y SORT (Agregado y Ordenar)

La transformación Agregado aplica funciones de agregado, como Average, a los valores de columnas y copia los resultados en la salida de transformación. Además de las funciones de agregado, la transformación proporciona la cláusula GROUP BY, que se puede usar para especificar los grupos en los que se debe realizar el agregado.

La transformación Agregado controla los valores NULL de la misma forma que el motor de base de datos relacional de SQL Server.Este comportamiento se define en el estándar SQL-92.Se aplican las reglas siguientes:

  • En una cláusula GROUP BY, los NULLS se tratan como cualquier otro valor de columna.Si la columna de agrupamiento contiene varios valores NULL, éstos se colocan en un grupo individual.
  • En las funciones COUNT (nombre de columna) y COUNT (nombre de columna DISTINCT), los NULLS se omiten y el resultado excluye las filas que contienen valores NULL en la columna con nombre.
  • En la función COUNT (*), se cuentan todas las filas, incluso las filas con valores NULL.


La transformación Ordenar ordena los datos de entrada en sentido ascendente o descendente, y copia los datos ordenados a la salida detransformación. Puede aplicar varias ordenaciones a una entrada; cada ordenación se identifica mediante un numeral que determina el criterio de ordenación.

La columna con el número más bajo se ordenará primero, la columna con el segundo número más bajo se ordena a continuación, etc.

Existe circunstancia en las cuales se debe efectuar el ordenamiento durante el proceso de transferencia de datos y no en la consulta origen: Y son las siguientes:

  • Cuando el origen de datos no soporta operaciones de agregación y ordenamiento. Por ejemplo: archivos de texto, Excel.
  • Si se requiere agregar y ordenar datos que provienen de operaciones previas sobre múltiples orígenes de datos.
  • El uso de operadores ORDER BY, GROUP BY, etc., hacen que la consulta sobre el origen de datos sea muy lenta.

4.14. Merge Join (Combinación de Mezcla)

La transformación Merge Join permite combinar dos filas provenientes de orígenes de datos distintos en una sola fila con base en una o más columnas que tengan valores comunes.

También proporciona una salida que se genera combinando dos conjuntos de datos ordenados mediante una combinación FULL, LEFT o INNER.

La implementación de una transformación Merge Join tiene las siguientes condiciones:

  • Las columnas que cumplen el papel de Join Keys deben tener el mismo tipo de datos.
  • Las filas que ingresan a la transformación Merge Join deben estar ordenadas con base en los valores de las columnas que cumplen el papel de Join Keys.

Por ejemplo: Pueden tenerse las siguientes filas en un archivo de texto (contiene ID Cliente y las ventas) y una tabla de BD que contiene el ID Cliente y el nombre del cliente. Se requiere unir la información en una sola tabla.

4.15. Conditional Split (División Condicional)

La transformación Conditional Split permite bifurcar un flujo de datos con base en condiciones lógicas. Por ejemplo, es posible que se requiera escribir las filas provenientes de un único flujo de datos en dos o más destinos distintos dependiendo de los valores de ciertas columnas en cada fila.

En una transformación Conditional Split, el desarrollador puede definir varios outputs cada uno de los cuales tiene asignada una cierta condición lógica. Por ejemplo, al leer un archivo de ventas por país, se puede hacer que las filas cuyo ID de país sea “Perú” se escriban en una tabla de SQL Server, y las filas correspondientes con otros países se escriban en una hoja de Excel.

La implementación de la transformación División condicional es similar a una estructura de decisión CASE de un lenguaje de programación. Evalúa expresiones y, en función de los resultados, dirige la fila de datos a la salida especificada. Esta transformación también proporciona una salida predeterminada, de modo que si una fila no coincide con ninguna expresión, se dirige a la salida predeterminada.

4.16. Distribución (deployment) del proyecto SSIS

Una vez finalizado el desarrollo de los paquetes SSIS, estos deben ser llevados a un servidor que esté corriendo los servicios de SQL Server Integration Services. A este proceso se le denomina distribución (deployment).

Durante el deployment, la definición del paquete SSIS se almacena en el servidor en alguna de las siguientes ubicaciones:

  • File system: El paquete se graba en un archivo ubicado en una carpeta del sistema de archivos del servidor.
  • SQL Server: La definición del paquete se almacena en la base de datos msdb que es una base de datos de sistema de SQL Server 2014.

Una vez que los paquetes han sido distribuidos, pueden ser ejecutados por el administrador en cualquier momento, desde la consola del SQL Server Management Studio. El administrador puede también programar la ejecución automática de los paquetes, a través de la creación de jobs (trabajos) en el agente de SQL Server 2014.

La distribución de los paquetes SSIS puede efectuarse en una de las siguientes formas:

  • Distribución manual: Consiste en copiar en el servidor el archivo del paquete (extensión dtsx) y cualquier otro archivo relacionado, y cargarlo manualmente en los servicios de SQL Server Integration Services. A través de este mecanismo, solo puede distribuirse un paquete a la vez.
  • Deployment utility: SSIS provee una herramienta para facilitar la distribución de los paquetes que se encuentran un proyecto SSIS. El deployment utility es un asistente que produce un archivo que puede ejecutarse en el servidor para efectuar la distribución con solo un clic.

4.17. Automatización de la ejecución de los paquetes

Una vez desplegados, los paquetes SSIS pueden ser ejecutados bajo demanda. Sin embargo, en la mayoría de los casos, los paquetes deben ejecutarse de acuerdo con una programación periódica sin intervención de ningún usuario.
La automatización de la ejecución de paquetes se efectúa a través del servicio SQL Server Agent. Este servicio es responsable por todas las tareas automatizadas que deben correr en el servidor de datos. Para programar la ejecución periódica de un paquete de Integration Services, se deben realizar los siguientes pasos:

  • Crear un trabajo (job) en el Agente de SQL Server 2008.
  • Agregar al trabajo un paso (step) de tipo Integration Services Package.
  • Seleccionar el paquete que se desea ejecutar y los parámetros de ejecución del paquete (orígenes de datos, archivos de configuración, etc.).
  • Agregar al trabajo una nueva programación (schedule). Debe tenerse en cuenta que, para que los trabajos se ejecuten periódicamente, es necesario que el servicio SQL Server Agent esté iniciado.

4.18. Data Profiling Task (Tarea de Perfiles de datos)

Los problemas de calidad de datos cuestan a las empresas estadounidenses más de $ 600 mil millones por año. ¿Por qué un costo tan elevado? Si los datos no tienen calidad, sus KPIs y predicciones de minería de datos serán incorrectas y podría llevar malas decisiones de negocios.

Por tanto, la tarea de generación de perfiles de datos calcula diversosbperfiles que le ayudan a familiarizarse con un origen de datos y a identificarben los datos problemas que deban corregirse.

Puede utilizar la tarea de generación de perfiles de datos dentro de un paquete de Integration Services para generar perfiles de datos que estánvalmacenados en SQL Server e identificar posibles problemas de calidad de los datos.

La tarea de generación de perfiles de datos puede calcular ocho perfiles de datos diferentes. Cinco de estos perfiles analizan columnas individuales y los otros tres analizan varias columnas o relaciones entre las columnas y las tablas.

Los cinco perfiles siguientes analizan columnas individuales:


Los tres perfiles siguientes analizan varias columnas o relaciones entre columnas y tablas:


Después de utilizar la tarea para calcular los perfiles de datos y guardarlos en un archivo, puede utilizar el Visor de perfil de datos independiente para revisar el perfil generado. El Visor de perfil de datos también admite la obtención de detalles para ayudarle a entender los problemas de calidad de los datos que se identifican en el perfil generado.


Videos Complementarios

Carga Datos nuevos ETL
http://www.guillesql.es/Articulos/SQLServerIntegrationServices_SSIS_FAQ.aspx

Getting Started
https://www.youtube.com/watch?v=3cPq9FXk-RA - SQL Server Integration Services (SSIS) Part 1 - Getting Started

Performing Basic Tasks
https://www.youtube.com/watch?v=tHbjhSEiyOs - SQL Server Integration Services (SSIS) Part 2 - Performing Basic Tasks

Basic Transformations
https://www.youtube.com/watch?v=VZrlXwM0_Pg - SQL Server Integration Services (SSIS) Part 3 - Basic Transformations

Variables
https://www.youtube.com/watch?v=S9c8kB7j7ao - SQL Server Integration Services (SSIS) Part 4 - Variables

Data Types and Data Conversion
https://www.youtube.com/watch?v=8I9IfZUK2dk - SQL Server Integration Services (SSIS) Part 5 - Data Types and Data Conversion

Expressions
https://www.youtube.com/watch?v=a0fCg7jvESM - SQL Server Integration Services (SSIS) Part 6 - Expressions

Conditional split and derived column transforms
https://www.youtube.com/watch?v=QSuI-qV7yWY - SQL Server Integration Services (SSIS) Part 7 - Conditional split and derived column transforms

Debugging
https://www.youtube.com/watch?v=OsqQT6eHs00 - SQL Server Integration Services (SSIS) Part 8 - Debugging

Lookup Transforms
https://www.youtube.com/watch?v=GazT32eqdsk - SQL Server Integration Services (SSIS) Part 9 - Lookup Transforms

Sequence Containers and FOR Loops
https://www.youtube.com/watch?v=lL63ZSRp_Ck - SQL Server Integration Services (SSIS) Part 10 - Sequence Containers and FOR Loops

Looping Over Files
https://www.youtube.com/watch?v=h6x0oI9gSh8 - SQL Server Integration Services (SSIS) Part 11 - Looping Over Files

Other Foreach Loops
https://www.youtube.com/watch?v=HIp06xn8puw - SQL Server Integration Services (SSIS) Part 12 - Other Foreach Loops

Script Tasks using C#
https://www.youtube.com/watch?v=iPmXgiUHUPQ - SQL Server Integration Services (SSIS) Part 13 - Script Tasks using C#

Script Tasks using Visual Basic
https://www.youtube.com/watch?v=VWLlIXjUtgY - SQL Server Integration Services (SSIS) Part 14 - Script Tasks using Visual Basic

Script Components
https://www.youtube.com/watch?v=nIPZvzivo_M - SQL Server Integration Services (SSIS) Part 15 - Script Components

Expression and Other Constraints
https://www.youtube.com/watch?v=oqiG4oNyvHk - SQL Server Integration Services (SSIS) Part 16 - Expression and Other Constraints

Event-handling and logging
https://www.youtube.com/watch?v=xFx4adO92gg - SQL Server Integration Services (SSIS) Part 17 - Event-handling and logging

Error handling
https://www.youtube.com/watch?v=LzFxNFPrPyQ - SQL Server Integration Services (SSIS) Part 18 - Error handling

Parameters and deployment
https://www.youtube.com/watch?v=idFCAFAgOO0 - SQL Server Integration Services (SSIS) Part 19 - Parameters and deployment

Lecturas Complementarias

1. SQL Server Integration Services
https://msdn.microsoft.com/en-us/library/ms141026(v=sql.120)

2. What's New (Integration Services)
https://technet.microsoft.com/en-us/library/bb522534(v=sql.120).aspx

3. Developer's Guide (Integration Services)






Capítulo 9 - Medidas

1. Cubos Un cubo contiene un subconjunto de la información de un Data Mart o Data Warehouse. Su información se almacena en una estr...