Anda di halaman 1dari 116

Captulo No.

1:
Utilizar SQL Server Integration Services
para poblar el Datamart

Al finalizar el captulo, el alumno podr:

Identificar los procesos para poblar un Datamart.


Utilizar SQL Server Integration Services (SIS) para poblar el
Datamart.

Temas:

1. Poblar el Datamart
2. Herramientas para implementar procesos de Extraccin,
Transformacin y Carga (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
g. Automatizar la ejecucin de paquetes SSIS a travs del Agente
de SQL Server 2008
Utilizar SQL Server Integration Services para poblar el Datamart 2

1. Poblar el Datamart

Una vez definida la base de datos STAR o SNOWFLAKE para el Datamart, 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 Datamart 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 Datamart.

CIBERTEC
3 Diseo e Implementacin de Soluciones OLAP con Analysis Services SQL Server 2008

Con frecuencia, los procesos ETL deben modificar el formato y la presentacin de


los datos ledos desde los sistemas transaccionales. La figura de la parte superior
muestra las operaciones de transformacin que pueden realizarse.

CIBERTEC
Utilizar SQL Server Integration Services para poblar el Datamart 4

2. Herramientas para implementar


procesos ETL

SQL Server 2008 ofrece mltiples herramientas para la implementacin de los


procesos ETL:

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 2008 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 SSIS.

CIBERTEC
5 Diseo e Implementacin de Soluciones OLAP con Analysis Services SQL Server 2008

2.1 Transact SQL

Puede emplearse la sentencia SELECT para poblar el Datamart a partir de sistemas


transaccionales cuya informacin est almacenada en bases de datos SQL Server
2008.

La figura superior 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.ShipDate),


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

La sentencia mostrada extrae y formatea informacin de fecha proveniente de la


tabla Orders.

CIBERTEC
Utilizar SQL Server Integration Services para poblar el Datamart 6

2.2 Consultas Distribuidas

Las consultas distribuidas permiten consolidar la informacin a partir de mltiples


servidores de datos. A travs de SQL Server 2008 se pueden crear linked servers
(servidores enlazados), sobre los cuales se pueden efectuar consultas Transact
SQL. La comunicacin con los servidores enlazados se establece mediante
proveedores OLEDB; por tanto, cualquier origen de datos accesible por OLEDB
puede ser configurado como un servidor enlazado.

El siguiente ejemplo muestra una consulta distribuida Transact SQL sobre un


origen de datos Access (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

CIBERTEC
7 Diseo e Implementacin de Soluciones OLAP con Analysis Services SQL Server 2008

2.3 El utilitario Bulk Copy Program (BCP) y la sentencia BULK


INSERT

El utilitario Bulk Copy Program (BCP) y la sentencia BULK INSERT permiten cargar
datos provenientes de un archivo de texto hacia una base de datos SQL Server
2008.
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 2008, que
puede ser iniciada desde el Query Analizer. La figura superior muestra ejemplos de
utilizacin de estas herramientas de carga.

CIBERTEC
Utilizar SQL Server Integration Services para poblar el Datamart 8

2.4 SQL Server Integration Services (SSIS)

Esta herramienta 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.

CIBERTEC
9 Diseo e Implementacin de Soluciones OLAP con Analysis Services SQL Server 2008

3. 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 complejos y flexibles. A continuacin se
presentan los elementos bsicos de SSIS:

a. Data Sources: Definen conexiones hacia los orgenes de datos. SSIS es


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

b. Data Source Views: Son documentos que definen la estructura de


determinados objetos en el origen de datos. Los data source views permiten
crear vistas parciales de la totalidad de los objetos en un origen de datos.

CIBERTEC
Utilizar SQL Server Integration Services para poblar el Datamart 10

c. Tasks: Una tarea (task) define una unidad de transformacin o


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

d. Control flow: Permite definir secuencias lgicas de transferencia de


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

e. Containers: Las tareas de transformacin se pueden agrupar en


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

f. Package: Todas las tareas y contenedores se hallan dentro de un package


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

CIBERTEC
11 Diseo e Implementacin de Soluciones OLAP con Analysis Services SQL Server 2008

3.1 Conexiones y Transformaciones

Los Connection Manager son conexiones privadas que usan los paquetes SSIS y
estas pueden usar tambin conexiones desde los Data Sources definidos en el
proyecto.

La tarea Data Flow Task permite efectuar transferencias y transformaciones de


datos, desde objetos Data Flow Sources hacia objetos Data Flow Destination.
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).

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.

CIBERTEC
Utilizar SQL Server Integration Services para poblar el Datamart 12

Ejercicio 1: Crear conexiones y transformaciones a travs de


un proyecto de Integration Services

1. En el men Inicio, seleccione All Programs > Microsoft SQL Server


2008 > SQL Server Business Intelligence Development Studio. Se
abrir el entorno de desarrollo de .Net.

2. En el men File, seleccione New y luego Project. Aparecern los distintos


tipos de proyecto que se pueden crear.

CIBERTEC
13 Diseo e Implementacin de Soluciones OLAP con Analysis Services SQL Server 2008

Escoja la plantilla Integration Services Project. En la casilla Location, escoja 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.

CIBERTEC
Utilizar SQL Server Integration Services para poblar el Datamart 14

4. El primer paso es la definicin de un Data Source. En el Solution


Explorer, seleccione el nodo Data Sources, d click 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.

6. Para definir una nueva conexin con datos, presione el botn New.
Aparecer la ventana del Connection Manager. Elija el conector .Net
Providers\SqlClient Data Provider, el servidor local y la base de datos
AdventureWorks, como se muestra en la siguiente figura:

CIBERTEC
15 Diseo e Implementacin de Soluciones OLAP con Analysis Services SQL Server 2008

7. Presione el botn OK y a continuacin, presione el botn Next. Aparecer la


ventana final del asistente.

CIBERTEC
Utilizar SQL Server Integration Services para poblar el Datamart 16

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. D click en el botn Next. La siguiente ventana permite seleccionar las


tablas del origen de datos cuya estructura se desea visualizar. Elija las tablas
Production.Product y Production.ProductSubCategory. La ventana debe quedar
como se muestra en la siguiente figura:

CIBERTEC
17 Diseo e Implementacin de Soluciones OLAP con Analysis Services SQL Server 2008

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

12. D clic en 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.

CIBERTEC
Utilizar SQL Server Integration Services para poblar el Datamart 18

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, elija la opcin Server Explorer.

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

CIBERTEC
19 Diseo e Implementacin de Soluciones OLAP con Analysis Services SQL Server 2008

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, elija el conector Native OLEDB\SQL Native Client
10.0:

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. D click derecho sobre el paquete y seleccione
la opcin Delete:

CIBERTEC
Utilizar SQL Server Integration Services para poblar el Datamart 20

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, d clic derecho y seleccione
la opcin New SSIS Package:

CIBERTEC
21 Diseo e Implementacin de Soluciones OLAP con Analysis Services SQL Server 2008

22. Obsrvese que se ha creado un nuevo paquete llamado Package1.dtsx. Para


renombrarlo, haga clic derecho sobre el paquete en el Solution Explorer y
seleccione la opcin Rename:

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:

CIBERTEC
Utilizar SQL Server Integration Services para poblar el Datamart 22

25. Se abrir el Toolbox de SQL Server Integration Services. La siguiente figura


muestra una vista parcial de la caja de herramientas:

CIBERTEC
23 Diseo e Implementacin de Soluciones OLAP con Analysis Services SQL Server 2008

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. Primero,


seleccione la tarea Data Flow Task en el diseador del paquete, y cambie la
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).

CIBERTEC
Utilizar SQL Server Integration Services para poblar el Datamart 24

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 iniciar el proceso
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:

CIBERTEC
25 Diseo e Implementacin de Soluciones OLAP con Analysis Services SQL Server 2008

30. Aparecer una ventana que muestra los data sources disponibles:

31. D clic en 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


ADO Net Source y arrstrelo sobre la ventana de diseo. Se crear un nuevo
origen de registros llamado ADO NET Source. Seleccinelo y, en la ventana
de propiedades, cambie su propiedad Name a Consulta Adventure Works.
La pantalla debe quedar de la siguiente manera:

CIBERTEC
Utilizar SQL Server Integration Services para poblar el Datamart 26

33. Haga doble clic sobre el origen Consulta Adventure Works. Aparecer el
editor de propiedades del ADO.NET Source. En la opcin ADO.NET
connection managers, seleccione el data source Adventure Works, como
muestra la figura.

34. En la opcin Data Access mode seleccione SQL command como muestra
la figura.

CIBERTEC
27 Diseo e Implementacin de Soluciones OLAP con Analysis Services SQL Server 2008

35. En la caja de texto SQL command text escriba la siguiente sentencia:

36. Al lado izquierdo del panel seleccione la pestaa Columns, 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.

CIBERTEC
Utilizar SQL Server Integration Services para poblar el Datamart 28

38. En el Toolbox, expanda la pestaa Data Flow Destinations, elija 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:

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. Presione 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:

CIBERTEC
29 Diseo e Implementacin de Soluciones OLAP con Analysis Services SQL Server 2008

41. D 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:

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:

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):

CIBERTEC
Utilizar SQL Server Integration Services para poblar el Datamart 30

44. Pulse el botn OK para aceptar los cambios y finalizar la configuracin del
destino de registros.

45. Para depurar el paquete, d clic en 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:

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.

CIBERTEC
31 Diseo e Implementacin de Soluciones OLAP con Analysis Services SQL Server 2008

3.2 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. Para ello 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.

CIBERTEC
Utilizar SQL Server Integration Services para poblar el Datamart 32

Ejercicio 2: Definir precedencias

En el siguiente ejercicio, implementaremos una tarea Execute SQL Task que


limpiar la tabla Resumen Productos y adems estableceremos precedencias
con el Data Flow Task Copiar productos.

1. En el entorno de desarrollo, en el paquete CopiaProductos.dtsx, se debe


regresar 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:

CIBERTEC
33 Diseo e Implementacin de Soluciones OLAP con Analysis Services SQL Server 2008

2. En la ventana de propiedades, seleccione la propiedad Name de la tarea


que se 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:

CIBERTEC
Utilizar SQL Server Integration Services para poblar el Datamart 34

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:

7. Ejecute el paquete para probar su funcionamiento.

CIBERTEC
35 Diseo e Implementacin de Soluciones OLAP con Analysis Services SQL Server 2008

3.3 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, lo cual permite crear paquetes muy complejos y
personalizados. Los lenguajes soportados son Visual Basic .Net y C#. 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.

CIBERTEC
Utilizar SQL Server Integration Services para poblar el Datamart 36

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:

CIBERTEC
37 Diseo e Implementacin de Soluciones OLAP con Analysis Services SQL Server 2008

3. Se abrir la ventana Flat File Connection Manager Editor. Establezca los


siguientes valores para las opciones de esta ventana:

Opcin Valor

Connection manager name Archivo de territorios


Informacin de territorios en formato de texto
Descripcin
plano
Utilice el botn Browse para ubicar el archivo
File name
Territorios.txt
Format Delimited

Text qualifier " (comillas dobles)


Column names in the first
Desmarcado
data row

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.

CIBERTEC
Utilizar SQL Server Integration Services para poblar el Datamart 38

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.

CIBERTEC
39 Diseo e Implementacin de Soluciones OLAP con Analysis Services SQL Server 2008

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.

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:

CIBERTEC
Utilizar SQL Server Integration Services para poblar el Datamart 40

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


regiones. A continuacin, conecte el origen Territorios con Transformacin
de regiones. Al finalizar, su editor debe quedar de la siguiente manera:

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

CIBERTEC
41 Diseo e Implementacin de Soluciones OLAP con Analysis Services SQL Server 2008

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:

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,


luego en la opcin ScriptLanguage seleccionar Microsoft Visual Basic 2008
y presione el botn Design Script:

CIBERTEC
Utilizar SQL Server Integration Services para poblar el Datamart 42

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:

CIBERTEC
43 Diseo e Implementacin de Soluciones OLAP con Analysis Services SQL Server 2008

19. Haga doble clic 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
Seleccione AWorks MartDemo
Manager

Data Access Mode Table or view Fast load

Pulse el botn New para crear una nueva tabla.


Escriba la siguiente sentencia SQL:
Name of the table or the CREATE TABLE Territorios
view (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

CIBERTEC
Utilizar SQL Server Integration Services para poblar el Datamart 44

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

22. Guarde el paquete y ejectelo. Verifique que en la columna Regin 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.

CIBERTEC
45 Diseo e Implementacin de Soluciones OLAP con Analysis Services SQL Server 2008

3.4 Containers (contenedores) y Variables

3.4.1 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:

Como puede observarse en la figura, resulta ms sencillo representar el flujo


de ejecucin de las tareas utilizando contenedores. Existen tres tipos de
contenedores:

Sequence Container: Agrupa tareas relacionadas entre s. Las tareas


en el interior de este tipo de contenedor se ejecutarn en paralelo, a
menos que se hayan definido precedencias entre ellas.

For Each Loop: Este contenedor efecta una iteracin a travs de los
elementos de una coleccin. Esta coleccin puede provenir de diversas
fuentes: la lista de 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.

For Loop: Evala una expresin, y repite la ejecucin de las tareas


hasta que dicha expresin sea verdadera.

CIBERTEC
Utilizar SQL Server Integration Services para poblar el Datamart 46

3.4. 2 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.

En el siguiente ejercicio, leeremos una serie de archivos de texto


correspondiente a datos enviados por diferentes plantas, para ello definiremos
una variable varTerritoryFile y un contenedor del tipo For Each Loop que
nos permitir recorrer cada uno de los archivos y cargarlos a la tabla
Despachos.

CIBERTEC
47 Diseo e Implementacin de Soluciones OLAP con Analysis Services SQL Server 2008

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:

CIBERTEC
Utilizar SQL Server Integration Services para poblar el Datamart 48

Propiedad Valor
Name varTerritoryFile
Scope CopiaProductos
Data Type String
Value

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:

CIBERTEC
49 Diseo e Implementacin de Soluciones OLAP con Analysis Services SQL Server 2008

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.

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

Seleccione la carpeta donde se encuentran los archivos


Folder
DespachosPlantaLima.txt y DespachosPlantaTrujillo.txt

Files DespachosPlanta*.txt
Retrieve file name Seleccione la opcin Fully Qualified

CIBERTEC
Utilizar SQL Server Integration Services para poblar el Datamart 50

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 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
Seleccionado
data row

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.

CIBERTEC
51 Diseo e Implementacin de Soluciones OLAP con Analysis Services SQL Server 2008

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:

CIBERTEC
Utilizar SQL Server Integration Services para poblar el Datamart 52

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:

CIBERTEC
53 Diseo e Implementacin de Soluciones OLAP con Analysis Services SQL Server 2008

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.

CIBERTEC
Utilizar SQL Server Integration Services para poblar el Datamart 54

3.5. Utilizar Lookups y Data Conversion

3.5.1 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 diapositiva superior muestra la utilizacin
de una tabla de bsqueda para convertir los cdigos de distritos de Lima en sus
respectivos nombres.

CIBERTEC
55 Diseo e Implementacin de Soluciones OLAP con Analysis Services SQL Server 2008

3.5.2 Data Conversion

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.

En el siguiente ejercicio, usaremos la transformacin Data Conversion para


transformar tipos de datos UNICODE de un archivo Access a no-UNICODE,
adicionalmente implementaremos una transformacin Lookup para buscar la
equivalencia de cdigos de ciudades y obtener sus descripciones.

CIBERTEC
Utilizar SQL Server Integration Services para poblar el Datamart 56

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 Descripcin
AN ANCASH
AQ AREQUIPA
CJ CAJAMARCA
CZ CUZCO
HU HUANUCO
LI LIMA

CIBERTEC
57 Diseo e Implementacin de Soluciones OLAP con Analysis Services SQL Server 2008

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.

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:

CIBERTEC
Utilizar SQL Server Integration Services para poblar el Datamart 58

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:

CIBERTEC
59 Diseo e Implementacin de Soluciones OLAP con Analysis Services SQL Server 2008

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

CIBERTEC
Utilizar SQL Server Integration Services para poblar el Datamart 60

8. Haga 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.

CIBERTEC
61 Diseo e Implementacin de Soluciones OLAP con Analysis Services SQL Server 2008

10. Haga un doble clic sobre Lookup Ciudades para editar sus propiedades. Se
abrir la ventana del Lookup Transformation Editor. En la parte izquierda
del editor seleccionar Connection, la propiedad OLE DB Connection
Manager debe apuntar al connection manager AWorks MartDemo. La tabla
de referencia debe ser dbo.Ciudades:

CIBERTEC
Utilizar SQL Server Integration Services para poblar el Datamart 62

11. Seleccione en la opcin 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 y en la ventana Input Output
Selection seleccione en Output: Lookup Match Output.

CIBERTEC
63 Diseo e Implementacin de Soluciones OLAP con Analysis Services SQL Server 2008

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
Seleccione AWorks MartDemo
Manager
Data Access Mode Table or view Fast load
Name of the table or the Pulse el botn New para crear una nueva tabla.
view 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

CIBERTEC
Utilizar SQL Server Integration Services para poblar el Datamart 64

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.

CIBERTEC
65 Diseo e Implementacin de Soluciones OLAP con Analysis Services SQL Server 2008

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

CIBERTEC
Utilizar SQL Server Integration Services para poblar el Datamart 66

Ejercicio 6: Crear package configurations.

1. En el paquete CopiarProductos.dtsx agregue una variable llamada


varPaqueteActivo, con las siguientes caractersticas:

Propiedad Valor
Name varPaqueteActivo
Scope CopiaProductos
Data Type Boolean
Value True

CIBERTEC
67 Diseo e Implementacin de Soluciones OLAP con Analysis Services SQL Server 2008

2. Haga un clic sobre la pestaa Control Flow en el entorno de diseo. En el


men SSIS, seleccione la opcin Package Configurations.

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.

CIBERTEC
Utilizar SQL Server Integration Services para poblar el Datamart 68

6. Pulse el botn Next. En la siguiente ventana, en la lista Objects, seleccione la


propiedad Value de la variable varPaqueteActivo.

7. Pulse el botn Next. En la ventana final del asistente, en la propiedad


Configuration name, escriba PaqueteActivado.

5. Pulse el botn Finish para finalizar el asistente. Pulse el botn Close para
cerrar el Package Configurations Organizer.

CIBERTEC
69 Diseo e Implementacin de Soluciones OLAP con Analysis Services SQL Server 2008

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 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 ScriptLanguage seleccione Microsoft Visual Basic
2008, luego en la propiedad ReadOnlyVariables, escriba varPaqueteActivo.
Esto indica que el script tiene acceso de slo lectura sobre la variable
varPaqueteActivo.

CIBERTEC
Utilizar SQL Server Integration Services para poblar el Datamart 70

9. Pulse el botn Edit 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:

CIBERTEC
71 Diseo e Implementacin de Soluciones OLAP con Analysis Services SQL Server 2008

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:

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.

CIBERTEC
Utilizar SQL Server Integration Services para poblar el Datamart 72

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

CIBERTEC
73 Diseo e Implementacin de Soluciones OLAP con Analysis Services SQL Server 2008

Ejercicio 7: Utilizar la transformacin Derived Column.

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


renmbrelo como Copiar Contactos.

CIBERTEC
Utilizar SQL Server Integration Services para poblar el Datamart 74

2. En el data flow Copiar Contactos, agrege un ADO NET Source con las
siguientes propiedades:

Propiedad Valor
Name Contactos
ADO.NET Connection Manager Adventure Works
Data access mode SQL command
SQL command text 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.

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:

CIBERTEC
75 Diseo e Implementacin de Soluciones OLAP con Analysis Services SQL Server 2008

Propiedad Valor
Derived Column Name NombreCompleto
Derived Column <add as new column>
Expression [LastName] + , + [FirstName]
Data Type Unicode string [DT_WSTR]

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:

Propiedad Valor
OLE DB Connection AWorks MartDemo
Manager
Data Access Mode Table or view fast load
Name of the table or Pulse el botn New, y cree una nueva tabla
the view con la siguiente definicin:
CREATE TABLE [ResumenContactos](
ContactID Integer,
NombreCompleto Nvarchar(150)
)

CIBERTEC
Utilizar SQL Server Integration Services para poblar el Datamart 76

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


establezca los siguientes mapeos de columnas:

7. Pulse el botn OK para aceptar los cambios. Guarde el paquete y ejectelo.


Compruebe los resultados.

CIBERTEC
77 Diseo e Implementacin de Soluciones OLAP con Analysis Services SQL Server 2008

3.8 La transformacin Fuzzy Lookup

Al igual que el Lookup, la transformacin Fuzzy Lookup compara los datos de


entrada con una tabla de equivalencias. Sin embargo, en el Fuzzy Lookup no es
necesario que las equivalencias sean exactas; basta con que exista cierta similitud
para que Integration Services decida que existe una correspondencia.

La transformacin Fuzzy Lookup crea columnas adicionales que almacenan


indicadores numricos de semejanza. Esta caracterstica permite que el
desarrollador del paquete establezca polticas de tipo si la semejanza es mayor
que 90%, la decisin tomada por Integration Services es correcta. Para las filas
restantes, el administrador tomar la decisin final.

CIBERTEC
Utilizar SQL Server Integration Services para poblar el Datamart 78

Ejercicio 8: Utilizar la transformacin Fuzzy Lookup.

En este ejercicio, se implementa el siguiente escenario: peridicamente, los


vendedores remiten informacin en archivos de texto. Esta informacin consiste en
el nombre de cada cliente, y la venta correspondiente. Sin embargo, es comn que
estos nombres contengan errores ortogrficos y de digitacin.

Adicionalmente, se tiene una tabla llamada Clientes, que contiene la informacin


de los clientes de la empresa. Este ejercicio consistir en construir un paquete de
Integration Services que lea la informacin de un archivo de texto, y efecte
correctamente el mapeo entre los clientes en este archivo y los clientes en la tabla
Clientes, basado en la similitud de sus valores. Por ejemplo, en esta tabla se
tienen los siguientes registros:

IdCliente NombreCliente
----------- --------------------------------------------------
2 Karina Palacios Ramos
3 Jessica Linares Hidalgo

En el archivo de ventas, la informacin viene en la siguiente forma:

Cliente, Ventas
Karina Palasios Ramos, 124500
Jesica Linares Hidalgo, 89076

Obsrvese que en el archivo de texto, el apellido en la primera fila es Palasios en


lugar de Palacios. En la segunda fila, el nombre es Jesica en lugar de Jessica.
El paquete que se construir tendr la capacidad de determinar el cliente correcto
para cada venta en el archivo de texto, con base en la similitud de su nombre con
los registros existentes en la tabla Clientes.

CIBERTEC
79 Diseo e Implementacin de Soluciones OLAP con Analysis Services SQL Server 2008

1. Agregue al proyecto un nuevo paquete llamado Demo Fuzzy Lookup.

2. En el paquete Demo Fuzzy Lookup agregue un nuevo connection manager,


basado en el data source AWorks MartDemo.

3. Agregue un nuevo Flat File Connection Manager con las siguientes


caractersticas:

Propiedad Valor
Name Ventas Sucio
Archivo Seleccione el archivo Ventas-sucio.txt
Text Qualifier Ninguno
Column names in the S
first data row

4. En el paquete, cree una tarea de tipo Data Flow Task. Asgnele el nombre
Limpiar Datos de Ventas.

5. Dentro de la tarea Limpiar Datos de Ventas, agregue un Flat File Source,


con las siguientes propiedades:

Propiedad Valor
Name Archivo de Ventas
Flat File Connection Seleccione el connection manager Ventas
Manager Sucio

6. Dentro de la tarea Limpiar Datos


de Ventas, agregue una
transformacin de tipo Fuzzy
Lookup, y establezca su nombre a
Corregir datos. Luego, seleccione
el origen Archivo de Ventas creado
en el paso anterior, y conecte su
flecha de salida con la
transformacin Corregir datos.

7. Haga doble clic sobre la


transformacin Corregir datos.
Seleccione la pestaa Reference
Table. En la propiedad OLE DB
connection manager, seleccione
el connection manager AWorks
MartDemo. En la propiedad
Reference table name, seleccione
la tabla Clientes. Al finalizar, la
pantalla debe tener la siguiente
apariencia:

CIBERTEC
Utilizar SQL Server Integration Services para poblar el Datamart 80

8. Seleccione la pestaa Columns. Observe que se muestran dos tablas: una


llamada Available Input Columns, que corresponde con el archivo de texto
Ventas-Sucio.txt; y otra llamada Available Lookup Columns, que
corresponde con la tabla Clientes. Siga los siguientes pasos:
a. Ligue la columna Cliente de Available Input Columns con la
columna NombreCliente de Available Lookup Columns.
b. En Available Input Columns, desmarque el check de la columna
Cliente.
c. En Available Lookup Columns, marque el check de las columnas
IdCliente y NombreCliente.

Al finalizar, la ventana debe tener la siguiente apariencia:

9. Pulse el botn OK.

10. A continuacin, agregue un OLE DB Destination, y establezca su nombre a


Ventas a Clientes. Seleccione la transformacin Corregir datos, y conecte
su flecha de salida con el destino Ventas a Clientes. Al finalizar, la ventana
Data Flow debe tener la siguiente apariencia:

CIBERTEC
81 Diseo e Implementacin de Soluciones OLAP con Analysis Services SQL Server 2008

11. Configure las propiedades del destino Ventas a clientes de la siguiente


manera:

Propiedad Valor
OLE DB Connection AWorks MartDemo
Manager
Data Access Mode Table or view fast load
Name of the table or Pulse el botn New, y cree una nueva tabla
the view con la siguiente definicin:
CREATE TABLE [VentasClientes] (
[Ventas] VARCHAR(50),
[IdCliente] INTEGER,
[NombreCliente] VARCHAR(50),
[_Similarity] REAL,
[_Confidence] REAL,
[_Similarity_Cliente] REAL
)

CIBERTEC
Utilizar SQL Server Integration Services para poblar el Datamart 82

12. En el destino Ventas a clientes establezca los siguientes mapeos de


columnas:

13. Guarde el paquete y ejectelo. Consulte los registros de la tabla


VentasClientes. Verifique que la limpieza de los datos provenientes del archivo
de texto Ventas-sucio.txt se ha efectuado correctamente. Observe los valores
de las columnas _Similarity, _Confidence y _Similarity_Cliente.

CIBERTEC
83 Diseo e Implementacin de Soluciones OLAP con Analysis Services SQL Server 2008

3.9. Agrupar y ordenar informacin: las transformaciones


Aggregate y Sort

Una necesidad comn durante las extracciones de datos consiste en efectuar


agregaciones (sumas, promedios, etc.), y ordenar la informacin. Este tipo de
operacin puede efectuarse desde la misma consulta de datos (usando operadores
como ORDER BY, GROUP BY y SUM). Sin embargo, existen varias circunstancias en
las cuales se necesitar efectuar estas operaciones durante el proceso de
transferencia de datos, y no en la consulta de origen:

Cuando el origen de datos no soporta operaciones de agregacin y


ordenamiento. Por ejemplo: archivos de texto, Excel.
Si se requiere agregar y ordenar datos que provienen de operaciones
previas sobre mltiples orgenes de datos.
El uso de operadores ORDER BY, GROUP BY, etc., hacen que la consulta
sobre el origen de datos sea muy lenta.

Las transformaciones Aggregate y Sort sirven para efectuar agregaciones y


ordenaciones sobre la data presente en el flujo de datos del paquete SSIS.

CIBERTEC
Utilizar SQL Server Integration Services para poblar el Datamart 84

Ejercicio 9: Utilizar las transformaciones Aggregate y


Sort.

En este ejercicio, se efectuar una agregacin sobre un archivo de texto que


contiene informacin como sta:

IdPlanta, IdProducto, IdCliente, Cantidad


1, 178, "87123490112",4
1, 179, "76130920114",2

4, 178, "87123490112",9
4, 179, "76130920114",5

Obsrvese que cada cliente tiene informacin en dos plantas (1 y 4). Se desea
obtener el total de la columna Cantidad para cada cliente. Por ejemplo, el total de
Cantidad para el primer cliente sera 13 (la suma de 4 y 9). La salida de datos
estar ordenada descendentemente por cantidad.

1. Agregue al proyecto un nuevo paquete llamado Demo Aggregate y Sort.

2. Agregue un nuevo Flat File Connection Manager con las siguientes


caractersticas:

Propiedad Valor
Name Despachos Detallados
Archivo Seleccione el archivo Detalle Despachos.txt
Text Qualifier (comilla doble)
Column names in the S
first data row

CIBERTEC
85 Diseo e Implementacin de Soluciones OLAP con Analysis Services SQL Server 2008

3. Contine la edicin del connection manager Despachos Detallados,


seleccionando la opcin Advanced en el panel izquierdo. Establezca las
siguientes propiedades para cada columna en el archivo de texto:

Columna Propiedades
IdPlanta DataType: four-byte signed integer [DT_I4]
IdProducto DataType: four-byte signed integer [DT_I4]
IdCliente DataType: string [DT_STR]
OutputColumnWidth: 11
Cantidad DataType: decimal [DT_DECIMAL]

4. Pulse OK para finalizar la edicin del connection manager Despachos


Detallados.

5. En el paquete, cree una tarea de tipo Data Flow Task. Asgnele el nombre
Agrupar y ordenar despachos por clientes.

6. Dentro de la tarea Agrupar y ordenar despachos por clientes, agregue un


Flat File Source, con las siguientes propiedades:

Propiedad Valor
Name Archivo de despachos
Flat File Connection Seleccione el connection manager
Manager Despachos Detallados

7. Dentro de la tarea Agrupar y ordenar despachos por clientes, agregue una


transformacin de tipo Aggregate, y establezca su nombre a Agrupar
cantidades. Luego, seleccione el origen Archivo de despachos creado en el
paso anterior, y conecte su flecha de salida con la transformacin Agrupar
cantidades.

8. Haga doble clic sobre la transformacin Agrupar cantidades para editar sus
propiedades. En la tabla Available Input Columns, marque el checkbox de
las columnas IdCliente y Cantidad. En la parte inferior del editor, establezca
el valor de Operation para la columna IdCliente a Group by. Establezca
tambin el valor de Operation para la columna Cantidad a Sum. Esto
significa que la transformacin obtendr la suma de la columna Cantidad,
agrupada por cada cliente. Al finalizar, el editor debe tener la apariencia que se
muestra a continuacin:

CIBERTEC
Utilizar SQL Server Integration Services para poblar el Datamart 86

9. Pulse el botn OK para finalizar la edicin de la transformacin Agrupar


cantidades.

10. A continuacin, agregue una transformacin de tipo Sort, y establezca su


nombre a Ordenar por cantidad. Seleccione la transformacin Agrupar
cantidades, y conecte su flecha de salida con la transformacin Ordenar por
cantidad.

11. Haga doble click sobre la transformacin Ordenar por cantidad para editar
sus propiedades.

12. En la tabla Available Input Columns, marque el checkbox a la izquierda de la


columna Cantidad. En la parte inferior del editor, establezca el valor de Sort
Type a descending para la columna Cantidad. Esto significa que esta
transformacin ordenar los datos descendentemente por la columna
Cantidad. Al finalizar, el aspecto del editor debe ser el siguiente:

CIBERTEC
87 Diseo e Implementacin de Soluciones OLAP con Analysis Services SQL Server 2008

13. Pulse el botn OK para finalizar la edicin de la transformacin. A continuacin,


agregue un Flat File Destination, y establezca su nombre a Archivo
ordenado. Seleccione la transformacin Ordenar por cantidad, y conecte su
flecha de salida con el destino Archivo ordenado. Al finalizar, la ventana Data
Flow debe tener la siguiente apariencia:

14. Haga doble clic sobre el destino Archivo ordenado para editar sus
propiedades. En el editor, pulse el botn New para crear un nuevo connection
manager. En la ventana Flat File Format, seleccione la opcin Delimited.
Pulse el botn OK.

CIBERTEC
Utilizar SQL Server Integration Services para poblar el Datamart 88

15. En la ventana de edicin del nuevo connection manager, establezca las


siguientes propiedades:

Propiedad Valor
Connection manager Despachos ordenados
name
File name Seleccione una ruta cualquiera. Establezca el
nombre del archivo a
DespachosOrdenados.txt
Column names in the S
first data row

Al finalizar, el editor debe quedar de la siguiente manera:

16. Pulse el botn OK. A continuacin, seleccione la opcin Mappings en el panel


izquierdo. Los mapeos de columnas deben quedar como se muestra a
continuacin:

CIBERTEC
89 Diseo e Implementacin de Soluciones OLAP con Analysis Services SQL Server 2008

17. Pulse el botn OK. Guarde el paquete y ejectelo. El paquete generar un


archivo de texto llamado DespachosOrdenados.txt, donde la informacin
estar sumarizada por cantidad y agrupada por cliente. Verifique los
resultados.

CIBERTEC
Utilizar SQL Server Integration Services para poblar el Datamart 90

3.10 Combinar filas a travs de la transformacin Merge Join

La transformacin Merge Join permite combinar dos filas provenientes de orgenes


de datos distintos en una sola fila, con base en una o ms columnas que tengan
valores comunes. Por ejemplo, pueden tenerse las siguientes filas en un archivo de
texto:

1, 67000
2, 78000

Donde la primera columna representa el ID del cliente, y la segunda columna


representa las ventas totales. Por otro lado, en una tabla de clientes se tienen las
siguientes filas:

IdCliente NombreCliente
1 Jorge Gonzles Barrera
2 Mara Flores Herrera

A travs de la transformacin Merge Join, las filas provenientes del archivo de


texto pueden combinarse con las filas de la tabla, con base en los valores de las
columnas que contienen el ID del cliente, para producir un nico conjunto de
resultados con la siguiente estructura:

IdCliente NombreCliente Ventas


1 Jorge Gonzles Barrera 67000
2 Mara Flores Herrera 78000

CIBERTEC
91 Diseo e Implementacin de Soluciones OLAP con Analysis Services SQL Server 2008

En este caso, las columnas IdCliente del archivo de texto y la tabla reciben el
nombre de Join Keys, debido a que son usadas para definir la regla de
combinacin.

La implementacin de una transformacin Merge Join tiene las siguientes


condiciones:

Las columnas que cumplen el papel de Join Keys deben tener el mismo tipo
de datos.

Las filas que ingresan a la transformacin Merge Join deben estar


ordenadas con base en los valores de las columnas que cumplen el papel de
Join Keys.

CIBERTEC
Utilizar SQL Server Integration Services para poblar el Datamart 92

Ejercicio 10: Utilizar la transformacin Merge Join.

En este ejercicio, se leern las filas existentes en un archivo de texto que contiene
informacin como sta:

IdSubCategoria, Ventas
1, 879765
2, 678596
3, 987432

Estas filas se combinarn con los registros provenientes de la tabla


Production.ProductSubCategory, que tienen la siguiente estructura:

ProductSubCategoryID Name
1 Mountain Bikes
2 Road Bikes
3 Touring Bikes

La salida producida por la transformacin Merge Join contendr el Id de la


subcategora, las ventas y el nombre de la subcategora. Se utilizar el Id de la
subcategora como condicin de combinacin (join key).

CIBERTEC
93 Diseo e Implementacin de Soluciones OLAP con Analysis Services SQL Server 2008

Siga los siguientes pasos:

1. En el proyecto AdventureWorks_SSIS_Demo1 cree un nuevo Data Source


con nombre AdventureWorks OLE DB, con las siguientes propiedades:

Propiedad Valor
Provider NATIVE OLE DB\SQL Native Client 10.0
Server Name localhost
Database Name AdventureWorks
Name Adventure Works OLE DB

2. Agregue al proyecto un nuevo paquete llamado Demo Merge Join.

3. Agregue un nuevo Flat File Connection Manager con las siguientes


caractersticas:

Propiedad Valor
Name Archivo de Ventas
Archivo Seleccione el archivo VentasSubCategoria.txt
Text Qualifier Ninguno
Column names in the S
first data row

4. Contine la edicin del connection manager Archivo de Ventas, seleccionando


la opcin Advanced en el panel izquierdo. Establezca las siguientes
propiedades para cada columna en el archivo de texto:

Columna Propiedades
IdSubCategoria DataType: four-byte signed integer [DT_I4]
Ventas DataType: decimal [DT_DECIMAL]

5. Pulse OK para finalizar la edicin del connection manager Archivo de Ventas.

6. Agregue al paquete un nuevo connection manager, basado en el data source


AdventureWorks OLE DB, creado en el paso (1).

7. En el paquete, cree una tarea de tipo Data Flow Task. Asgnele el nombre
Obtener ventas por subcategora.

8. Dentro de la tarea Obtener ventas por subcategora, agregue un Flat File


Source, con las siguientes propiedades:

Propiedad Valor
Name Ventas por Subcategoria
Flat File Connection Seleccione el connection manager Archivo de
Manager Ventas

CIBERTEC
Utilizar SQL Server Integration Services para poblar el Datamart 94

9. Dentro de la tarea Obtener ventas por subcategora, agregue un OLE DB


Source, con las siguientes propiedades:

Propiedad Valor
Name Subcategorias
OLE DB Connection Seleccione el connection manager
Manager AdventureWorks - OLEDB
Data Access Mode Table or view
Name of the table or [Production].[ProductSubCategory]
view
Columns Marque nicamente las columnas
ProductSubCategoryID y Name.

Al terminar, el diseador debe tener la siguiente apariencia:

10. En la tarea Obtener ventas por subcategora, agregue una transformacin de


tipo Sort, con nombre Ordenar ventas por IdSubCategoria. Luego, seleccione
el origen Ventas por subcategora, y una su salida con la transformacin Sort
que acaba de crear. Configure la transformacin Sort para ordenar los datos
ascendentemente por la columna IdSubCategoria.

11. Agregue otra transformacin


de tipo Sort, con nombre
Ordenar subcategorias por
ID. Luego, seleccione el
origen Subcategorias, y
una su salida con la
transformacin Sort que
acaba de crear. Configure la
transformacin Sort para
ordenar los datos
ascendentemente por la
columna
ProductSubCategoryID. Al
terminar, el diseador debe
tener la siguiente
apariencia:

CIBERTEC
95 Diseo e Implementacin de Soluciones OLAP con Analysis Services SQL Server 2008

12. Agregue una transformacin de tipo Merge Join. Luego, seleccione la


transformacin Sort llamada Ordenar ventas por IdSubCategoria, y una su
salida con la transformacin Merge Join que acaba de crear. Aparecer la
ventana Input Output Selection; establezca el valor de la propiedad Input a
Merge Join Left Input, como se muestra en la siguiente figura:

13. Pulse el botn OK. A continuacin, seleccione la transformacin Sort llamada


Ordenar subcategorias por ID y una su salida a la transformacin Merge
Join. Al finalizar, el diseador debe tener la siguiente apariencia:

14. Haga doble click sobre la transformacin Merge Join. Observe que la
condicin de join consiste en el enlace entre la columna IdSubCategoria
(proveniente del archivo de texto), y la columna ProductSubCategoryID
(proveniente de la tabla ProductSubCategory). Este enlace se ha creado
automticamente, debido a que estas son las dos nicas columnas que tienen
el mismo tipo de dato (Integer). Sin embargo, esta relacin puede ser
cambiada por el desarrollador, si es necesario.
En el editor, marque los check boxes que se encuentran a la izquierda de las
columnas ProductSubCategoryID, Name, y Ventas. Al finalizar, el editor
debe tener la siguiente apariencia:

CIBERTEC
Utilizar SQL Server Integration Services para poblar el Datamart 96

15. Pulse el botn OK para finalizar la edicin.

16. Agregue al paquete un nuevo Connection Manager, basado en el data source


AWorks MartDemo.

17. Agregue al paquete un destino de tipo OLE DB Destination, con nombre


Ventas. Luego, seleccione la transformacin Merge Join, y una su salida con
el destino que acaba de crear. Establezca las propiedades del destino Ventas
como se muestra a continuacin:

Propiedad Valor
OLE DB Connection AWorks MartDemo
Manager
Data Access Mode Table or view fast load
Name of the table or Pulse el botn New, y cree una nueva tabla
the view con la siguiente definicin:
CREATE TABLE [VentasSubcategoria] (
[ProductSubcategoryID] INTEGER,
[Name] NVARCHAR(50),
[Ventas] DECIMAL
)

CIBERTEC
97 Diseo e Implementacin de Soluciones OLAP con Analysis Services SQL Server 2008

18. Una vez finalizada la edicin del destino Ventas, el diseador debe tener la
siguiente apariencia:

19. Guarde el paquete y ejectelo. Compruebe los resultados haciendo una


seleccin de los registros en la tabla VentasSubCategoria de la base de datos
AWorks_MartDemo.

CIBERTEC
Utilizar SQL Server Integration Services para poblar el Datamart 98

3.11 Bifurcar un flujo de datos: la transformacin Conditional


Split

La transformacin Conditional Split permite bifurcar un flujo de datos, con base


en condiciones lgicas. Por ejemplo, es posible que se requiera escribir las filas
provenientes de un nico flujo de datos en dos o ms destinos distintos,
dependiendo de los valores de ciertas columnas en cada fila.

En una transformacin Conditional Split, el desarrollador puede definir varios


outputs, cada uno de los cuales tiene asignada una cierta condicin lgica. Por
ejemplo, al leer un archivo de ventas por pas, se puede hacer que las filas cuyo ID
de pas sea Per se escriban en una tabla de SQL Server, y las filas
correspondientes con otros pases se escriban en una hoja de Excel.

CIBERTEC
99 Diseo e Implementacin de Soluciones OLAP con Analysis Services SQL Server 2008

Ejercicio 11: Utilizar la transformacin Conditional Split.

En este ejercicio, se leern las filas existentes en un archivo de despachos que


contiene informacin como sta:

IdPlanta, IdProducto, IdCliente, Cantidad


1, 178, "87123490112",4
1, 179, "76130920114",2
1, 164, "28761209333", 10
4, 178, "87123490112",4
4, 179, "76130920114",5
4, 164, "28761209333", 9

Este flujo de datos ser bifurcado con base en la siguiente condicin: si el valor de
IdPlanta es 1, los datos se escribirn en una tabla llamada DespachosLima. Si el
IdPlanta es 4, los datos se escribirn en la tabla DespachosTrujillo. Siga los
siguientes pasos:

1. En el proyecto AdventureWorks_SSIS_Demo1 cree un nuevo paquete con


nombre Demo Conditional Split.

2. Agregue un nuevo Flat File Connection Manager con las siguientes


caractersticas:

CIBERTEC
Utilizar SQL Server Integration Services para poblar el Datamart 100

Propiedad Valor
Name Archivo de Despachos
Archivo Seleccione el archivo DetalleDespachos.txt
Text Qualifier (comilla doble)
Column names in the S
first data row

3. Contine la edicin del connection manager Archivo de Despachos,


seleccionando la opcin Advanced en el panel izquierdo. Establezca las
siguientes propiedades para cada columna en el archivo de texto:

Columna Propiedades
IdPlanta DataType: four-byte signed integer [DT_I4]
IdProducto DataType: four-byte signed integer [DT_I4]
IdCliente DataType: string [DT_STR]
OutputColumnWidth: 11
Cantidad DataType: decimal [DT_DECIMAL]

4. Pulse OK para finalizar la edicin del connection manager Archivo de


Despachos.

5. En el paquete, cree una tarea de tipo Data Flow Task. Asgnele el nombre
Transferir Despachos.

6. Dentro de la tarea Transferir Despachos, agregue un Flat File Source, con


las siguientes propiedades:

Propiedad Valor
Name Despachos
Flat File Connection Seleccione el connection manager Archivo de
Manager Despachos

7. A continuacin, en la tarea Transferir Despachos agregue una transformacin


de tipo Conditional Split con nombre Repartir despachos. Luego, seleccione
el origen Despachos creado en el paso anterior, y una su salida con la
transformacin Repartir despachos.

8. Haga doble click sobre la transformacin Repartir despachos. En el editor de


la transformacin, cree los siguientes outputs:

Nombre Output Condicin


Planta Lima [IdPlanta] == 1
Planta Trujillo [IdPlanta] == 4

CIBERTEC
101 Diseo e Implementacin de Soluciones OLAP con Analysis Services SQL Server 2008

9. Pulse el botn OK para confirmar los cambios.

10. Agregue al paquete un nuevo connection manager basado en el data source


AWorks MartDemo

11. En la tarea Transferir despachos, agregue un destino de tipo OLE DB


Destination con nombre Despachos Lima. Luego, seleccione la
transformacin Repartir despachos y una su salida con el destino Despachos
Lima. Se abrir la ventana Input Output Selection; en la propiedad
Output, seleccione Planta Lima, como se muestra a continuacin:

CIBERTEC
Utilizar SQL Server Integration Services para poblar el Datamart 102

20. Pulse el botn OK para aceptar los cambios. Luego, haga doble click sobre el
destino Despachos Lima, y establezca sus propiedades como se muestra a
continuacin:

Propiedad Valor
OLE DB Connection AWorks MartDemo
Manager
Data Access Mode Table or view fast load
Name of the table or Pulse el botn New, y cree una nueva tabla
the view con la siguiente definicin:
CREATE TABLE [DespachosLima] (
[IdPlanta] INTEGER,
[IdProducto] INTEGER,
[IdCliente] VARCHAR(11),
[Cantidad] DECIMAL
)

12. Finalice la edicin del destino Despachos Lima. A continuacin, en la tarea


Transferir despachos, agregue un nuevo destino de tipo OLE DB
Destination con nombre Despachos Trujillo. Luego, seleccione la
transformacin Repartir despachos y una su salida con el destino Despachos
Trujillo. Se abrir la ventana Input Output Selection; en la propiedad
Output, seleccione Planta Trujillo, como se muestra a continuacin:

13. Pulse el botn OK para aceptar los cambios. Luego, haga doble click sobre el
destino Despachos Trujillo, y establezca sus propiedades como se muestra a
continuacin:

Propiedad Valor
OLE DB Connection AWorks MartDemo
Manager
Data Access Mode Table or view fast load
Name of the table or Pulse el botn New, y cree una nueva tabla
the view con la siguiente definicin:
CREATE TABLE [DespachosTrujillo] (
[IdPlanta] INTEGER,
[IdProducto] INTEGER,
[IdCliente] VARCHAR(11),
[Cantidad] DECIMAL
)

CIBERTEC
103 Diseo e Implementacin de Soluciones OLAP con Analysis Services SQL Server 2008

14. Al finalizar, el diseador debe tener la siguiente apariencia:

15. Guarde el paquete y ejectelo. Luego, compruebe los resultados ejecutando


consultas de seleccin sobre las tablas DespachosLima y DespachosTrujillo
de la base de datos AWorks_MartDemo. Verifique que a la tabla
DespachosLima slo han llegado registros cuyo IdPlanta es 1, mientras que la
tabla DespachosTrujillo ha sido poblado por los registros cuyo IdPlanta es 4.

CIBERTEC
Utilizar SQL Server Integration Services para poblar el Datamart 104

3.12 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 2008.

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

CIBERTEC
105 Diseo e Implementacin de Soluciones OLAP con Analysis Services SQL Server 2008

La distribucin 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.

CIBERTEC
Utilizar SQL Server Integration Services para poblar el Datamart 106

Ejercicio 12: Distribuir el paquete con el Deployment


Utility.

En el siguiente ejercicio, desplegaremos los paquetes desarrollados, hacia el


Servidor SSIS utilizando el wizard de despliegue. Luego del despliegue
ejecutaremos los paquetes en el servidor.

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 click derecho, y seleccione
Properties.

CIBERTEC
107 Diseo e Implementacin de Soluciones OLAP con Analysis Services SQL Server 2008

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:

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.

CIBERTEC
Utilizar SQL Server Integration Services para poblar el Datamart 108

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.

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
Package path /

CIBERTEC
109 Diseo e Implementacin de Soluciones OLAP con Analysis Services SQL Server 2008

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.

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.

CIBERTEC
Utilizar SQL Server Integration Services para poblar el Datamart 110

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>

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:

CIBERTEC
111 Diseo e Implementacin de Soluciones OLAP con Analysis Services SQL Server 2008

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.

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.

CIBERTEC
Utilizar SQL Server Integration Services para poblar el Datamart 112

3.13 Automatizacin de la ejecucin de los paquetes SSIS

Una vez desplegados, los paquetes SSIS pueden ser ejecutados bajo demanda. Sin
embargo, en la mayora de los casos, los paquetes deben ejecutarse de acuerdo
con una programacin peridica, sin intervencin de ningn usuario.

La automatizacin de la ejecucin de paquetes se efecta a travs del servicio SQL


Server Agent. Este servicio es responsable por todas las tareas automatizadas que
deben correr en el servidor de datos. Para programar la ejecucin peridica de un
paquete de Integration Services, deben seguirse los siguientes pasos:

Crear un trabajo (job) en el Agente de SQL Server 2008.


Agregar al trabajo un paso (step) de tipo Integration Services Package.
Seleccionar el paquete que se desea ejecutar, y los parmetros de ejecucin
del paquete (orgenes de datos, archivos de configuracin, etc.).
Agregar al trabajo una nueva programacin (schedule).

Debe tenerse en cuenta que, para que los trabajos se ejecuten peridicamente, es
necesario que el servicio SQL Server Agent est iniciado.

En el siguiente ejercicio, procederemos a automatizar la ejecucin de paquetes


SSIS haciendo uso de Jobs SQL Server 2008.

CIBERTEC
113 Diseo e Implementacin de Soluciones OLAP con Analysis Services SQL Server 2008

Ejercicio 13: Programar la ejecucin de un paquete de


SQL Server Integration Services.

1. A travs del SQL Server Management Studio, conctese con el servicio


Database Engine, usando autenticacin Windows. Expanda el servidor.
Expanda el nodo SQL Server Agent. Haga clic derecho en el folder Jobs, y
seleccione la opcin New Job, como se muestra a continuacin:

2. Aparecer la ventana de creacin de un nuevo job. Establezca la propiedad


Name del job a Ejecutar paquete SSIS. Luego, en el panel izquierdo,
seleccione la opcin Steps.

CIBERTEC
Utilizar SQL Server Integration Services para poblar el Datamart 114

3. Pulse el botn New, que se encuentra en la parte inferior de la ventana.


Aparecer la ventana New Job Step. Establezca las siguientes propiedades:

Propiedad Valor
Name Ejecutar carga de productos
Type SQL Server Integration Services Package
Package source SSIS Package Store
Server Localhost
Package Pulse el botn Ellipsis ( ) y seleccione el
paquete CopiaProductos.

Al finalizar, el editor debe tener la siguiente apariencia:

4. Pulse el botn OK. A continuacin, en el panel izquierdo del editor de trabajos,


seleccione la opcin Schedules. Es posible que se abra la siguiente ventana:

En este caso, pulse el botn Yes.

CIBERTEC
115 Diseo e Implementacin de Soluciones OLAP con Analysis Services SQL Server 2008

5. Para crear una nueva programacin, pulse el botn New que se encuentra en
la parte inferior del editor. Cree una nueva programacin con las siguientes
propiedades:

Propiedad Valor
Name Diario
Schedule Type Recurring
Occurs Daily
Recurs every 1 da
Occurs once at Elija una hora tres o cuatro minutos ms
tarde que la hora indicada por el reloj interno
de su computadora

Al finalizar, el editor de programaciones debe tener la siguiente apariencia:

6. Pulse el botn OK para finalizar la edicin de la programacin.

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

8. Para monitorear la ejecucin del trabajo, en el Object Explorer seleccione el


trabajo Ejecutar paquete SSIS, haga clic derecho y seleccione la opcin View
History.

CIBERTEC
Utilizar SQL Server Integration Services para poblar el Datamart 116

9. En la ventana de historial, observe las ejecuciones del paquete (si an no se ha


cumplido el tiempo de arranque de la programacin, ver esta ventana vaca.
Refresque la ventana cuando la programacin establecida en el paso (5) se
haya cumplido.

CIBERTEC

Anda mungkin juga menyukai