Está en la página 1de 80

1

Poblar el Data Mart

Objetivos:

Identificar los procesos para poblar un Data Mart.


Utilizar SSIS para poblar el Data Mart:

Temas:
1. Poblar el data warehouse
2. Herramientas para implementar procesos ETL
3. Crear proyectos SSIS a travs del Business Intelligence
Development Studio.
a.
Crear paquetes
b.
Crear tareas de flujo de datos
c.
Crear componentes de script .Net.
d.
Definir conversiones de datos, lookups y
columnas derivadas
e.
Agregar archivos de configuracin a los
proyectos SSIS
f.
Efectuar la distribucin de los paquetes SSIS

Captulo 3

Data Warehouse & Olap

Data Warehouse & Olap

1.

Poblar el Data Mart

Una vez definida la base de datos STAR o SNOWFLAKE para el Data


Mart, se debe efectuar la poblacin con la informacin de los
sistemas transaccionales. Este proceso puede alcanzar niveles de
complejidad muy altos.
Los procesos que pueblan el Data Mart se denominan procesos ETL
(Extraction, Transformation and Loading). Estos procesos extraen la
data de los sistemas transaccionales, la transforman para asegurar la
uniformidad y consistencia de los datos, y cargan dicha informacin
en el Data Mart.

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


presentacin de los datos ledos desde los sistemas transaccionales.
La siguiente figura muestra las operaciones de transformacin que
pueden realizarse.

Data Warehouse & Olap

2.

Herramientas
procesos ETL

para

SQL Server 2000 ofrece mltiples


implementacin de los procesos ETL:

implementar

herramientas

para

la

Transact SQL
Consultas distribuidas
El utilitario BCP y la instruccin BULK INSERT
Data Transformation Services (DTS)

La eleccin de la herramienta especfica a utilizar depende del


formato de los datos en los sistemas transaccionales. Por ejemplo, la
informacin proveniente de un sistema transaccional que funciona
con SQL Server 2000 puede ser transferida directamente a travs de
procedimientos almacenados de Transact SQL. En cambio, la
informacin proveniente de un sistema en Clipper (tablas dbf)
deber ser transferida a travs de paquetes DTS.
2.1

Transact SQL

Puede emplearse la sentencia SELECT para poblar el Data Mart a


partir de sistemas transaccionales cuya informacin est almacenada
en bases de datos SQL Server 2000.
La figura muestra la utilizacin de una sentencia SELECT que
concatena las columnas Paterno y Nombre de la tabla Cliente, y
almacena el resultado en la tabla Resumen_Cliente:

Data Warehouse & Olap

Obsrvese la siguiente sentencia Transact SQL:


Select Distinct Date=(S.ShippedDate),
DayOfWeek=DateName(dw, S.Shipped Date),
Month = DatePart(mm,S.ShippedDate),
Year= DatePArt(yy, S.ShippedDate),
Quarter = DatePArt(qq,S.ShippedDate),
DayOfYear=DatePart(dy, S.ShippedDate),
Holiday = N,
Weekend = case DatePart(dw, ShippedDate)
When (1) then Y
When (7) then Y
Else N
End,
YearMonth=DateName(month,
S.ShippedDate)
+
-
+
DateName(year, S.ShippedDate),
WeekOfYear=DatePArt(wk,S.ShippedDate)
From Orders S Where S.ShippedDate IS NOT NULL
La sentencia mostrada extrae y formatea informacin de fecha
proveniente de la tabla Orders.
2.2

Consultas Distribuidas

Data Warehouse & Olap

Las consultas distribuidas permiten consolidar la informacin a


partir de mltiples servidores de datos. A travs de SQL Server
2000, se pueden crear linked servers (servidores enlazados),
sobre los cuales se pueden efectuar consultas Transact SQL. La
comunicacin con los servidores enlazados se establece a travs de
proveedores OLEDB; por tanto, cualquier origen de datos accesible
por OLEDB puede ser configurado como un servidor enlazado.
El siguiente ejemplo muestra una consulta distribuida Transact
SQL sobre un origen de datos Access (obsrvese la utilizacin de la
funcin OPENROWSET):
Use Demo
Insert Into HistoricoPedidos
Select a.* From OPENROWSET(Microsoft.Jet.OLEDB.4.0,
C:\MSOffice\Access\Samples\Northwind.mdb;
nuevocliente;password, Pedidos)
La siguiente consulta muestra cmo utilizar la sentencia SELECT
para acceder un servidor enlazado llamado ContaServer y extraer
informacin de la tabla Proveedores, ubicada en la base de datos
Ventas:
Use Demo
Select NomCliente, Telefono
INTO ListaFono
FROM ContaServer.Ventas.dbo.Proveedores
2.3 El utilitario BCP y la sentencia BULK INSERT
El utilitario BCP y la sentencia BULK INSERT permiten cargar datos
provenientes de un archivo de texto hacia una base de datos SQL
Server 2000.

Data Warehouse & Olap

Tambin puede efectuarse el camino inverso; es decir, leer


informacin de una tabla SQL Server y volcarla en un archivo de
texto.
El utilitario BCP debe ejecutarse desde la lnea de comandos del
sistema operativo. La sentencia BULK INSERT se invoca desde una
sesin de SQL Server 2000, que puede ser iniciada desde el Query
Analizer. La siguiente figura muestra ejemplos de utilizacin de estas
herramientas de carga:

2.4

SQL Server Integration Services (SSIS)

Permite crear paquetes de transformacin de datos. Cada paquete


consta de uno o ms pasos, que extraen la data del origen, la
transforman y la mueven hacia su destino.
Los servicios de transformacin se conectan con las fuentes de datos
a travs de diversos conectores (proveedores .Net, proveedores .Net
para OLE DB, y proveedores OLE DB nativos). Esta caracterstica
convierte a los paquetes SSIS en una herramienta muy til para
implementar procesos ETL que trabajan con informacin procedente
de diversos orgenes.

3.

La
arquitectura
Integration Services (SSIS)

de

SQL

Server

Data Warehouse & Olap

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.
3.1
Elementos de SSIS
SSIS est constituido por varios elementos que permiten construir
aplicaciones de carga y transformacin de datos altamente complejas
y flexibles. A continuacin se presentan los elementos bsicos de
SSIS:

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.
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.
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.
Control flow: Permiten 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.
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.
Package: Todas las tareas y contenedores estn contenidos
dentro de un package (paquete) de SSIS. Un proyecto SSIS
puede contener varios paquetes.

La tarea Data Flow Task permite efectuar transferencias y


transformaciones de datos. SSIS implementa diversos tipos de
transformaciones: conversiones de tipos de datos, uso de tablas de
lookup, agregaciones, etc. A travs de estas transformaciones, la
informacin puede ser trabajada antes de llegar a su destino. Cada
transformacin posee columnas de entrada (inputs) y columnas de
salida (outputs).
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.

Data Warehouse & Olap

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 2005 > SQL Server Business Intelligence
Development Studio. Se abrir el entorno de desarrollo de
.Net.
En el men File, seleccione New y luego seleccione Project.
Aparecern los distintos tipos de proyecto que se pueden crear.

2.

Seleccione la plantilla Integration Services Project. En la casilla


Location, seleccione la ruta donde desea crear el proyecto. En la
casilla Name, escriba AdventureWorks_SSIS_Demo1. La
ventana debe quedar como se muestra en la figura anterior. Presione
el botn OK para crear el proyecto.
3.

Aparecer el entorno de desarrollo de proyectos de Integration


Services. En la ventana del Solution Explorer, observe los
elementos constituyentes del proyecto: Data Sources, Data
Source Views, SSIS Packages y Miscellaneous.

Data Warehouse & Olap

4.

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


Solution Explorer, seleccione el nodo Data Sources, d un clic
derecho y seleccione New Data Source:

5.

Aparecer la pantalla de bienvenida del asistente para la


definicin de orgenes de datos (Data Source Wizard). Presione
el botn Next. Aparecer la ventana de definicin de conexiones
con datos.

Data Warehouse & Olap

6.

10

Para definir una nueva conexin con datos, presione el botn


New. Aparecer la ventana del Connection Manager.
Seleccione el conector .Net Providers\SqlClient Data
Provider, el servidor local y la base de datos AdventureWorks,
como se muestra en la siguiente figura:

Data Warehouse & Olap

11

7.

Presione el botn OK. A continuacin, presione el botn Next.


Aparecer la ventana final del asistente.

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

Data Warehouse & Olap

12

tablas en el origen de datos. Para esto, seleccione el nodo Data


Source Views en el Solution Explorer, haga un clic derecho y
seleccione New Data Source View:

9.

Aparecer la ventana inicial del asistente de definicin de


vistas de datos (Data Source View Wizard). Presione el botn
Next. La ventana siguiente mostrar los orgenes de datos
definidos en el proyecto. Seleccione el data source Adventure
Works.

10.

Presione el botn Next. La siguiente ventana permite


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

Data Warehouse & Olap

13

11.

Presione el botn Next. Aparecer la ventana final del


asistente.

12.

Presione el botn Finish para finalizar el asistente. Observe


que el entorno de diseo muestra la estructura de las tablas
seleccionadas en el Data Source View.

Data Warehouse & Olap

14

13.

La base de datos AdventureWorks ser utilizada como origen


de datos. En este ejercicio, el destino de datos ser una nueva
base de datos llamada AWorks_MartDemo. Esta nueva base de
datos ser creada a travs del Server Explorer del entorno de
desarrollo de Integration Services. En el men View, seleccione
la opcin Server Explorer.

14.

La ventana del Server Explorer se abrir en el lado izquierdo


del entorno de desarrollo. Seleccione el nodo Data
Connections, haga un clic derecho y seleccione Create New
SQL Server Database.

Data Warehouse & Olap

15.

15

En la ventana de creacin de bases de datos, ingrese la


informacin que se muestra en la siguiente figura:

Pulse el botn OK. Esto crear la base de datos


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

Data Warehouse & Olap

16

Finalmente, la ventana del Solution Explorer debe quedar de


la siguiente manera:

19.

El siguiente paso es la definicin del paquete de Integration


Services para implementar la lgica de la transformacin de
datos. Los paquetes de Integration Services se ubican en el nodo
SSIS Packages del Solution Explorer. Obsrvese que en el
proyecto se ha agregado automticamente un paquete llamado
Package.dtsx. Haga un clic derecho sobre el paquete y
seleccione la opcin Delete:

Data Warehouse & Olap

17

Pulse el botn OK en la ventana de confirmacin para


confirmar la eliminacin del paquete.
21. A continuacin se crear el primer paquete SSIS. Para esto,
seleccione el nodo SSIS Packages en el Solution Explorer,
haga un clic derecho y seleccione la opcin New SSIS Package:
20.

Data Warehouse & Olap

18

22.

Obsrvese que se ha creado un nuevo paquete llamado


Package1.dtsx. Para renombrarlo, haga un clic derecho sobre el
paquete en el Solution Explorer y seleccione la opcin
Rename:

23.

Renombre el paquete como CopiaProductos.dtsx, y presione


la tecla Enter. Se mostrar la siguiente ventana de confirmacin:

Pulse el botn Yes. Esto cambiar tanto el nombre fsico del


archivo del paquete, como el nombre del paquete en el entorno
de desarrollo.
24.

El siguiente paso es definir las tareas de transformacin. En


Integration Services, estas tareas estn representadas en los
Tasks, cada uno de los cuales puede efectuar una labor
especfica de procesamiento o transformacin de datos. Estas
tareas pueden visualizarse a travs de la caja de herramientas
(Toolbox) del entorno de desarrollo. Para visualizar el Toolbox,
expanda el men View, y seleccione la opcin Toolbox:

Data Warehouse & Olap

25.

19

Se abrir el Toolbox de SQL Server Integration Services. La


siguiente figura muestra una vista parcial de la caja de
herramientas:

Data Warehouse & Olap

20

26.

En el toolbox, seleccione la tarea Data Flow Task y arrstrela


hacia la ventana de diseo del paquete (en la parte central del
entorno de desarrollo). Se crear una tarea llamada Data Flow
Task. El entorno de desarrollo quedar de la siguiente manera:

27.

A continuacin, se renombrar la tarea de transformacin.


Para esto, seleccione la tarea Data Flow Task en el diseador
del paquete, y cambie su propiedad Name a Copiar productos
en la ventana de propiedades (para abrir la ventana de
propiedades, expanda el men View y seleccione la opcin
Properties Window. La ventana de propiedades se abrir en la
parte inferior derecha, debajo del Solution Explorer).

Data Warehouse & Olap

21

28.

Cada tarea de flujo de datos consiste en varias transferencias


de informacin entre orgenes de datos. A continuacin, se
definirn los flujos de informacin al interior de la tarea Copiar
productos. Para esto, haga un doble clic sobre la tarea Copiar
productos. Se abrir en el entorno de desarrollo la pestaa
Data Flow.

29.

Cada paquete posee un conjunto de administradores de


conexin (Connection Managers). Los connection managers
definen los posibles orgenes y destinos de datos al interior del
paquete, y pueden crearse a partir de los data sources

Data Warehouse & Olap

22

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:

30.

Aparecer
disponibles:

una

ventana

que

muestra

los

data

sources

31.

Seleccione el data source Adventure Works y pulse el botn


OK. Repita los pasos (30) y (31) para crear otro connection
manager que apunte hacia el data source AWorks MartDemo.

Data Warehouse & Olap

23

32.

En el Toolbox, expanda la pestaa Data Flow Sources,


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

33.

Haga doble clic sobre el origen Consulta Adventure Works.


Aparecer el editor de propiedades del Data Reader Source.
Seleccione la pestaa Connection Managers. En la columna
Connection Manager, seleccione el data source Adventure
Works.

Data Warehouse & Olap

34.

24

Seleccione la pestaa Component Properties. En el grupo


Custom Properties, seleccione la fila SqlCommand, y pulse el
botn
.

Data Warehouse & Olap

25

35.

Aparecer una ventana que permite escribir una sentencia SQL


para obtener un conjunto de filas. En dicha ventana, escriba la
siguiente sentencia:

36.

Pulse el botn OK. Seleccione la pestaa Column


Mappings, y observe que las columnas de la consulta han sido
detectadas:

37.

Pulse el botn OK. Con estos pasos, se ha completado la


creacin de un origen de registros, basado en una consulta SQL.

Data Warehouse & Olap

26

38.

En el Toolbox, expanda la pestaa Data Flow Destinations,


seleccione el tem OLE DB Destination y arrstrelo sobre la
ventana de diseo. Se crear un nuevo destino de registros
llamado OLE DB Destination. Seleccinelo y, en la ventana de
propiedades, cambie su propiedad Name a Destino AWorks
MartDemo. La pantalla debe quedar de la siguiente manera:

39.

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

40.

Seleccione la flecha verde que sale de Consulta Adventure


Works, y arrstrela con el mouse sobre el destino Destino
AWorks MartDemo. Esta accin define el flujo de los datos
entre el origen y el destino de registros. Al finalizar, la ventana
debe mostrarse de la siguiente forma:

Data Warehouse & Olap

27

41.

Haga doble clic sobre el destino Destino AWorks MartDemo.


Se abrir el editor de propiedades del destino de registros. La
ventana debe quedar de la siguiente manera:

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

Data Warehouse & Olap

28

SQL escrita en el paso 35) y el destino de registros (la tabla


ResumenProductos):

44.

Pulse el botn OK para aceptar los cambios y finalizar la


configuracin del destino de registros.

45.

Para depurar el paquete, pulse el botn


en la barra de
herramientas del entorno de desarrollo, o seleccione la opcin
Start Debugging en el men Debug. Al finalizar la ejecucin,
el entorno de desarrollo mostrar la transferencia de datos en la
siguiente forma:

Data Warehouse & Olap

46.

3.2

29

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.
Definir precedencias

En el ejercicio anterior, se cre una tarea de flujo de datos para


transferir datos hacia la tabla ResumenProductos. Es posible que,
antes de efectuar la transferencia de los registros, se desee limpiar
esta tabla a travs de una sentencia DELETE o TRUNCATE. SSIS
tiene una tarea llamada Execute SQL Task, a travs de la cual se
puede ejecutar un batch SQL. Bastar con agregar esta tarea al
paquete, y escribir en ella la sentencia SQL que elimine la
informacin de la tabla ResumenProductos.
Sin embargo, al ejecutar el paquete, es posible que la tarea de
eliminacin de los registros se efecte despus de la transferencia
de registros. Como resultado, al finalizar el paquete, la tabla
ResumenProductos estar vaca. Por tanto, es necesario implementar
algn mecanismo de precedencia que garantice que la tarea SQL se
efectuar antes de la transferencia de datos.
SSIS permite conectar dos tareas a travs de una precedencia. De
esta forma, se garantiza que la segunda tarea se efectuar despus
de la primera. A travs de las precedencias, se puede determinar el

Data Warehouse & Olap

30

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.

1.

Ejercicio 2: Definir precedencias.


En
el
entorno
de
desarrollo,
en
el
paquete
CopiaProductos.dtsx, regrese a la pestaa Control Flow. En
el Toolbox, seleccione el tem Execute SQL Task, y arrstrelo
sobre la ventana de diseo. La pantalla debe quedar de la
siguiente manera:

Data Warehouse & Olap

2.
3.

4.

31

En la ventana de propiedades, seleccione la propiedad Name


de la tarea que acaba de crear, y cmbiela por Borrar Datos.
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:

A continuacin, seleccione la propiedad SQLStatement, y


presione el botn
. Escriba la siguiente sentencia SQL:

Data Warehouse & Olap

5.
6.

32

Pulse el botn OK para confirmar la sentencia escrita. Pulse


nuevamente el botn OK para aceptar los cambios en la tarea.
En la ventana de diseo, seleccione la tarea Borrar datos.
Seleccione la flecha verde que sale de esta tarea, y arrstrela
sobre la tarea Copiar productos. Esto define una precedencia
en el flujo de control del paquete, que establece que la tarea
Borrar datos debe ejecutarse antes de la tarea Copiar
productos:

Data Warehouse & Olap

7.

33

Ejecute el paquete para probar su funcionamiento.

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
2.0, lo cual permite crear paquetes muy complejos y personalizados.
Por ahora, el nico lenguaje soportado es Visual Basic .Net. Existen
tres tipos de componentes de script:

Source Components: No poseen columnas de input. A travs


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

En el siguiente ejercicio, se extraer informacin de un archivo de


texto, cuya ltima columna contiene cdigos de regiones: 1, 2, 3 y 4.
Dichos cdigos sern transformados por un script component, para
ser grabados en el destino con sus equivalencias en ingls: Eastern,
Western, Northern y Southern.

Ejercicio 3: Escribir una transformacin personalizada a travs


del Script Component.

1. Abra el paquete CopiaProductos.dtsx. Agregue una nueva tarea


de tipo Data Flow Task, y asgnele el nombre Copiar
territorios. A continuacin, haga un doble clic sobre la tarea
Copiar territorios para definir el detalle del flujo de datos.
2. En la pestaa Connection managers, agregue una nueva
conexin de tipo Flat File. Para esto, haga un doble clic sobre
cualquier lugar de la ventana Connection Managers, y
seleccione la opcin New Flat File Connection:

Data Warehouse & Olap

34

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


Establezca los siguientes valores para las opciones de esta
ventana:
Opcin
Connection
name
Descripcin

Valor
manager Archivo de territorios

Informacin de territorios en formato de


texto plano
File name
Utilice el botn Browse para ubicar el
archivo Territorios.txt
Delimited
Format
Text qualifier
" (comillas dobles)
Column names in the Desmarcado
first data row

Data Warehouse & Olap

35

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.

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

Data Warehouse & Olap

ventana de diseo.
Territorios.

36

Renombre

el

origen

resultante

como

7. Haga doble clic sobre Archivo de territorios. Se abrir la


ventana Flat File Source Editor. En la propiedad Flat file
connection manager, seleccione Archivo de territorios.

8. En el panel izquierdo de la ventana Flat File Source Editor,


seleccione la opcin Columns. Observe que cada columna del
archivo de texto ha sido reconocida.

Data Warehouse & Olap

37

9. Pulse el botn OK para finalizar la configuracin del origen del


Flat File Source.
10. En
el
ToolBox,
expanda
la
pestaa
Data
Flow
Transformations. Seleccione el tem Script Component y
arrstrelo sobre la ventana de diseo. Se abrir una ventana que
permite determinar el tipo de componente que se desea crear.
Elija la opcin Transformation:

11. Pulse el botn OK. Renombre la transformacin como


Transformacin de regiones. A continuacin, oonecte el origen

Data Warehouse & Olap

38

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

Data Warehouse & Olap

39

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
Name
Data Type
Length

Valor
Region
Seleccione STRING [DT_STR]
10

Data Warehouse & Olap

40

15. Seleccione la opcin Script del lado izquierdo de la ventana de


propiedades, y presione el botn Design Script:

Data Warehouse & Olap

41

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.

Data Warehouse & Olap

42

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:

19.Haga doble click sobre el destino Tabla de territorios para abrir


su ventana de propiedades. Seleccione la opcin Connection
Manager del lado izquierdo de la pantalla, y establezca los
siguientes valores para las propiedades:
Opcin
OLE DB Connection
Manager
Data Access Mode
Name of the table or
the view

Valor
Seleccione AWorks MartDemo
Table or view Fast load
Pulse el botn New para crear una nueva
tabla. Escriba la siguiente sentencia SQL:
CREATE TABLE Territorios
(ZipCode char(5),
Territorio varchar(50),
Region varchar(10))

20.Seleccione la opcin Mappings del lado izquierdo de la pantalla.


Establezca los siguientes mapeos entre las columnas definidas

Data Warehouse & Olap

43

en Transformacin de regiones y el destino Tabla de


territorios:
Column 0
Column 1
Region

ZipCode
Territorio
Region

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


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

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 tareasSequence
agrupadas en contenedores:For Each Loop
Script
Task

Container

Container

Data Flow Task 1


Data Flow Task 3
Data Flow Task 2

Data Warehouse & Olap

44

Como puede observarse en la figura, resulta ms sencillo representar


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

3.5

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

Data Warehouse & Olap

45

contenedor For Each Loop, ser visible slo en las tareas que se
encuentren en dicho contenedor.

Ejercicio 4: Definir variables en el paquete. Uso del contenedor


For Each Loop.
1.

Abra el paquete CopiaProductos.dtsx, y sitese en la pestaa


Control Flow. Haga un clic sobre cualquier parte de la ventana
de diseo, asegurndose de no seleccionar ninguna tarea. A
continuacin, seleccione el men SSIS, y elija la opcin
Variables.

2.

Aparecer la ventana Variables en el lado izquierdo de la


pantalla. Pulse el botn
para agregar una nueva variable al
paquete. Establezca las siguientes propiedades para la variable:
Propieda
d
Name
Scope
Data
Type
Value

Valor
varTerritoryFile
CopiaProductos
String

Data Warehouse & Olap

46

3.

Abra el Toolbox, seleccione el tem Foreach Loop Container,


y arrstrelo sobre la ventana de diseo del paquete. Renombre
el elemento creado como Archivos de despachos de planta, y
agrguele una precedencia con origen en la tarea Borrar
datos. El entorno de diseo debe quedar de la siguiente
manera:

4.

El bucle creado en el paquete tiene como objetivo recorrer el


directorio de trabajo de este captulo, para encontrar los
archivos de texto cuyo nombre empiece con DespachosPlanta.
Por cada archivo encontrado, su contenido se copiar a una
tabla de SQL Server.

Data Warehouse & Olap

5.

47

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
Enumerator
Folder
Files
Retrieve
name

Valor
Foreach File Enumerator
Seleccione la carpeta donde se encuentran los
archivos DespachosPlantaLima.txt y
DespachosPlantaTrujillo.txt
DespachosPlanta*.txt
file Seleccione la opcin Fully Qualified

Data Warehouse & Olap

6.

48

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

Data Warehouse & Olap

7.
8.

49

Pulse el botn OK para finalizar la edicin del bucle.


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

Propiedad
Connection manager
name
File name

Valor
Despachos de planta

Seleccione el archivo
DespachosPlantaLima.txt
Format
Delimited
Text qualifier
" (comillas dobles)
Column names in the Seleccionado
first 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.

Data Warehouse & Olap

50

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

Data Warehouse & Olap

51

Expresin. Al finalizar, la ventana debe quedar de la siguiente


manera:

12. Pulse el botn OK para cerrar el constructor de expresiones.


Pulse nuevamente el botn OK para cerrar la ventana del
Property Expressions Editor. Guarde el paquete.
13. Dentro del bucle Archivos de despachos de planta, agregue
un nuevo Data Flow Task (asegrese de arrastrar el Data Flow
directamente desde el Toolbox y colocarlo dentro del bucle).
Renmbrelo como Copiar Despachos. Al finalizar, la ventana
de diseo debe quedar de la siguiente manera:

Data Warehouse & Olap

52

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
OLE
DB
Connection
Manager
Data access mode
Name of the table or the
view

Valor
AWorks MartDemo
Table or view fast load
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.

Data Warehouse & Olap

53

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

Utilizar Lookups

En el ejercicio nmero 4, se utiliz un Script Component para


traducir los cdigos numricos a nombres de regiones. En dicho
ejemplo, debido a que slo existen cuatro regiones, basta con
escribir una sentencia SELECT CASE en el cdigo .Net del Script
Component. Sin embargo, si la transformacin involucra una
cantidad grande de valores distintos (por ejemplo, los cdigos de los
distritos de un pas), el script puede hacerse muy extenso y difcil de
escribir.
Los Lookups implementan un mecanismo til para efectuar
transformaciones utilizando tablas de equivalencia. La siguiente
tabla muestra la utilizacin de una tabla de bsqueda para convertir
los cdigos de estados USA en sus respectivos nombres:

Data Warehouse & Olap

3.7

54

Data Transformations

Los procesos ETL deben leer informacin de mltiples tipos de


fuentes, y transferirla a diversos destinos. Es muy posible, por tanto,
que sea necesario efectuar conversiones de datos. SSIS incorpora
una transformacin llamada Data Conversion, cuya labor es
efectuar conversiones de tipos de datos. De esta forma, es posible
convertir informacin de texto de un formato a otro (por ejemplo,
convertir cadenas de formato UNICODE a no-UNICODE), convertir
tipos de datos de fecha, o establecer la precisin de informacin
numrica.

Ejercicio 5: Utilizar las transformaciones Data Conversion y


Lookup.

1. Ejecute el siguiente bloque Transact SQL desde el SQL Server


Management Studio:
USE AWorks_MartDemo
GO
CREATE TABLE Ciudades
(IdCiudad char(2),
Descripcion varchar(20))
2. A travs del SQL Server Management Studio, ingrese los
siguientes registros en la tabla Ciudades:

Data Warehouse & Olap

IdCiudad
AN
AQ
CJ
CZ
HU
LI

55

Descripcion
ANCASH
AREQUIPA
CAJAMARCA
CUZCO
HUANUCO
LIMA

3. En el proyecto de Integration Services, agregue un nuevo Data


Source que utilice el proveedor Native OLE DB\Microsoft Jet
4.0 OLE DB Provider, apuntando hacia el archivo Access
llamado
CURSO
OLAP
DEVELOPER.mdb.
Asegrese de que el checkbox Save my password est
seleccionado.

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:

Data Warehouse & Olap

56

El archivo Access CURSO OLAP DEVELOPER.mdb contiene


una tabla llamada ClientesPeru, con los siguientes datos:

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.

Data Warehouse & Olap

57

6. Dentro del Data Flow Task Copiar clientes, agregue un nuevo


OLE DB Source estableciendo las siguientes propiedades:

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

Data Warehouse & Olap

58

SQL Server, los tipos de datos NCHAR, NVARCHAR,


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

8. Haga un doble clic en Convertir a no-UNICODE para editar las


propiedades de la conversin de datos. Se abrir el Data
Conversion Transformation Editor. Esta ventana muestra los
inputs provenientes del origen Access Clientes, y permite
efectuar conversiones de datos. En el panel inferior, configure
las siguientes propiedades para convertir las columnas de texto
del Access a formato normal:
Input
Column
NomCliente
TelCliente
Ciudad

Output Alias

Data Type

Length

NomClientenoUNC
TelClientenoUNC
Ciudad-noUNC

String
[DT_STR]
String
[DT_STR]
String
[DT_STR]

50
10
2

Esto significa que, al output proveniente de Access Clientes,


se agregan tres columnas adicionales llamadas NomClientenoUNC, TelCliente-noUNC y Ciudad-noUNC, que contienen los
datos transformados a cadena normal (string).

Data Warehouse & Olap

59

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.

10.Haga un doble clic sobre Lookup Ciudades para editar sus


propiedades. Se abrir la ventana del Lookup Transformation
Editor. En la pestaa Reference Table, la propiedad OLE DB

Data Warehouse & Olap

60

Connection Manager debe apuntar al connection manager


AWorks MartDemo. La tabla de referencia debe ser
dbo.Ciudades:

11.Seleccione la pestaa Columns de la ventana del Lookup


Transformation Editor. La tabla Available Lookup Columns
contiene las columnas de la tabla dbo.Ciudades, que servir para
relacionar el cdigo de la ciudad (columna IdCiudad) con el
nombre de la ciudad (columna Descripcion). En la tabla
Available Lookup Columns, seleccione el campo IdCiudad y
arrstrelo sobre el campo Ciudad-noUNC de la tabla Available
Input Columns. Luego, marque el checkbox de la columna
Descripcion de la tabla Available Lookup Columns. Al
finalizar, la ventana debe quedar de la siguiente manera:

Data Warehouse & Olap

61

De esta manera, la transformacin Lookup efecta una


operacin de join con la tabla dbo.Ciudades, basada en la
igualdad de las columnas IdCiudad y Ciudad-noUNC. El
join efectuado permite obtener, para cada registro en la tabla
ClientesPeru del archivo Access de origen, el valor de la
columna Descripcion que le corresponde en la tabla
dbo.Ciudades.
12.Pulse el botn OK para confirmar los cambios.
13.Desde el Toolbox, en la pestaa Data Flow Destinations,
agregue un nuevo OLE DB Destination, y renmbrelo como
Tabla Clientes. Conecte la salida de Lookup Ciudades con
Tabla Clientes.

Data Warehouse & Olap

62

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
OLE DB Connection
Manager
Data Access Mode
Name of the table or
the view

Valor
Seleccione AWorks MartDemo
Table or view Fast load
Pulse el botn New para crear una nueva
tabla. Escriba la siguiente sentencia SQL:
CREATE TABLE Clientes
(IdCliente integer,
NombreCliente varchar(50),
TelefonoCliente varchar(10),
CiudadCliente varchar(20))

15.Seleccione la opcin Mappings del lado izquierdo de la pantalla.


Establezca los siguientes mapeos entre las columnas de Lookup
Ciudades y el destino Clientes:
idCliente
NomCliente-noUNC
TelCliente-noUNC
Descripcion

idCliente
NombreCliente
TelefonoCliente
CiudadCliente

Data Warehouse & Olap

63

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

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:

Data Warehouse & Olap

64

Un archivo XML: Los valores quedan almacenados en


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

En el siguiente ejercicio, se agregar un package configuration que


almacenar una configuracin para determinar si el paquete debe
ejecutarse o no. Dicho valor ser asignado a una variable, y evaluado
en una tarea de tipo Script Task para definir si la ejecucin del
paquete debe interrumpirse.

Ejercicio 6: Crear package configurations.

1. En el paquete CopiarProductos.dtsx agregue una variable


llamada varPaqueteActivo, con las siguientes caractersticas:
Propieda
d
Name
Scope
Data
Type
Value

Valor
varTerritoryFile
CopiaProductos
String

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


diseo.
En el men SSIS, seleccione la opcin Package
Configurations.

Data Warehouse & Olap

65

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.

Data Warehouse & Olap

66

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.

Data Warehouse & Olap

67

5. Pulse el botn Finish para finalizar el asistente. Pulse el botn


Close para cerrar el Package Configurations Organizer.
6. Observe que se ha creado un archivo XML llamado
Configuraciones.dstConfig en la ruta seleccionada durante la
ejecucin del asistente. Abra el archivo utilizando el Internet
Explorer. Observe la existencia de un elemento Configuration,
de tipo booleano, establecido a -1 (true).

7. Desde el Toolbox, agregue al paquete una tarea de tipo Script


Task, y renmbrela como Verificar activacin. A continuacin,
agregue a la tarea Borrar datos una precedencia con origen en
Verificar activacin.

Data Warehouse & Olap

68

8. Haga un doble clic en la tarea Verificar Activacin. Se abrir la


ventana del Script Task Editor. En la parte izquierda de la
ventana, seleccione la opcin Script. En la propiedad
ReadOnlyVariables, escriba varPaqueteActivo. Esto indica
que el script tiene acceso de slo lectura sobre la variable
varPaqueteActivo.

Data Warehouse & Olap

69

9. Pulse el botn Design Script para escribir el cdigo .Net que


define el comportamiento de la tarea. Escriba el siguiente cdigo
en el mtodo Main() de la clase ScriptMain:

10. Guarde el script y cierre la ventana de .Net. En la ventana del


Script Task Editor, pulse el botn OK.
11. Guarde el paquete y ejectelo. Observe que, como el valor de la
variable varPaqueteActivo es True, el script task finaliza
notificando xito, y da paso a la ejecucin de las tareas
siguientes.
12. Abra el archivo Configuraciones.dtsConfig utilizando el
Notepad. Modifquelo, para establecer el valor de la
configuracin para la variable varPaqueteActivo a 0 (False). Al
finalizar, el archivo debe quedar de la siguiente manera:

Data Warehouse & Olap

70

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

La transformacin Derived Column

La transformacin Derived Column se utiliza para generar nuevas


columnas, con base en las columnas de input ya existentes. Esto se
hace a travs de expresiones, es decir, frmulas que se aplican a las
columnas de input para generar un nuevo valor de output. El
lenguaje de expresiones de SSIS posee un vasto conjunto de
funciones y operadores, que permite efectuar transformaciones
avanzadas en la informacin de una fila.
El Derived Column es muy til para situaciones en las cuales se
debe efectuar concatenaciones, extraer una porcin de una cadena,
obtener partes de una fecha, aplicar funciones matemticas, etc.
En el siguiente ejercicio, se crear un DerivedColumn para
concatenar los valores de las columnas FirstName y LastName
de la tabla Person.Contact, y enviar el resultado hacia una nueva
tabla llamada ResumenContactos.

Ejercicio 7: Utilizar la transformacin Derived Column.

1. En el paquete CopiarProductos.dtsx agregue un Data Flow


Task, y renmbrelo como Copiar Contactos.

2. En el data flow Copiar Contactos, agrege un Data Reader


Source con las siguientes propiedades:

Data Warehouse & Olap

Propiedad
Name
Connection
Manager
SqlCommand
Value

71

Valor
Contactos
Adventure Works
String
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:

Data Warehouse & Olap

Propiedad
Derived
Column
Name
Derived Column
Expression
Data Type

72

Valor
NombreCompleto
<add as new column>
[LastName]
+
,
[FirstName]
String [DT_STR]

5. Pulse el botn OK para confirmar los cambios. A continuacin,


agregue un OLE DB Destination llamado Resumen Contactos.
Conecte la salida de la transformacin Derived Column con la
transformacin Resumen Contactos. Haga doble clic sobre
ResumenContactos y establezca las siguientes propiedades:
Propiedad
OLE DB
Connection
Manager
Data Access Mode
Name of the table
or the view

Valor
AWorks MartDemo
Table or view fast load
Pulse el botn New, y cree una
nueva tabla con la siguiente
definicin:
CREATE
TABLE
[ResumenContactos](
ContactID Integer,
NombreCompleto Varchar(150)

Data Warehouse & Olap

Data Type

73

)
String [DT_STR]

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


Mappings, y establezca los siguientes mapeos de columnas:

Data Warehouse & Olap

74

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


ejectelo. Compruebe los resultados.
3.10
SSIS

Distribucin (deployment) del proyecto

Una vez finalizado el desarrollo de los paquetes SSIS, stos deben


ser llevados a un servidor que est corriendo los servicios de SQL
Server Integration Services. A este proceso se le denomina
distribucin (deployment).
Durante el deployment, la definicin del paquete SSIS se almacena
en el servidor, en alguna de las siguientes ubicaciones:

File system: El paquete se graba en un archivo, ubicado en una


carpeta del sistema de archivos del servidor.
SQL Server: La definicin del paquete se almacena en la base
de datos msdb, que es una base de datos de sistema de SQL
Server 2005.

Una vez que los paquetes han sido distribuidos, pueden ser
ejecutados por el administrador en cualquier momento, desde la
consola del SQL Server Management Studio. El administrador puede
tambin programar la ejecucin automtica de los paquetes, a travs
de la creacin de jobs (trabajos) en el agente de SQL Server 2005.
La disribucin de los paquetes SSIS puede efectuarse en una de las
siguientes formas:

Distribucin manual: Consiste en copiar en el servidor el


archivo del paquete (extensin dtsx) y cualquier otro archivo
relacionado, y cargarlo manualmente en los servicios de SQL
Server Integration Services. A travs de este mecanismo, slo
puede distribuirse un paquete a la vez.
Deployment utility: SSIS provee una herramienta para facilitar
la distribucin de los paquetes que se encuentran un proyecto
SSIS. El deployment utility es un asistente, que produce un
archivo que puede ejecutarse en el servidor para efectuar la
distribucin con slo un clic. Con este utilitario, es posible
distribuir varios paquetes a la vez.
Ejercicio 8: Distribuir el paquete con el Deployment Utility.

1. En su disco de trabajo,
SSISConfigurations.

cree

una

carpeta

llamada

Data Warehouse & Olap

75

2. En la ventana del Solution Explorer, seleccione el proyecto


AdventureWorks_SSIS_Demo1. Haga un clic derecho, y
seleccione Properties.

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


izquierda de la ventana, seleccione la opcin Deployment
Utility. Establezca la propiedad CreateDeploymentUtility a
True:

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

Data Warehouse & Olap

76

es el instalador del proyecto SSIS. Adems, contiene el archivo


CopiaProductos.dtsx, que contiene el paquete, y el archivo de
configuracin configuraciones.dtsconfig, creado en el ejercicio
(6).

6. Para iniciar la distribucin del paquete, haga doble clic sobre el


archivo
AdventureWorks_SSIS_Demo1.SSISDeploymentManifest.
Se
iniciar el Package Installation Wizard. Pulse el botn Next de
la primera ventana del asistente.
7. La siguiente ventana permite establecer el tipo de instalacin.
Seleccione la opcin SQL Server deployment. De esta manera,
el paquete se almacenar en la base de datos msdb del servidor
destino.

8. Pulse el botn Next. A continuacin, establecer el servidor


destino para la instalacin del paquete. Establezca las siguientes
propiedades:

Data Warehouse & Olap

77

Propiedad
Valor
Server name
(local)
Use
Windows Seleccionado
Authentication

9. Pulse el botn Next. La siguiente ventana permite determinar la


ubicacin de los archivos adicionales que el paquete necesita
para correr (por ejemplo, los archivos de configuracin del
proyecto). Seleccione la carpeta SSISConfigurations creada en
el paso (1). De esta forma, el archivo de configuracin se copiar
en esta carpeta al finalizar la instalacin del paquete.

Data Warehouse & Olap

78

10. Pulse el botn Next. Aparecer la pantalla de confirmacin de la


instalacin. Pulse nuevamente el botn Next.
11. La siguiente ventana permite establecer valores iniciales en el
archivo (o archivos) de configuracin. En la propiedad
Configuration
file,
seleccione
la
configuracin
configuraciones.dtsconfig.
En
el
grid
Configurations,
seleccione la propiedad varPaqueteActivo, y establezca su valor
a True. De esta manera, antes de finalizar la instalacin, el
archivo de configuracin es modificado de acuerdo a lo ingresado
en esta pantalla, y copiado al servidor por el asistente de
instalacin.

12. Pulse el botn Next. Aparecer la pantalla final del asistente.


Pulse el botn Finish.
13. A continuacin se observar el paquete instalado. Abra el SQL
Server Management Studio. En la pantalla de conexin ingrese
la siguiente informacin:
Propiedad
Server type
Server name

Valor
Integration Services
<escriba el nombre de su estacin
de trabajo>

Data Warehouse & Olap

79

14. Pulse el botn Connect. En la ventana del Object Explorer,


expanda el servidor. Expanda el nodo Stored Packages.
Expanda
el
nodo
MSDB.
Seleccione
el
paquete
CopiaProductos, haga un clic derecho y seleccione la opcin
Run package:

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


Execute.
16. Aparecer la ventana Package Execution Progress, indicando
el progreso de la ejecucin. Al finalizar, examine la informacin
mostrada por esta ventana.

Data Warehouse & Olap

80

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.