Escolar Documentos
Profissional Documentos
Cultura Documentos
Captulo 3
Poblar el Data Mart
Objetivos:
Temas:
1. Poblar el data warehouse
2. Herramientas para implementar procesos ETL
3. Crear proyectos SSIS a travs del Business Intelligence Development Studio.
a. Crear paquetes
b. Crear tareas de flujo de datos
c. Crear componentes de script .Net.
d. Definir conversiones de datos, lookups y columnas derivadas
e. Agregar archivos de configuracin a los proyectos SSIS
f. Efectuar la distribucin de los paquetes SSIS
Data Warehouse & Olap 2
Tabla de contenido
1. Herramientas para implementar procesos ETL ................................................................................................... 4
1.1 Transact-SQL ............................................................................................................................................... 4
1.2 Consultas Distribuidas ................................................................................................................................ 5
1.3 El utilitario BCP y la sentencia BULK INSERT ............................................................................................... 6
1.4 SQL Server Integration Services (SSIS) ........................................................................................................ 7
2. LA ARQUITECTURA DE SQL SERVER INTEGRATION SERVICES (SSIS) .................................................................. 7
Elementos de SSIS ..................................................................................................................................................... 7
Ejercicio 1: Crear conexiones y transformaciones a travs de un proyecto SSIS. ....................................... 8
2.1 Definir precedencias ................................................................................................................................. 26
Ejercicio 2: Definir precedencias. .............................................................................................................. 27
2.2 Escribir cdigo .Net para personalizar las transformaciones: el Script Component ................................. 30
Ejercicio 3: Escribir una transformacin personalizada a travs del Script Component. .......................... 30
2.3 Containers (contenedores) ....................................................................................................................... 39
2.4 Definir variables en SSIS............................................................................................................................ 40
Ejercicio 4: Definir variables en el paquete. Uso del contenedor For Each Loop. ..................................... 40
2.5 Utilizar Lookups ........................................................................................................................................ 47
2.6 Data Transformations ............................................................................................................................... 48
Ejercicio 5: Utilizar las transformaciones Data Conversion y Lookup. ...................................................... 48
2.7 Package configurations ............................................................................................................................. 57
Ejercicio 6: Crear package configurations. ................................................................................................ 57
2.8 La transformacin Derived Column .......................................................................................................... 63
Ejercicio 7: Utilizar la transformacin Derived Column. ........................................................................... 63
2.9 Distribucin (deployment) del proyecto SSIS ........................................................................................... 67
Ejercicio 8: Distribuir el paquete con el Deployment Utility. .................................................................... 67
Data Warehouse & Olap 3
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 informacin en el Data Mart.
Con frecuencia, los procesos ETL deben modificar el formato y la presentacin de los datos ledos desde
los sistemas transaccionales. La siguiente figura muestra las operaciones de transformacin que pueden
realizarse.
Data Warehouse & Olap 4
SQL Server 2000 ofrece mltiples herramientas para la implementacin de los procesos ETL:
Transact SQL
Consultas distribuidas
El utilitario BCP y la instruccin BULK INSERT
Data Transformation Services (DTS)
La eleccin de la herramienta especfica a utilizar depende del formato de los datos en los sistemas
transaccionales. Por ejemplo, la informacin proveniente de un sistema transaccional que funciona con
SQL Server 2000 puede ser transferida directamente a travs de procedimientos almacenados de
Transact SQL. En cambio, la informacin proveniente de un sistema en Clipper (tablas dbf) deber ser
transferida a travs de paquetes DTS.
1.1 Transact-SQL
Puede emplearse la sentencia SELECT para poblar el Data Mart a partir de sistemas transaccionales
cuya informacin est almacenada en bases de datos SQL Server 2000.
La figura muestra la utilizacin de una sentencia SELECT que concatena las columnas Paterno y Nombre
de la tabla Cliente, y almacena el resultado en la tabla Resumen_Cliente:
Las consultas distribuidas permiten consolidar la informacin a partir de mltiples servidores de datos. A
travs de SQL Server 2000, se pueden crear linked servers (servidores enlazados), sobre los cuales se
pueden efectuar consultas Transact SQL. La comunicacin con los servidores enlazados se establece a
travs de 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
(obsrvese la utilizacin de la funcin 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 cmo utilizar la sentencia SELECT para acceder un servidor enlazado
llamado ContaServer y extraer informacin de la tabla Proveedores, ubicada en la base de datos Ventas:
Use Demo
Select NomCliente, Telefono
INTO ListaFono
FROM ContaServer.Ventas.dbo.Proveedores
Data Warehouse & Olap 6
El utilitario BCP y la sentencia BULK INSERT permiten cargar datos provenientes de un archivo de texto
hacia una base de datos SQL Server 2000.
Tambin puede efectuarse el camino inverso; es decir, leer informacin de una tabla SQL Server y
volcarla en un archivo de texto.
El utilitario BCP debe ejecutarse desde la lnea de comandos del sistema operativo. La sentencia BULK
INSERT se invoca desde una sesin de SQL Server 2000, que puede ser iniciada desde el Query
Analizer. La siguiente figura muestra ejemplos de utilizacin de estas herramientas de carga:
Data Warehouse & Olap 7
Permite crear paquetes de transformacin de datos. Cada paquete consta de uno o ms pasos, que
extraen la data del origen, la transforman y la mueven hacia su destino.
Los servicios de transformacin se conectan con las fuentes de datos a travs de diversos conectores
(proveedores .Net, proveedores .Net para OLE DB, y proveedores OLE DB nativos). Esta caracterstica
convierte a los paquetes SSIS en una herramienta muy til para implementar procesos ETL que trabajan
con informacin procedente de diversos orgenes.
Sql Server Integration Services (SSIS) no constituye la evolucin 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 transformacin
de datos altamente complejas y flexibles. A continuacin se presentan los elementos bsicos de SSIS:
La tarea Data Flow Task permite efectuar transferencias y transformaciones de datos. SSIS implementa
diversos tipos de transformaciones: conversiones de tipos de datos, uso de tablas de lookup,
agregaciones, etc. A travs de estas transformaciones, la informacin puede ser trabajada antes de llegar
a su destino. Cada transformacin posee columnas de entrada (inputs) y columnas de salida (outputs).
Data Warehouse & Olap 8
En el siguiente ejercicio, se crear un proyecto SSIS que transferir las filas de un join entre las tablas
Product y ProductSubCategory en la base de datos AdventureWorks, hacia una tabla llamada
ResumenProductos, ubicada en la base de datos AWorks_MartDemo Para esto, se utilizar la
transformacin Data Flow Task.
1. En el men Inicio, seleccione All Programs > Microsoft SQL Server 2005 > SQL Server
Business Intelligence Development Studio. Se abrir el entorno de desarrollo de .Net.
2. En el men File, seleccione New y luego seleccione Project. Aparecern los distintos tipos de
proyecto que se pueden crear.
Seleccione la plantilla Integration Services Project. En la casilla Location, seleccione la ruta donde
desea crear el proyecto. En la casilla Name, escriba AdventureWorks_SSIS_Demo1. La ventana debe
quedar como se muestra en la figura anterior. Presione el botn OK para crear el proyecto.
5. Aparecer la pantalla de bienvenida del asistente para la definicin de orgenes de datos (Data
Source Wizard). Presione el botn Next. Aparecer la ventana de definicin de conexiones con
datos.
Data Warehouse & Olap 10
6. Para definir una nueva conexin con datos, presione el botn New. Aparecer la ventana del
Connection Manager. Seleccione el conector .Net Providers\SqlClient Data Provider, el
servidor local y la base de datos AdventureWorks, como se muestra en la siguiente figura:
7. Presione el botn OK. A continuacin, presione el botn Next. Aparecer la ventana final del
asistente.
Data Warehouse & Olap 11
8. Presione el botn Finish para finalizar el asistente. A continuacin, se definir un Data Source
View, que proporciona una vista desconectada de la estructura de las tablas en el origen de datos.
Para esto, seleccione el nodo Data Source Views en el Solution Explorer, haga un clic derecho y
seleccione New Data Source View:
9. Aparecer la ventana inicial del asistente de definicin de vistas de datos (Data Source View
Wizard). Presione el botn Next. La ventana siguiente mostrar los orgenes de datos definidos en
el proyecto. Seleccione el data source Adventure Works.
10. Presione el botn Next. La siguiente ventana permite seleccionar las tablas del origen de datos
cuya estructura se desea visualizar. Seleccione las tablas Production.Product y
Production.ProductSubCategory. La ventana debe quedar como se muestra en la siguiente figura:
12. Presione el botn Finish para finalizar el asistente. Observe que el entorno de diseo muestra la
estructura de las tablas seleccionadas en el Data Source View.
13. La base de datos AdventureWorks ser utilizada como origen de datos. En este ejercicio, el destino
de datos ser una nueva base de datos llamada AWorks_MartDemo. Esta nueva base de datos
ser creada a travs del Server Explorer del entorno de desarrollo de Integration Services. En el
men View, seleccione la opcin Server Explorer.
Data Warehouse & Olap 13
14. La ventana del Server Explorer se abrir en el lado izquierdo del entorno de desarrollo. Seleccione
el nodo Data Connections, haga un clic derecho y seleccione Create New SQL Server Database.
19. El siguiente paso es la definicin del paquete de Integration Services para implementar la lgica de
la transformacin de datos. Los paquetes de Integration Services se ubican en el nodo SSIS
Packages del Solution Explorer. Obsrvese que en el proyecto se ha agregado automticamente
un paquete llamado Package.dtsx. Haga un clic derecho sobre el paquete y seleccione la opcin
Delete:
Data Warehouse & Olap 15
20. Pulse el botn OK en la ventana de confirmacin para confirmar la eliminacin del paquete.
21. A continuacin se crear el primer paquete SSIS. Para esto, seleccione el nodo SSIS Packages en
el Solution Explorer, haga un clic derecho y seleccione la opcin New SSIS Package:
22. Obsrvese que se ha creado un nuevo paquete llamado Package1.dtsx. Para renombrarlo, haga
un clic derecho sobre el paquete en el Solution Explorer y seleccione la opcin Rename:
Data Warehouse & Olap 16
Pulse el botn Yes. Esto cambiar tanto el nombre fsico del archivo del paquete, como el
nombre del paquete en el entorno de desarrollo.
24. El siguiente paso es definir las tareas de transformacin. En Integration Services, estas tareas
estn representadas en los Tasks, cada uno de los cuales puede efectuar una labor especfica de
procesamiento o transformacin de datos. Estas tareas pueden visualizarse a travs de la caja de
herramientas (Toolbox) del entorno de desarrollo. Para visualizar el Toolbox, expanda el men
View, y seleccione la opcin Toolbox:
Data Warehouse & Olap 17
25. Se abrir el Toolbox de SQL Server Integration Services. La siguiente figura muestra una vista
parcial de la caja de herramientas:
Data Warehouse & Olap 18
26. En el toolbox, seleccione la tarea Data Flow Task y arrstrela hacia la ventana de diseo del
paquete (en la parte central del entorno de desarrollo). Se crear una tarea llamada Data Flow
Task. El entorno de desarrollo quedar de la siguiente manera:
27. A continuacin, se renombrar la tarea de transformacin. Para esto, seleccione la tarea Data
Flow Task en el diseador del paquete, y cambie su propiedad Name a Copiar productos en la
ventana de propiedades (para abrir la ventana de propiedades, expanda el men View y
seleccione la opcin Properties Window. La ventana de propiedades se abrir en la parte inferior
derecha, debajo del Solution Explorer).
Data Warehouse & Olap 19
28. Cada tarea de flujo de datos consiste en varias transferencias de informacin entre orgenes de
datos. A continuacin, se definirn los flujos de informacin al interior de la tarea Copiar
productos. Para esto, haga un doble clic sobre la tarea Copiar productos. Se abrir en el entorno
de desarrollo la pestaa Data Flow.
29. Cada paquete posee un conjunto de administradores de conexin (Connection Managers). Los
connection managers definen los posibles orgenes y destinos de datos al interior del paquete, y
pueden crearse a partir de los data sources especificados en el proyecto. En la pestaa
Connection Managers, haga un clic derecho en cualquier parte de esta ventana, y seleccione la
opcin New connection from data source:
Data Warehouse & Olap 20
30. Aparecer una ventana que muestra los data sources disponibles:
31. Seleccione el data source Adventure Works y pulse el botn OK. Repita los pasos (30) y (31) para
crear otro connection manager que apunte hacia el data source AWorks MartDemo.
32. En el Toolbox, expanda la pestaa Data Flow Sources, seleccione el tem Data Reader Source y
arrstrelo sobre la ventana de diseo. Se crear un nuevo origen de registros llamado Data
Reader Source. Seleccinelo y, en la ventana de propiedades, cambie su propiedad Name a
Consulta Adventure Works. La pantalla debe quedar de la siguiente manera:
Data Warehouse & Olap 21
33. Haga doble clic sobre el origen Consulta Adventure Works. Aparecer el editor de propiedades
del Data Reader Source. Seleccione la pestaa Connection Managers. En la columna
Connection Manager, seleccione el data source Adventure Works.
34. Seleccione la pestaa Component Properties. En el grupo Custom Properties, seleccione la fila
35. Aparecer una ventana que permite escribir una sentencia SQL para obtener un conjunto de filas.
En dicha ventana, escriba la siguiente sentencia:
36. Pulse el botn OK. Seleccione la pestaa Column Mappings, y observe que las columnas de la
consulta han sido detectadas:
37. Pulse el botn OK. Con estos pasos, se ha completado la creacin de un origen de registros,
basado en una consulta SQL.
38. En el Toolbox, expanda la pestaa Data Flow Destinations, seleccione el tem OLE DB
Destination y arrstrelo sobre la ventana de diseo. Se crear un nuevo destino de registros
llamado OLE DB Destination. Seleccinelo y, en la ventana de propiedades, cambie su propiedad
Name a Destino AWorks MartDemo. La pantalla debe quedar de la siguiente manera:
Data Warehouse & Olap 23
40. Seleccione la flecha verde que sale de Consulta Adventure Works, y arrstrela con el mouse
sobre el destino Destino AWorks MartDemo. Esta accin define el flujo de los datos entre el
origen y el destino de registros. Al finalizar, la ventana debe mostrarse de la siguiente forma:
41. Haga doble clic sobre el destino Destino AWorks MartDemo. Se abrir el editor de propiedades
del destino de registros. La ventana debe quedar de la siguiente manera:
Data Warehouse & Olap 24
42. A continuacin se crear una tabla en el destino AWorks MartDemo. En la propiedad Name of the
table or the view, pulse el botn New. Se abrir una ventana que permite escribir una sentencia
CREATE TABLE. Modifique la sentencia de la siguiente manera:
Data Warehouse & Olap 25
43. Pulse el botn OK para crear la tabla. A continuacin, seleccione la opcin Mappings en el lado
izquierdo del editor de propiedades del destino de registros. Esto generar automticamente los
mapeos de columnas entre el origen (la consulta SQL escrita en el paso 35) y el destino de
registros (la tabla ResumenProductos):
44. Pulse el botn OK para aceptar los cambios y finalizar la configuracin del destino de registros.
45. Para depurar el paquete, pulse el botn en la barra de herramientas del entorno de desarrollo,
o seleccione la opcin Start Debugging en el men Debug. Al finalizar la ejecucin, el entorno de
desarrollo mostrar la transferencia de datos en la siguiente forma:
Data Warehouse & Olap 26
46. Para finalizar la depuracin, presione el botn en la barra de herramientas del entorno de
desarrollo, o seleccione la opcin Stop Debugging en el men Debug.
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 travs de una sentencia DELETE o TRUNCATE. SSIS tiene una tarea llamada Execute SQL
Task, a travs 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 informacin de la tabla ResumenProductos.
Sin embargo, al ejecutar el paquete, es posible que la tarea de eliminacin de los registros se efecte
despus de la transferencia de registros. Como resultado, al finalizar el paquete, la tabla
ResumenProductos estar vaca. Por tanto, es necesario implementar algn mecanismo de precedencia
que garantice que la tarea SQL se efectuar antes de la transferencia de datos.
SSIS permite conectar dos tareas a travs de una precedencia. De esta forma, se garantiza que la
segunda tarea se efectuar despus de la primera. A travs de las precedencias, se puede determinar
el orden en que se efectuarn las transformaciones y tareas. Los principales tipos de precedencia son:
On Success:
La tarea o transformacin destino se efecta slo si la transformacin origen termina
exitosamente.
On Failure:
La tarea o transformacin destino se efecta slo si la transformacin origen falla.
On Completion:
La tarea o transformacin destino se efecta al terminar la transformacin origen, sin
importar si acab exitosamente o si produjo un error.
Es posible, tambin, configurar una precedencia para evaluar una expresin, a travs de la cual se
verifique el valor de una variable. De esta manera, si la expresin devuelve True, la tarea destino se
efectuar.
Data Warehouse & Olap 27
5. Pulse el botn OK para confirmar la sentencia escrita. Pulse nuevamente el botn OK para aceptar
los cambios en la tarea.
6. En la ventana de diseo, seleccione la tarea Borrar datos. Seleccione la flecha verde que sale de
esta tarea, y arrstrela sobre la tarea Copiar productos. Esto define una precedencia en el flujo
de control del paquete, que establece que la tarea Borrar datos debe ejecutarse antes de la tarea
Copiar productos:
Data Warehouse & Olap 29
2.2 Escribir cdigo .Net para personalizar las transformaciones: el Script Component
En el siguiente ejercicio, se extraer informacin de un archivo de texto, cuya ltima columna contiene
cdigos de regiones: 1, 2, 3 y 4. Dichos cdigos sern transformados por un script component, para ser
grabados en el destino con sus equivalencias en ingls: Eastern, Western, Northern y Southern.
1. Abra el paquete CopiaProductos.dtsx. Agregue una nueva tarea de tipo Data Flow Task, y asgnele
el nombre Copiar territorios. A continuacin, haga un doble clic sobre la tarea Copiar territorios
para definir el detalle del flujo de datos.
2. En la pestaa Connection managers, agregue una nueva conexin de tipo Flat File. Para esto,
haga un doble clic sobre cualquier lugar de la ventana Connection Managers, y seleccione la
opcin New Flat File Connection:
3. Se abrir la ventana Flat File Connection Manager Editor. Establezca los siguientes valores para
las opciones de esta ventana:
Data Warehouse & Olap 31
Opcin Valor
Connection manager name Archivo de territorios
Descripcin Informacin de territorios en formato de texto plano
File name Utilice el botn Browse para ubicar el archivo Territorios.txt
Format Delimited
Text qualifier " (comillas dobles)
Column names in the first data row Desmarcado
4. En el panel izquierdo de la ventana Flat File Connection Manager Editor, seleccione la opcin
Preview para observar una vista preliminar de la informacin. Observe que se han asignado
automticamente los nombres Column 0, Column 1 y Column 2 a las columnas del archivo de
texto.
Data Warehouse & Olap 32
7. Haga doble clic sobre Archivo de territorios. Se abrir la ventana Flat File Source Editor. En la
propiedad Flat file connection manager, seleccione Archivo de territorios.
8. En el panel izquierdo de la ventana Flat File Source Editor, seleccione la opcin Columns.
Observe que cada columna del archivo de texto ha sido reconocida.
Data Warehouse & Olap 33
9. Pulse el botn OK para finalizar la configuracin del origen del Flat File Source.
10. En el ToolBox, expanda la pestaa Data Flow Transformations. Seleccione el tem Script
Component y arrstrelo sobre la ventana de diseo. Se abrir una ventana que permite determinar
el tipo de componente que se desea crear. Elija la opcin Transformation:
12. A continuacin, haga doble clic sobre Transformacin de regiones para abrir su ventana de
propiedades.
13. En la opcin Input Columns del lado izquierdo de la ventana de propiedades, marque los
checkboxes que sealan las columnas Column 0, Column 1 y Column 2 (estas columnas
representan los inputs provenientes del origen Territorios).
14. Seleccione la opcin Inputs and Outputs del lado izquierdo de la ventana de propiedades. Expanda
Output 0. Expanda Output Columns. Presione el botn Add Column para agregar un nuevo
Output a la transformacin. Establezca las siguientes propiedades para el output:
Data Warehouse & Olap 35
Opcin Valor
Name Region
Data Type Seleccione STRING [DT_STR]
Length 10
15. Seleccione la opcin Script del lado izquierdo de la ventana de propiedades, y presione el botn
Design Script:
Data Warehouse & Olap 36
16. Se abrir el entorno de desarrollo de .Net para scripts de SSIS. Escriba el siguiente cdigo para
definir la transformacin en la funcin Input0_ProcessInputRow:
17. Grabe el script presionando el botn . Cierre el entorno de desarrollo de scripts y pulse el botn
OK para finalizar la edicin de la transformacin.
18. En el Toolbox, expanda la pestaa Data Flow Destinations. Seleccione el tem OLE DB
Destination y arrstrelo sobre la ventana de diseo. Renombre el destino como Tabla de
territorios. A continuacin, conecte Transformacin de regiones con Tabla de territorios. La
ventana del editor debe quedar como sigue:
Data Warehouse & Olap 37
19. Haga doble click sobre el destino Tabla de territorios para abrir su ventana de propiedades.
Seleccione la opcin Connection Manager del lado izquierdo de la pantalla, y establezca los
siguientes valores para las propiedades:
Opcin Valor
OLE DB Connection Manager Seleccione AWorks MartDemo
Data Access Mode Table or view Fast load
Name of the table or the view Pulse el botn New para crear una nueva tabla. Escriba la
siguiente sentencia SQL:
CREATE TABLE Territorios
(ZipCode char(5),
Territorio varchar(50),
Region varchar(10))
20. Seleccione la opcin Mappings del lado izquierdo de la pantalla. Establezca los siguientes mapeos
entre las columnas definidas en Transformacin de regiones y el destino Tabla de territorios:
Column 0 ZipCode
Column 1 Territorio
Region Region
Data Warehouse & Olap 38
Los contenedores permiten agrupar tareas relacionadas. El uso de contenedores hace ms sencillo
definir el flujo de las tareas al interior de un paquete. La siguiente figura muestra un ejemplo de la
definicin de tareas agrupadas en contenedores:
Script Task
Data Flow Task 1
Data Flow Task 3
Como puede observarse en la figura, resulta ms sencillo representar el flujo de ejecucin de las tareas
utilizando contenedores. Existen tres tipos de contenedores:
Evala una expresin, y repite la ejecucin de las tareas hasta que dicha
For Loop
expresin sea verdadera.
Data Warehouse & Olap 40
A menudo, es necesario que los paquetes SSIS utilicen valores que deben calcularse en tiempo de
ejecucin.
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 sera 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 slo en las tareas que
se encuentren en dicho contenedor.
Ejercicio 4: Definir variables en el paquete. Uso del contenedor For Each Loop.
1. Abra el paquete CopiaProductos.dtsx, y sitese en la pestaa Control Flow. Haga un clic sobre
cualquier parte de la ventana de diseo, asegurndose de no seleccionar ninguna tarea. A
continuacin, seleccione el men SSIS, y elija la opcin Variables.
Propiedad Valor
Name varTerritoryFile
Scope CopiaProductos
Data Type String
Value
Data Warehouse & Olap 41
3. Abra el Toolbox, seleccione el tem Foreach Loop Container, y arrstrelo sobre la ventana de
diseo del paquete. Renombre el elemento creado como Archivos de despachos de planta, y
agrguele una precedencia con origen en la tarea Borrar datos. El entorno de diseo debe quedar
de la siguiente manera:
4. El bucle creado en el paquete tiene como objetivo recorrer el directorio de trabajo de este captulo,
para encontrar los archivos de texto cuyo nombre empiece con DespachosPlanta. Por cada
archivo encontrado, su contenido se copiar a una tabla de SQL Server.
Data Warehouse & Olap 42
5. Haga doble clic sobre el bucle Archivos de despachos de planta. Se abrir su ventana de
propiedades. En la parte izquierda de la ventana, seleccione la opcin Collection. Establezca las
siguientes opciones para hacer que el bucle recorra el directorio de los archivos de texto con los
datos de los despachos de planta:
Propiedad Valor
6. A continuacin, se configurar el bucle para que, por cada vez que encuentre un archivo, almacene
su nombre en la variable varTerritoryFile. En el lado izquierdo de la ventana de propiedades,
seleccione la opcin Variable Mappings. En la columna Variables, seleccione la variable
Data Warehouse & Olap 43
Propiedad Valor
9. Obsrvese que, en el connection manager que acaba de crear, la propiedad File name apunta
nicamente al archivo DespachosPlantaLima.txt. Para hacer que dicha propiedad obtenga sus
valores a partir de la variable varTerritoryFile, seleccione el connection manager Despachos de
planta. En el men View, seleccione la opcin Properties Window para visualizar la ventana
Properties. Seleccione la propiedad Expressions.
Data Warehouse & Olap 44
12. Pulse el botn OK para cerrar el constructor de expresiones. Pulse nuevamente el botn OK para
cerrar la ventana del Property Expressions Editor. Guarde el paquete.
13. Dentro del bucle Archivos de despachos de planta, agregue un nuevo Data Flow Task
(asegrese de arrastrar el Data Flow directamente desde el Toolbox y colocarlo dentro del bucle).
Renmbrelo como Copiar Despachos. Al finalizar, la ventana de diseo debe quedar de la
siguiente manera:
Data Warehouse & Olap 46
14. Haga doble clic sobre la tarea Copiar Despachos para disear el flujo de datos. Siga los
siguientes pasos:
Desde el Toolbox, agregue un Flat File Source y renmbrelo como Despachos. Ascielo
con el connection manager Despachos de planta.
Desde el Toolbox, agregue un OLE DB Destination y renmbrelo como Tabla de
Despachos. A continuacin, una Despachos con Tabla de Despachos.
Edite las siguientes propiedades del destino Tabla de despachos:
Propiedad Valor
En la parte izquierda del editor de propiedades del destino OLEDB, seleccione la opcin
Mappings, y observe los mapeos de columnas que se han creado automticamente.
15. Regrese al Control Flow, y edite la tarea Borrar Datos para efectuar un DELETE sobre la tabla
Despachos al inicio de la ejecucin del paquete.
16. Grabe los cambios y pruebe el paquete.
Data Warehouse & Olap 47
En el ejercicio nmero 4, se utiliz un Script Component para traducir los cdigos numricos a nombres
de regiones. En dicho ejemplo, debido a que slo existen cuatro regiones, basta con escribir una
sentencia SELECT CASE en el cdigo .Net del Script Component. Sin embargo, si la transformacin
involucra una cantidad grande de valores distintos (por ejemplo, los cdigos de los distritos de un pas), el
script puede hacerse muy extenso y difcil de escribir.
Los Lookups implementan un mecanismo til para efectuar transformaciones utilizando tablas de
equivalencia. La siguiente tabla muestra la utilizacin de una tabla de bsqueda para convertir los cdigos
de estados USA en sus respectivos nombres:
Data Warehouse & Olap 48
Los procesos ETL deben leer informacin de mltiples tipos de fuentes, y transferirla a diversos destinos.
Es muy posible, por tanto, que sea necesario efectuar conversiones de datos. SSIS incorpora una
transformacin llamada Data Conversion, cuya labor es efectuar conversiones de tipos de datos. De esta
forma, es posible convertir informacin de texto de un formato a otro (por ejemplo, convertir cadenas de
formato UNICODE a no-UNICODE), convertir tipos de datos de fecha, o establecer la precisin de
informacin numrica.
1. Ejecute el siguiente bloque Transact SQL desde el SQL Server Management Studio:
USE AWorks_MartDemo
GO
2. A travs del SQL Server Management Studio, ingrese los siguientes registros en la tabla Ciudades:
IdCiudad Descripcion
AN ANCASH
AQ AREQUIPA
CJ CAJAMARCA
CZ CUZCO
HU HUANUCO
LI LIMA
3. En el proyecto de Integration Services, agregue un nuevo Data Source que utilice el proveedor
Native OLE DB\Microsoft Jet 4.0 OLE DB Provider, apuntando hacia el archivo Access llamado
CURSO OLAP DEVELOPER.mdb.
Asegrese de que el checkbox Save my password est seleccionado.
Data Warehouse & Olap 49
El archivo Access CURSO OLAP DEVELOPER.mdb contiene una tabla llamada ClientesPeru,
con los siguientes datos:
Data Warehouse & Olap 50
Observe que la columna Ciudad contiene cdigos de ciudades (LI, CJ, etc.).
5. Agregue al paquete (con cuidado de NO colocarlo dentro del bucle Archivos de despachos de
planta) un nuevo Data Flow Task y renmbrelo como Copiar clientes. Agrguele una
precedencia con origen en la tarea Borrar Datos.
6. Dentro del Data Flow Task Copiar clientes, agregue un nuevo OLE DB Source estableciendo las
siguientes propiedades:
Data Warehouse & Olap 51
8. Haga un doble clic en Convertir a no-UNICODE para editar las propiedades de la conversin de
datos. Se abrir el Data Conversion Transformation Editor. Esta ventana muestra los inputs
provenientes del origen Access Clientes, y permite efectuar conversiones de datos. En el panel
inferior, configure las siguientes propiedades para convertir las columnas de texto del Access a
formato normal:
Esto significa que, al output proveniente de Access Clientes, se agregan tres columnas
adicionales llamadas NomCliente-noUNC, TelCliente-noUNC y Ciudad-noUNC, que contienen los
datos transformados a cadena normal (string).
9. Pulse el botn OK para finalizar la edicin del Data Conversion. A continuacin, agregue desde el
Toolbox una transformacin de tipo Lookup, y renmbrela como Lookup Ciudades. Finalmente,
conecte la salida de Convertir a no-UNICODE con la transformacin Lookup Ciudades.
Data Warehouse & Olap 53
10. Haga un doble clic sobre Lookup Ciudades para editar sus propiedades. Se abrir la ventana del
Lookup Transformation Editor. En la pestaa Reference Table, la propiedad OLE DB
Connection Manager debe apuntar al connection manager AWorks MartDemo. La tabla de
referencia debe ser dbo.Ciudades:
Data Warehouse & Olap 54
11. Seleccione la pestaa Columns de la ventana del Lookup Transformation Editor. La tabla
Available Lookup Columns contiene las columnas de la tabla dbo.Ciudades, que servir para
relacionar el cdigo de la ciudad (columna IdCiudad) con el nombre de la ciudad (columna
Descripcion). En la tabla Available Lookup Columns, seleccione el campo IdCiudad y
arrstrelo sobre el campo Ciudad-noUNC de la tabla Available Input Columns. Luego, marque el
checkbox de la columna Descripcion de la tabla Available Lookup Columns. Al finalizar, la
ventana debe quedar de la siguiente manera:
De esta manera, la transformacin Lookup efecta una operacin de join con la tabla
dbo.Ciudades, basada en la igualdad de las columnas IdCiudad y Ciudad-noUNC. El join
efectuado permite obtener, para cada registro en la tabla ClientesPeru del archivo Access de
origen, el valor de la columna Descripcion que le corresponde en la tabla dbo.Ciudades.
14. Haga un doble clic sobre el destino Tabla clientes para abrir su ventana de propiedades.
Seleccione la opcin Connection Manager del lado izquierdo de la pantalla, y establezca los
siguientes valores para las propiedades:
Opcin Valor
OLE DB Connection Manager Seleccione AWorks MartDemo
Data Access Mode Table or view Fast load
Name of the table or the view Pulse el botn New para crear una nueva tabla. Escriba la
siguiente sentencia SQL:
CREATE TABLE Clientes
(IdCliente integer,
NombreCliente varchar(50),
TelefonoCliente varchar(10),
CiudadCliente varchar(20))
15. Seleccione la opcin Mappings del lado izquierdo de la pantalla. Establezca los siguientes mapeos
entre las columnas de Lookup Ciudades y el destino Clientes:
idCliente idCliente
NomCliente-noUNC NombreCliente
TelCliente-noUNC TelefonoCliente
Descripcion CiudadCliente
Data Warehouse & Olap 56
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 ejecucin, 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 informacin de entrada a travs de:
Un archivo XML: Los valores quedan almacenados en un archivo XML. El paquete SSIS cargar
estos valores al iniciarse su ejecucin.
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.
En el siguiente ejercicio, se agregar un package configuration que almacenar una configuracin para
determinar si el paquete debe ejecutarse o no. Dicho valor ser asignado a una variable, y evaluado en
una tarea de tipo Script Task para definir si la ejecucin del paquete debe interrumpirse.
Propiedad Valor
Name varTerritoryFile
Scope CopiaProductos
Data Type String
Value
2. Haga un clic sobre la pestaa Control Flow en el entorno de diseo. En el men SSIS, seleccione
la opcin Package Configurations.
Data Warehouse & Olap 58
3. Aparecer la ventana del Package Configurations Organizer. Marque el check box Enable
Package Configurations. Para crear una nueva configuracin, pulse el botn Add.
4. Aparecer la ventana inicial del Package Configuration Wizard. Pulse el botn Next.
5. En la siguiente ventana, en la propiedad Configuration Type, seleccione la opcin XML
Configuration File. Marque la opcin Specify configuration settings directly, y utilice el botn
Browse para definir la ruta donde desea crear el archivo de configuracin. Asigne al archivo el
nombre Configuraciones.dtsConfig.
6. Pulse el botn Next. En la siguiente ventana, en la lista Objects, seleccione la propiedad Value de
la variable varPaqueteActivo.
Data Warehouse & Olap 59
7. Pulse el botn Next. En la ventana final del asistente, en la propiedad Configuration name, escriba
PaqueteActivado.
Data Warehouse & Olap 60
5. Pulse el botn Finish para finalizar el asistente. Pulse el botn Close para cerrar el Package
Configurations Organizer.
6. Observe que se ha creado un archivo XML llamado Configuraciones.dstConfig en la ruta
seleccionada durante la ejecucin del asistente. Abra el archivo utilizando el Internet Explorer.
Observe la existencia de un elemento Configuration, de tipo booleano, establecido a -1 (true).
7. Desde el Toolbox, agregue al paquete una tarea de tipo Script Task, y renmbrela como Verificar
activacin. A continuacin, agregue a la tarea Borrar datos una precedencia con origen en
Verificar activacin.
8. Haga un doble clic en la tarea Verificar Activacin. Se abrir la ventana del Script Task Editor. En
la parte izquierda de la ventana, seleccione la opcin Script. En la propiedad ReadOnlyVariables,
escriba varPaqueteActivo. Esto indica que el script tiene acceso de slo lectura sobre la variable
varPaqueteActivo.
Data Warehouse & Olap 61
9. Pulse el botn Design Script para escribir el cdigo .Net que define el comportamiento de la tarea.
Escriba el siguiente cdigo en el mtodo Main() de la clase ScriptMain:
10. Guarde el script y cierre la ventana de .Net. En la ventana del Script Task Editor, pulse el botn
OK.
11. Guarde el paquete y ejectelo. Observe que, como el valor de la variable varPaqueteActivo es
True, el script task finaliza notificando xito, y da paso a la ejecucin de las tareas siguientes.
12. Abra el archivo Configuraciones.dtsConfig utilizando el Notepad. Modifquelo, para establecer el
valor de la configuracin para la variable varPaqueteActivo a 0 (False). Al finalizar, el archivo debe
quedar de la siguiente manera:
Data Warehouse & Olap 62
13. Ejecute nuevamente el paquete. Observe que, como el valor de la variable varPaqueteActivo es
False, el script task finaliza notificando fallo, y todo el paquete finaliza su ejecucin.
Data Warehouse & Olap 63
La transformacin Derived Column se utiliza para generar nuevas columnas, con base en las columnas
de input ya existentes. Esto se hace a travs de expresiones, es decir, frmulas 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 permite efectuar transformaciones avanzadas en la
informacin de una fila.
El Derived Column es muy til para situaciones en las cuales se debe efectuar concatenaciones, extraer
una porcin de una cadena, obtener partes de una fecha, aplicar funciones matemticas, etc.
En el siguiente ejercicio, se crear un DerivedColumn para concatenar los valores de las columnas
FirstName y LastName de la tabla Person.Contact, y enviar el resultado hacia una nueva tabla llamada
ResumenContactos.
2. En el data flow Copiar Contactos, agrege un Data Reader Source con las siguientes propiedades:
Propiedad Valor
Name Contactos
Connection Manager Adventure Works
SqlCommand String
Value Select ContactId, FirstName, LastName
From Person.Contact
3. En el data flow Copiar Contactos, agrege una transformacin de tipo Derived Column. Conecte la
salida del origen Contactos con la transformacin que acaba de aadir.
Data Warehouse & Olap 64
4. Haga doble clic sobre la transformacin Derived Column para editar sus propiedades. Aparecer la
ventana del Derived Column Transformation Editor. En el grid de la parte inferior, agregue nueva
columna derivada, con las siguientes propiedades:
Propiedad Valor
5. Pulse el botn OK para confirmar los cambios. A continuacin, agregue un OLE DB Destination
llamado Resumen Contactos. Conecte la salida de la transformacin Derived Column con la
transformacin Resumen Contactos. Haga doble clic sobre ResumenContactos y establezca las
siguientes propiedades:
Data Warehouse & Olap 65
Propiedad Valor
7. Pulse el botn OK para aceptar los cambios. Guarde el paquete y ejectelo. Compruebe los
resultados.
Data Warehouse & Olap 67
Una vez finalizado el desarrollo de los paquetes SSIS, stos deben ser llevados a un servidor que est
corriendo los servicios de SQL Server Integration Services. A este proceso se le denomina distribucin
(deployment).
Durante el deployment, la definicin 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 definicin del paquete se almacena en la base de datos msdb, que es una base
de datos de sistema de SQL Server 2005.
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 tambin
programar la ejecucin automtica de los paquetes, a travs de la creacin de jobs (trabajos) en el
agente de SQL Server 2005.
La disribucin de los paquetes SSIS puede efectuarse en una de las siguientes formas:
Distribucin manual: Consiste en copiar en el servidor el archivo del paquete (extensin dtsx) y
cualquier otro archivo relacionado, y cargarlo manualmente en los servicios de SQL Server
Integration Services. A travs de este mecanismo, slo puede distribuirse un paquete a la vez.
Deployment utility: SSIS provee una herramienta para facilitar la distribucin 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 distribucin con slo un clic. Con este
utilitario, es posible distribuir varios paquetes a la vez.
4. En el men del entorno de desarrollo, seleccione Build. Haga un clic sobre la opcin Build
AdventureWorks_SSIS_Demo1:
5. Al terminar la compilacin, se habr creado una carpeta llamada Deployment, en el directorio bin
de la carpeta del proyecto. Dicha carpeta contiene el archivo
AdventureWorks_SSIS_Demo1.SSISDeploymentManifest, que es el instalador del proyecto SSIS.
Adems, contiene el archivo CopiaProductos.dtsx, que contiene el paquete, y el archivo de
configuracin configuraciones.dtsconfig, creado en el ejercicio (6).
6. Para iniciar la distribucin del paquete, haga doble clic sobre el archivo
AdventureWorks_SSIS_Demo1.SSISDeploymentManifest. Se iniciar el Package Installation
Wizard. Pulse el botn Next de la primera ventana del asistente.
7. La siguiente ventana permite establecer el tipo de instalacin. Seleccione la opcin SQL Server
deployment. De esta manera, el paquete se almacenar en la base de datos msdb del servidor
destino.
Data Warehouse & Olap 69
8. Pulse el botn Next. A continuacin, establecer el servidor destino para la instalacin del paquete.
Establezca las siguientes propiedades:
Propiedad Valor
9. Pulse el botn Next. La siguiente ventana permite determinar la ubicacin de los archivos
adicionales que el paquete necesita para correr (por ejemplo, los archivos de configuracin del
proyecto). Seleccione la carpeta SSISConfigurations creada en el paso (1). De esta forma, el
archivo de configuracin se copiar en esta carpeta al finalizar la instalacin del paquete.
Data Warehouse & Olap 70
10. Pulse el botn Next. Aparecer la pantalla de confirmacin de la instalacin. Pulse nuevamente el
botn Next.
11. La siguiente ventana permite establecer valores iniciales en el archivo (o archivos) de configuracin.
En la propiedad Configuration file, seleccione la configuracin configuraciones.dtsconfig. En el
grid Configurations, seleccione la propiedad varPaqueteActivo, y establezca su valor a True. De
esta manera, antes de finalizar la instalacin, el archivo de configuracin es modificado de acuerdo
a lo ingresado en esta pantalla, y copiado al servidor por el asistente de instalacin.
12. Pulse el botn Next. Aparecer la pantalla final del asistente. Pulse el botn Finish.
13. A continuacin se observar el paquete instalado. Abra el SQL Server Management Studio. En la
pantalla de conexin ingrese la siguiente informacin:
Propiedad Valor
14. Pulse el botn Connect. En la ventana del Object Explorer, expanda el servidor. Expanda el nodo
Stored Packages. Expanda el nodo MSDB. Seleccione el paquete CopiaProductos, haga un clic
derecho y seleccione la opcin Run package:
17. Pulse el botn Close para cerrar la ventana de progreso. Pulse nuevamente el botn Close para
cerrar la ventana de ejecucin de paquetes. Cierre el SQL Server Management Studio.