Você está na página 1de 72

Data Warehouse & Olap 1

Captulo 3
Poblar el Data Mart

Objetivos:

Identificar los procesos para poblar un Data Mart.


Utilizar SSIS para poblar el Data Mart:

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

Poblar el Data Mart


Una vez definida la base de datos STAR o SNOWFLAKE para el Data Mart, se debe efectuar la poblacin
con la informacin 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 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

1. Herramientas para implementar procesos ETL

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:

Obsrvese la siguiente sentencia Transact SQL:

Select Distinct Date=(S.ShippedDate),


DayOfWeek=DateName(dw, S.ShippedDate),
Month = DatePart(mm,S.ShippedDate),
Year= DatePArt(yy, S.ShippedDate),
Quarter = DatePArt(qq,S.ShippedDate), DayOfYear=DatePart(dy,
S.ShippedDate),
Holiday = 'N',
Weekend = case DatePart(dw, ShippedDate)
When (1) then 'Y'
When (7) then 'Y'
Else 'N'
End,
YearMonth=DateName(month, S.ShippedDate) + '-' + DateName(year, S.ShippedDate),
WeekOfYear=DatePArt(wk,S.ShippedDate)
From Orders S Where S.ShippedDate IS NOT NULL

La sentencia mostrada extrae y formatea informacin de fecha proveniente de la tabla Orders.


Data Warehouse & Olap 5

1.2 Consultas Distribuidas

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

1.3 El utilitario BCP y la sentencia BULK INSERT

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

1.4 SQL Server Integration Services (SSIS)

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.

2. LA ARQUITECTURA DE SQL SERVER INTEGRATION SERVICES (SSIS)

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:

Definen conexiones hacia los orgenes de datos. SSIS es capaz de


Data Sources conectarse con cualquier origen de datos accesible a travs de proveedores
.Net y OLE DB.

Son documentos que definen la estructura de determinados objetos en el


Data Source Views origen de datos. Los data source views permiten crear vistas parciales de la
totalidad de los objetos en un origen de datos.

Una tarea (task) define una unidad de transformacin o procesamiento de


datos. Las tareas pueden ejecutar diversas acciones: ejecutar sentencias
Tasks SQL, ejecutar scripts .Net, enviar correos, etc. Un tipo especial de tarea es
el Data Flow Task (tarea de flujo de datos), que efecta transferencias de
registros entre varios tipos de orgenes de datos.

Permiten definir secuencias lgicas de transferencia de informacin. Por


Control flow ejemplo, a travs de los flujos de control, se pueden definir bucles que
repitan varias veces una transferencia de datos.

Las tareas de transformacin se pueden agrupar en contenedores


Containers (containers). El uso de contenedores hace ms sencillo definir la secuencia
lgica de ejecucin de las tareas

Todas las tareas y contenedores estn contenidos dentro de un package


Package
(paquete) de SSIS. Un proyecto SSIS puede contener varios paquetes

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.

Ejercicio 1: Crear conexiones y transformaciones a travs de un proyecto SSIS.

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.

3. Aparecer el entorno de desarrollo de proyectos de Integration Services. En la ventana del


Solution Explorer, observe los elementos constituyentes del proyecto: Data Sources, Data
Source Views, SSIS Packages y Miscellaneous.
Data Warehouse & Olap 9

4. El primer paso es la definicin de un Data Source. En el Solution Explorer, seleccione el nodo


Data Sources, d un clic derecho y seleccione New Data Source:

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:

11. Presione el botn Next. Aparecer la ventana final del asistente.


Data Warehouse & Olap 12

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.

15. En la ventana de creacin de bases de datos, ingrese la informacin que se muestra en la


siguiente figura:

16. Pulse el botn OK. Esto crear la base de datos AWorks_MartDemo.


17. Cierre el Server Explorer.
18. Repita los pasos del (4) al (7) para crear un nuevo Data Source llamado AWorks MartDemo,
dirigido hacia la base de datos AWorks_MartDemo. Para este data source, debe elegir el conector
Native OLEDB\SQL Native Client:
Data Warehouse & Olap 14

Finalmente, la ventana del Solution Explorer debe quedar de la siguiente manera:

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

23. Renombre el paquete como CopiaProductos.dtsx, y presione la tecla Enter. Se mostrar la


siguiente ventana de confirmacin:

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

SqlCommand, y pulse el botn .


Data Warehouse & Olap 22

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

39. Seleccione el origen Consulta Adventure Works. Observe


que aparece una flecha verde y una flecha roja saliendo del
origen de registros. La flecha verde representa el flujo de
datos que se produce en caso de que la lectura de registros
transcurra sin problemas; la flecha roja representa el flujo
que tendr lugar ante un error en la lectura de los registros
del origen.

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.

2.1 Definir 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 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

Ejercicio 2: Definir precedencias.

1. En el entorno de desarrollo, en el paquete CopiaProductos.dtsx, regrese a la pestaa Control


Flow. En el Toolbox, seleccione el tem Execute SQL Task, y arrstrelo sobre la ventana de
diseo. La pantalla debe quedar de la siguiente manera:

2. En la ventana de propiedades, seleccione la propiedad Name de la tarea que acaba de crear, y


cmbiela por Borrar Datos.
3. Haga doble clic sobre la tarea Borrar Datos. Se abrir el editor de propiedades de la tarea.
Seleccione la propiedad Connection, y cambie su valor para que apunte hacia la conexin AWork
MartDemo:
Data Warehouse & Olap 28

4. A continuacin, seleccione la propiedad SQLStatement, y presione el botn . Escriba la


siguiente sentencia SQL:

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

7. Ejecute el paquete para probar su funcionamiento.


Data Warehouse & Olap 30

2.2 Escribir cdigo .Net para personalizar las transformaciones: el Script Component

SSIS incluye un tipo de transformacin que permite al desarrollador implementar componentes


avanzados, escritos a travs de .Net: el Script Component. El cdigo de un Script Component puede
aprovechar toda la funcionalidad disponible en el .Net Framework 2.0, lo cual permite crear paquetes muy
complejos y personalizados. Por ahora, el nico lenguaje soportado es Visual Basic .Net. Existen tres
tipos de componentes de script:

Source Components: No poseen columnas de input. A travs de estos componentes, se


pueden escribir orgenes personalizados de datos. De esta manera, es posible desarrollar
orgenes sobre formatos de datos no soportados de forma nativa por SSIS.
Destination Components: No poseen columnas de output. A travs de estos componentes, se
pueden escribir destinos personalizados de datos, para escribir la informacin hacia formatos no
soportados de forma nativa por SSIS.
Transformation Components: Poseen columnas de input y columnas de output. A travs de
estos componentes, se puede escribir lgica compleja para efectuar transformaciones
personalizadas de datos.

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.

Ejercicio 3: Escribir una transformacin personalizada a travs del Script Component.

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

5. Pulse el botn OK para finalizar la configuracin de la conexin al archivo de texto.


6. En el Toolbox, expanda la pestaa Data Flow Sources. Seleccione el tem Flat File Source, y
arrstrelo sobre la ventana de diseo. Renombre el origen resultante como Territorios.

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:

11. Pulse el botn OK. Renombre la transformacin como Transformacin de regiones. A


continuacin, oonecte el origen Territorios con Transformacin de regiones. Al finalizar, su editor
debe quedar de la siguiente manera:
Data Warehouse & Olap 34

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

21. Presione el botn OK para finalizar la edicin del destino.


22. Guarde el paquete y ejectelo. Verifique que en la columna Region de la tabla Territorios se han
insertado los valores transformados.
23. Actividad sugerida: Modifique la tarea Borrar Datos para eliminar los datos de la tabla Territorios
antes de iniciar las transferencias de datos.
Data Warehouse & Olap 39

2.3 Containers (contenedores)

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:

Sequence Container For Each Loop Container

Script Task
Data Flow Task 1
Data Flow Task 3

Data Flow Task 2

Como puede observarse en la figura, resulta ms sencillo representar el flujo de ejecucin de las tareas
utilizando contenedores. Existen tres tipos de contenedores:

Agrupa tareas relacionadas entre s. Las tareas en el interior de este tipo


Sequence Container de contenedor se ejecutarn en paralelo, a menos que se hayan definido
precedencias entre ellas
Este contenedor efecta una iteracin a travs de los elementos de una
coleccin. Esta coleccin puede provenir de diversas fuentes: la lista de
For Each Loop archivos dentro de una carpeta del sistema operativo, una coleccin de
ADO .Net, etc. Las tareas dentro del contenedor For Each Loop repetirn
su ejecucin, por cada elemento encontrado en la coleccin

Evala una expresin, y repite la ejecucin de las tareas hasta que dicha
For Loop
expresin sea verdadera.
Data Warehouse & Olap 40

2.4 Definir variables en SSIS

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.

2. Aparecer la ventana Variables en el lado izquierdo de la pantalla. Pulse el botn para


agregar una nueva variable al paquete. Establezca las siguientes propiedades para la variable:

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

Enumerator Foreach File Enumerator


Folder Seleccione la carpeta donde se encuentran los archivos
DespachosPlantaLima.txt y DespachosPlantaTrujillo.txt
Files DespachosPlanta*.txt
Retrieve file name Seleccione la opcin Fully Qualified

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

varTerritoryFile, y asgnela al elemento de posicin 0 de la coleccin de archivos (el bucle Foreach


recorre colecciones, y las colecciones tienen filas y columnas; en el caso de una coleccin que
recorre una lista de archivos, slo hay una columna, que corresponde con la posicin 0 de la
coleccin):

7. Pulse el botn OK para finalizar la edicin del bucle.


8. Agregue un nuevo connection manager de tipo Flat File Connection, y establezca los siguientes
valores para sus propiedades:

Propiedad Valor

Connection manager name Despachos de planta


File name Seleccione el archivo DespachosPlantaLima.txt
Format Delimited
Text qualifier " (comillas dobles)
Column names in the first data row Seleccionado

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

10. En la propiedad Expressions, presione el botn . Se abrir el editor de expresiones. En la


columna Property, seleccione la propiedad ConnectionString.

11. Presione el botn al costado de la columna Expression. Se abrir el constructor de


expresiones. En el lado izquierdo de la pantalla, expanda el nodo Variables, seleccione la variable
User::varTerritoryFile y arrstrela sobre la caja de texto Expresin. Al finalizar, la ventana debe
quedar de la siguiente manera:
Data Warehouse & Olap 45

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

OLE DB Connection Manager AWorks MartDemo


Data access mode Table or view fast load
Name of the table or the view Presione el botn New para crear una tabla, con la
siguiente sentencia SQL:
CREATE TABLE [Despachos](
[IdPlanta] int,
[IdProducto] int,
[IdCliente] char(11),
[Cantidad] smallint
)

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.

Al finalizar, la ventana de diseo debe quedar de la siguiente manera:

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

2.5 Utilizar Lookups

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

2.6 Data Transformations

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.

Ejercicio 5: Utilizar las transformaciones Data Conversion y Lookup.

1. Ejecute el siguiente bloque Transact SQL desde el SQL Server Management Studio:

USE AWorks_MartDemo
GO

CREATE TABLE Ciudades


(IdCiudad char(2),
Descripcion varchar(20))

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

4. En el paquete CopiaProductos.dtsx agregue un nuevo connection manager que apunte hacia el


Data Source que acaba de crear. Al finalizar la creacin del connection manager, se abrir una
ventana solicitando el usuario y contrasea para el Access. Complete la informacin de la siguiente
manera:

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

Renombre a este OLE DB Source como Access Clientes.

7. La informacin de las columnas de texto en el archivo Access se encuentra almacenada en formato


internacional (UNICODE). En SQL Server, los tipos de datos NCHAR, NVARCHAR,
NVARCHAR(max) y NTEXT soportan este formato de texto. Sin embargo, en este ejercicio la
informacin del archivo Access ser transferida a una tabla con columnas CHAR y VARCHAR, que
no soportan el formato UNICODE. Por tanto, es necesario que los datos del Access pasen por una
conversin de tipo antes de ser copiados a SQL Server 2005. La tarea Data Conversion permite
efectuar este tipo de operacin. En el Data Flow Task Copiar Clientes, agregue desde el
Toolbox el tem llamado Data Conversion, y renmbrelo como Convertir a no-UNICODE.
Finalmente, una la salida del OLE DB Source Access Clientes con la conversin Convertir a no-
UNICODE.
Data Warehouse & Olap 52

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:

Input Column Output Alias Data Type Length

NomCliente NomCliente-noUNC String [DT_STR] 50


TelCliente TelCliente-noUNC String [DT_STR] 10
Ciudad Ciudad-noUNC String [DT_STR] 2

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.

12. Pulse el botn OK para confirmar los cambios.


13. Desde el Toolbox, en la pestaa Data Flow Destinations, agregue un nuevo OLE DB
Destination, y renmbrelo como Tabla Clientes. Conecte la salida de Lookup Ciudades con
Tabla Clientes.
Data Warehouse & Olap 55

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

16. Pulse el botn OK para confirmar los cambios.


17. Regrese al Control Flow, y edite la tarea Borrar Datos para efectuar un DELETE sobre la tabla
Clientes al inicio de la ejecucin del paquete.
18. Grabe los cambios y ejecute el paquete. Al finalizar, efecte una consulta sobre la tabla Clientes
en la base de datos AWorks_MartDemo.
Data Warehouse & Olap 57

2.7 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 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.

Ejercicio 6: Crear package configurations.

1. En el paquete CopiarProductos.dtsx agregue una variable llamada varPaqueteActivo, con las


siguientes caractersticas:

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

2.8 La transformacin Derived Column

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.

Ejercicio 7: Utilizar la transformacin Derived Column.

1. En el paquete CopiarProductos.dtsx agregue un Data Flow Task, y renmbrelo como Copiar


Contactos.

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

Derived Column Name NombreCompleto


Derived Column <add as new column>
Expression [LastName] + , + [FirstName]
Data Type String [DT_STR]

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

OLE DB Connection AWorks MartDemo


Manager
Data Access Mode Table or view fast load
Name of the table or the Pulse el botn New, y cree una nueva tabla con
view la siguiente definicin:
CREATE TABLE [ResumenContactos](
ContactID Integer,
NombreCompleto Varchar(150)
)
Data Type String [DT_STR]

6. En la parte izquierda de la ventana, seleccione la opcin Mappings, y establezca los siguientes


mapeos de columnas:
Data Warehouse & Olap 66

7. Pulse el botn OK para aceptar los cambios. Guarde el paquete y ejectelo. Compruebe los
resultados.
Data Warehouse & Olap 67

2.9 Distribucin (deployment) del proyecto SSIS

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.

Ejercicio 8: Distribuir el paquete con el Deployment Utility.

1. En su disco de trabajo, cree una carpeta llamada SSISConfigurations.


2. En la ventana del Solution Explorer, seleccione el proyecto AdventureWorks_SSIS_Demo1.
Haga un clic derecho, y seleccione Properties.

3. Se abrir la ventana de propiedades del proyecto. En la parte izquierda de la ventana, seleccione la


opcin Deployment Utility. Establezca la propiedad CreateDeploymentUtility a True:
Data Warehouse & Olap 68

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

Server name (local)


Use Windows Authentication Seleccionado

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

Server type Integration Services


Server name <escriba el nombre de su estacin de trabajo>
Data Warehouse & Olap 71

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:

15. Aparecer la ventana de ejecucin de paquetes. Pulse el botn Execute.


16. Aparecer la ventana Package Execution Progress, indicando el progreso de la ejecucin. Al
finalizar, examine la informacin mostrada por esta ventana.
Data Warehouse & Olap 72

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.

Você também pode gostar