Está en la página 1de 248

Implementación de Almacén

de Datos con MS SQL Server


Experto en Administración de Bases de Datos (DBA) - Inteligencia de Negocios (BI)

Ing. Scarleth Rivera González y Ing. Romniel Torres


05/09/2021
Managua, Nicaragua
Implementación Almacén de Datos Ing. Scarleth Rivera

INTRODUCCIÓN

Un Data Warehouse (almacén de datos) es un repositorio para almacenar y analizar información


numérica. Un almacén de datos es un conjunto de datos históricos, internos o externos, y descriptivos de
un contexto o área de estudio, que están integrados y organizados de tal forma que permiten aplicar
eficientemente herramientas para resumir, describir y analizar los datos con el fin de ayudar a la toma de
decisiones estratégicas.

Gran parte de los datos que se almacenan en un data warehouse provienen de bases de datos
transaccionales (OLTP). Por tanto la incorporación de datos externos se hace para ayudar a hacer
análisis con la idea de tener las más posibles causas sobre un hecho. Estos datos externos pueden estar
o no estar relacionados de manera directa con los hechos que se analizan y sin embargo pueden ayudar
a descubrir tendencias o patrones.

Es importante señalar que una de las razones de existir del almacén de datos es separar la información
para no afectar el desempeño de la base de datos operacional o transaccional (OLTP). Las bases de datos
OLTP son las bases de datos que seguramente conoces, cuyo propósito es ayudar en las operaciones
diarias de las empresas: ventas, nómina, inventario, entre otros.

Las bases de datos operacionales (OLTP) están altamente normalizadas, por lo que también es más
complicado realizar operaciones de análisis en ellas y lo cual llevaría afectar el rendimiento de las mismas.
Por otro lado, un almacén de datos se dice que está desnormalizado, lo que permite llevar a cabo análisis
de manera dedicada y sin tanta sobrecarga de trabajo para la base de datos.

1
Implementación Almacén de Datos Ing. Scarleth Rivera

ÍNDICE

Contenido
INTRODUCCIÓN............................................................................................................................................. 1

ÍNDICE ........................................................................................................................................................... 2

INSTALACIONES PREVIAS .............................................................................................................................. 4

CREACIÓN DE UN PROYECTO DE INTEGRACIÓN ......................................................................................... 25

PRÁCTICA #1: VIDEOCLUB ........................................................................................................................... 28

ETLPeliculas1 ............................................................................................................................................... 29

ETLPeliculas2 ............................................................................................................................................... 38

ETLPeliculas3 ............................................................................................................................................... 43

ETLPeliculas4 ............................................................................................................................................... 47

ETLPeliculas5 ............................................................................................................................................... 50

ETLPeliculas6 ............................................................................................................................................... 53

MezclaLibros1 ............................................................................................................................................. 59

MezclaLibros2 ............................................................................................................................................. 64

DWH ............................................................................................................................................................ 66

Paquete ETLDWH1 ...................................................................................................................................... 66

Paquete ETLDWH2 ...................................................................................................................................... 73

Paquete ETLDWH3 (Carga de datos semi-incremental) ........................................................................... 109

Paquete ETLDWH4 (Carga de datos incremental) .................................................................................... 131

Creación de BD de DW con FILEGROUPS .................................................................................................. 148

ANEXOS ..................................................................................................................................................... 151

2
Implementación Almacén de Datos Ing. Scarleth Rivera

Aggregate .................................................................................................................................................. 153

Conditional Split ........................................................................................................................................ 163

Derived Column ........................................................................................................................................ 167

Dimensiones Lentamente Cambiantes ..................................................................................................... 171

Export e Import Column............................................................................................................................ 180

For Loop .................................................................................................................................................... 188

ForEach Loop............................................................................................................................................. 191

Lookup....................................................................................................................................................... 196

Lookup con Caché Destination ................................................................................................................. 200

Lookup sin Caché que Transformation ..................................................................................................... 206

Merge Join................................................................................................................................................. 209

Merge, Sort y Union all ............................................................................................................................. 213

Merge ........................................................................................................................................................ 220

Multicast ................................................................................................................................................... 221

OLE DB Command ..................................................................................................................................... 224

Row y Percentage Sampling ...................................................................................................................... 228

Rowcount .................................................................................................................................................. 233

Script Component ..................................................................................................................................... 236

Script Task ................................................................................................................................................. 241

Sequence Container .................................................................................................................................. 243

ANEXO 2 .................................................................................................................................................... 246

CONCLUSIÓN............................................................................................................................................. 247

3
Implementación Almacén de Datos Ing. Scarleth Rivera

INSTALACIONES PREVIAS

Para poder trabajar con un almacén de datos es necesario realizar las siguientes instalaciones:

1. Descargamos e Instalar Sql Server 2019.


2. Dentro de la instalación en la pestaña “Selección de características” hacemos clic en la opción
“Analysis Services”:

4
Implementación Almacén de Datos Ing. Scarleth Rivera

3. También dentro de la instalación en la pestaña “Selección de características” hacemos clic en la


opción “Integration Services”:

4. Instalar el Management Studio 18.9.1 para Sql Server 2019

5
Implementación Almacén de Datos Ing. Scarleth Rivera

5. Descargamos Sql Server Data Tools para Visual Studio 2019(Inteligencia de


Negocios)

6. Al descargar nos presenta el siguiente instalador, damos doble clic y nos aparece el
siguiente mensaje, damos “Continuar”:

6
Implementación Almacén de Datos Ing. Scarleth Rivera

7. Descarga los archivos para instalarlos:

8. Escogemos la opción de “Almacenamiento y procesamiento de Datos” y


automáticamente nos aparece las opciones de la parte derecha marcadas, donde
aparece “SQL Server Data Tool''. Seleccionamos otras opciones y damos clic en
“Instalar”:

7
Implementación Almacén de Datos Ing. Scarleth Rivera

9. Se procede a instalar:

10. Finalizando la instalación:

8
Implementación Almacén de Datos Ing. Scarleth Rivera

11. Aparece la siguiente pantalla:

12. En esta parte damos clic en “De momento no, quizás más tarde”:

9
Implementación Almacén de Datos Ing. Scarleth Rivera

13. Escogemos las opciones de configuración:

14. Escogemos “Continuar sin código”:

10
Implementación Almacén de Datos Ing. Scarleth Rivera

15. En Visual Studio 2019, en la pestaña “Extensiones” seleccionamos “Administrar


extensiones” y buscamos “SQL Server Integrations Services Projects”:

16. Pide escoger un navegador y luego damos clic en “Ejecutar”:

11
Implementación Almacén de Datos Ing. Scarleth Rivera

17. Escogemos el idioma y damos clic en “Aceptar”:

18. Nos aparece la siguiente pantalla y damos clic en “Next”:

19. Luego clic en “Instalar”, pero antes, debe cerrar el Visual Studio, si no da error:

12
Implementación Almacén de Datos Ing. Scarleth Rivera

20. Al finalizar nos pide “Reiniciar”:

21. Al Reiniciar, volvemos a entrar a Visual y en “Extensiones” y luego “Administrar


extensiones”, buscamos el Proyecto “Analysis Services”, botón “Descargar”:

13
Implementación Almacén de Datos Ing. Scarleth Rivera

22. Al terminar la descarga pone un reloj y un mensaje indicando que cuando se cierre
podrá continuar el proceso de instalación:

23. Al cerrar se abre el instalador y damos clic en opción “Modify”:

14
Implementación Almacén de Datos Ing. Scarleth Rivera

24. Comienza a instalar:

25. Al finalizar muestra la siguiente pantalla:

15
Implementación Almacén de Datos Ing. Scarleth Rivera

26. Volvemos a abril Visual y siempre en “Extensiones” y “Administrar Extensiones”,


buscamos “Reporting Services”, damos clic en “Descargar”:

16
Implementación Almacén de Datos Ing. Scarleth Rivera

27. Comienza a descargarse los archivos:

28. Al cerrar el Visual, nos aparece una ventana para instalar Reporting, damos clic en
“Modify”:

17
Implementación Almacén de Datos Ing. Scarleth Rivera

29. Al terminar damos clic en “Close”:

30. Vamos a instalar el componente para Microsoft Office Access database engine, para
usar archivos desde SQL “AccessDatabaseEngine.exe”, al ejecutar presenta la
siguiente pantalla, marcamos el check de acepto contrato y damos clic en
“siguiente”:

18
Implementación Almacén de Datos Ing. Scarleth Rivera

31. Luego damos clic en “Instalar”:

32. Al finalizar damos clic en “Aceptar”:

19
Implementación Almacén de Datos Ing. Scarleth Rivera

33. Vamos a configurar los nuevos servicios con el usuario de dominio, para eso nos
vamos a “Este Equipo” y luego la opción “Administrar”:

34. Luego en herramientas, buscamos la opción “Administración de Equipos”:

20
Implementación Almacén de Datos Ing. Scarleth Rivera

35. En “Usuarios” damos clic en “Usuario Nuevo” y agregamos el usuario “SqlServicios”


para levantar los servicios de SQL, la contraseña es (Uni**2021) y damos clic en
“Crear”:

36. Abrimos los Servicios de Windows para buscar los servicios de SQL:

21
Implementación Almacén de Datos Ing. Scarleth Rivera

37. En este caso el servicio de SQL lo tengo con el usuario de Dominio, pero sino
tenemos domino ponemos el usuario que acabamos de crear, luego de este caso se
reinicia el servicio para que tome efecto el cambio:

38. Para el Servicio de Integración, también podemos abrir desde “Inicio”, En la Carpeta
SQL Server 2019 la opción “Sql Server Configuration Manager” y escogemos el
usuario de dominio, pide la clave para seleccionarlo:

22
Implementación Almacén de Datos Ing. Scarleth Rivera

39. Ponemos la contraseña y clic en “Aplicar” y “Sí” para reiniciar el servicio:

40. Lo mismo hacemos para Analysis Services:

41. Agregamos el usuario en SQL con perfil SysAdmin:

23
Implementación Almacén de Datos Ing. Scarleth Rivera

24
Implementación Almacén de Datos Ing. Scarleth Rivera

CREACIÓN DE UN PROYECTO DE INTEGRACIÓN

1. Creamos el primer proyecto para el Servicio de Integración dando clic en la opción


“Crear un Proyecto”:

2. En la búsqueda filtramos ”Integration”, damos clic en la primera opción:

25
Implementación Almacén de Datos Ing. Scarleth Rivera

3. Escribimos el nombre del Proyecto, escogemos la ruta donde se va a guardar y clic


en el botón :

4. Al abrir el proyecto me aparece la siguiente pantalla:

26
Implementación Almacén de Datos Ing. Scarleth Rivera

5. Damos clic derecho sobre la parte de “Flujo de Control” para que nos aparezcan las
opciones y seleccionamos “Cuadro de herramientas de SSIS”:

27
Implementación Almacén de Datos Ing. Scarleth Rivera

PRÁCTICA #1: VIDEOCLUB

1. Primero creamos la base de datos VideoClub, con las diferentes tablas que vamos a utilizar:

2. El primer paso luego de abrir el proyecto “ProyectoIntegrationScar” del acápite anterior, y


procedemos a cambiarle el nombre de “Package” a “ETLPeliculas1”. Esto es importante para
poder hacer auditoría de paquetes:

28
Implementación Almacén de Datos Ing. Scarleth Rivera

ETLPeliculas1
3. Luego aparecerá el siguiente mensaje, y presionamos “Si a todo”:

4. Al recargar la aplicación, nos vamos al panel de “Cuadro de herramientas de SSIS, donde


encontramos los diferentes controles para usar en la primera pestaña “Flujos de control” y
escogemos “Tarea de Flujos de datos”, ya que este ETL servirá para cargar datos de las Películas
y le cambiamos el nombre por “Cargar Películas”:

5. Al darle doble clic a “Cargar Películas”, nos mueve a la pestaña “Flujo de datos”, nos vamos a los

29
Implementación Almacén de Datos Ing. Scarleth Rivera

controles “Otros Orígenes” y lo arrastramos al área libre, procedemos a ponerle un nombre


descriptivo, en este “Películas”:

6. El siguiente paso es darle doble clic a “Películas” para configurar el excel de donde vamos a
tomar los datos correspondientes, damos clic a “Nueva”-> “Examinar” -> “Aceptar”:

7. Al cargar el archivo escogemos “Hoja 1” y luego podemos dar clic en el botón “Vista Previa” para
ver los datos como se muestra a continuación:

30
Implementación Almacén de Datos Ing. Scarleth Rivera

8. Nos vamos luego a “Columna” para hacer el match de las columnas, luego damos clic en
“Aceptar”:

9. A la conexión que aparece abajo la renombramos para poder identificar las diferentes
conexiones que tendremos en el ETL:

31
Implementación Almacén de Datos Ing. Scarleth Rivera

10. Luego vamos a convertir esa conexión para que sea reconocida por todo el proyecto, dando clic
derecho y escogiendo la opción mostrada:

11. Vamos ahora a agregar una nueva conexión pero lo hacemos desde el panel izquierdo, en la
carpeta “Administradores de conexiones” y damos clic derecho “Nueva conexión” para que nos
aparezca ventana que se muestra, ahí escogemos “OLEDB”, la cual es una buena opción ya que

32
Implementación Almacén de Datos Ing. Scarleth Rivera

nos vamos a conectar al Servidor SQL. Damos clic en botón “Agregar”:

12. Aparece una ventana de las conexiones existentes y damos clic en “Nueva”, nos aparece la
ventana donde ponemos el nombre del servidor Sql y escogemos la base, escogemos
“Autenticación de Windows” porque estamos en el mismo servidor. Damos clic en “Aceptar” ->
“Aceptar”:

13. Ahora vamos a seleccionar el destino, para el cual ocupamos el control “Destino de OLE DB” y
renombramos los pasos para que sean más informativos sobre la función que desempeñan.
Además tenemos dos formas de conectar lo controles entre sí, con las flechas donde la azul
corresponde a la ejecución correcta y la roja es una ejecución fallida:

33
Implementación Almacén de Datos Ing. Scarleth Rivera

14. Procedemos a configurar “Insertar Películas”pero antes conectamos la flecha azul, para que al
irnos al siguiente paso podamos hacer el match de los campos, por eso luego escogemos la tabla
“Peliculas”, pero debemos ver la advertencia:

15. Hacemos la conexión de cada campo, para que al momento de insertar sepa qué campo
corresponde en la tabla, se escoge el año porque en excel el campo se llama “year” t le damos
“Aceptar”:

34
Implementación Almacén de Datos Ing. Scarleth Rivera

16. Muestra una advertencia porque el campos Género en el excel tiene datos de 255 caracteres y
en la tabla le pusimos un tamaño 50:

17. Vamos a ocupar el control “Conversión de datos”, para poder recortar los datos de las columnas
Género y Título, que viene de excel y poder insertarla en la tabla Películas. Damos clic en
“Aceptar”. Guardamos los cambios:

35
Implementación Almacén de Datos Ing. Scarleth Rivera

18. Al conectar el convertidor al objeto para inserción hacemos nuevamente el match pero con las
columnas formateadas y que dicen “copia” en el nombre. Damos clic en “Aceptar”:

19. Nos quede así el primer ETL para cargar las Películas y damos clic derecho “Ejecutar paquete”:

36
Implementación Almacén de Datos Ing. Scarleth Rivera

20. Nos muestra esta pantalla que indica que los pasos se ejecutaron correctamente:

21. Haciendo la consulta desde SQL podemos ver los datos insertados:

37
Implementación Almacén de Datos Ing. Scarleth Rivera

ETLPeliculas2
22. Vamos a crear un nuevo llamándolo EL Peliculas2 y le agregamos una “Tarea de flujo de datos” y
le ponemos el mismo nombre del anterior:

23. Pero en esta ocasión vamos a usar un control nuevo “Agregado” que es usado para hacer Group

38
Implementación Almacén de Datos Ing. Scarleth Rivera

By en el set de datos que estamos trabajando y usamos el campo “Genero”. Damos clic en
“Aceptar”:

24. Como destino vamos a escoger “Destino de Excel”, al darle doble clic escogemos la ruta donde
se creará el archivo y le ponemos nombre “Género”. Luego damos clic en “Abrir” -> “Aceptar”:

25. Damos clic en “Nueva” y nos aparece este script de la tabla pero cambiamos los tipos de dato y
tamaño:

39
Implementación Almacén de Datos Ing. Scarleth Rivera

26. Al dar aceptar a la tabla nos aparece ese mensaje, damos clic en “Ok”:

27. Escogemos la hoja de donde pondrá los datos, el cual es la que tiene el signo $:

40
Implementación Almacén de Datos Ing. Scarleth Rivera

28. Luego nos vamos a “Asignaciones” para unir los campos con el correspondiente. Damos clic en
“Aceptar”:

29. Damos clic derecho sobre “ETLPeliculas2” y clic en opción “Ejecutar Paquete”:

41
Implementación Almacén de Datos Ing. Scarleth Rivera

30. Nos muestra otro estilo de pantalla e indica con un check verde que cada paso se ejecutó
correctamente:

31. En la carpeta podemos ver el nuevo archivo Excel creado llamado “Género”:

42
Implementación Almacén de Datos Ing. Scarleth Rivera

ETLPeliculas3
32. Vamos a crear un tercer ETL pero en esta ocasión vamos a dividir los datos, creamos un
“ETLPeliculas3”, agregamos el flujo de datos “Cargar datos” y colocamos el mismo origen
ocupado en los ETL anteriores y nos trajimos el paso de conversión de datos para Género y
Título, del “ETLPeliculas1”:

33. Agregamos un control para “División Condicional”, donde en base al año de la película

43
Implementación Almacén de Datos Ing. Scarleth Rivera

decidimos si es del Siglo Pasado o Actual, se configura como se muestra en la imagen:

34. Vamos a tener dos destinos OLE DB uno para las películas de siglo pasado y otra para Siglo
actual, entonces al momento de unir la flecha de condicional nos aparecerá una ventana para
escoger la opción que corresponda, como se muestra en la siguiente imagen:

35. El siguiente paso es configurar el destino, por lo que configuramos escogiendo la tabla que le
corresponde a la condición “SigloPasado”:

44
Implementación Almacén de Datos Ing. Scarleth Rivera

36. El paso siguiente es ir a “Asignaciones” para escoger los campos. esto lo hicimos en el
ETLPeliculas 1, donde escogemos las copias de los campos de título y género:

37. Los dos últimos pasos los realizamos para la condición SigloActual pero escogemos la tabla para
ello, damos clic en aceptar luego de hacer el match de los campos, damos clic en “Aceptar”:

45
Implementación Almacén de Datos Ing. Scarleth Rivera

38. Ejecutamos el paquete y si se fija cada flecha luego del condicional indica a qué opción
corresponde:

39. Luego en SQL podemos ver los datos en cada tabla:

46
Implementación Almacén de Datos Ing. Scarleth Rivera

ETLPeliculas4
40. Creamos un cuarto ETL para películas pero en este caso usamos el control utilizado para
insertar los datos en más de un origen de datos, por lo que escogimos dos destinos uno a SQL a
la tabla PeliculasMultidifusión y la otra a un Excel, que configuramos con los campos exactos. En
el control “Multidifusión” no se debe configurar nada:

41. Escogemos un origen de datos para crear un archivo Txt, dentro de él escogemos el nombre del
texto:

47
Implementación Almacén de Datos Ing. Scarleth Rivera

42. Formateamos la tabla para que tenga los campos requeridos y luego hacemos el match de los
campos con el origen de datos y los campos formateados:

43. El darle ejecutar al paquete, todo está correcto:

48
Implementación Almacén de Datos Ing. Scarleth Rivera

44. El resultado se muestra en la siguiente imagen, donde tenemos los datos en SQL y el excel
creado:

49
Implementación Almacén de Datos Ing. Scarleth Rivera

ETLPeliculas5
45. Crearemos el “ETLPeliculas5” y en esta ocasión vamos a probar el control para “Ordenar datos”,
cuando agregamos el ETL 5, y estamos ubicado en el “Flujo de control”, si nos fijamos en el
panel de Propiedades, el Name dice “Package”, como buena práctica ahí debemos colocar el
nombre del paquete del archivo físico. Que es el que podremos identificar para la ejecución en
tareas programadas, por lo que la renombramos:

46. Luego de eso, agregan los pasos que “Obtener Películas” y “Convertir Género y Título” y
arrastramos el control “Ordenar” poniéndole nombre: “Ordenar por Título”, ahí escogemos el
campo y el tipo de ordenamiento en este caso Ascendente:

47. Y por último seleccionamos el destino agregando un control para que los datos caigan en un
archivo plano y dentro de la configuración colocamos el nombre del txt, que en este caso es

50
Implementación Almacén de Datos Ing. Scarleth Rivera

“PeliculasOrdenadas”:

48. En la parte “Avanzadas”, quitamos las copias de las columnas Género y título y las que quedan le
ponemos tamaño (50):

49. En Asignación escogemos las copias de Género y Título que tienen el tamaño (50. Damos clic en
“Aceptar”:

51
Implementación Almacén de Datos Ing. Scarleth Rivera

50. Ejecutamos el paquete “ETLPeliculas5”:

51. El resultado del ordenamiento lo vemos en el archivo creado:

52
Implementación Almacén de Datos Ing. Scarleth Rivera

ETLPeliculas6
52. Crearemos el “ETLPeliculas6” donde vamos a realizar una búsqueda Aproximada:

53. El primero paso es el control “Origen de OLE DB”, para obtener los datos de la tabla
“tblPeliculasBusqueda”, damos clic en “Cerrar” -> “Aceptar”:

53
Implementación Almacén de Datos Ing. Scarleth Rivera

54. Agregamos el control “Búsqueda” y procedemos a configurar, primero en la pestaña General,


escogemos la opción “Redirigir fila a resultado no coincidentes”:

55. En la pestaña “Conexión”, escogemos la tabla “tblPeliculas”, para realizar la búsqueda dentro de
ella:

54
Implementación Almacén de Datos Ing. Scarleth Rivera

56. En la pestaña “columnas”, se arrastra el campo “Título” de la tabla de la izquierda hacia la tabla
Película y seleccionamos todos menos “PeliculaId” porque no lo tenemos en la tabla destino.
Luego damos clic en “Aceptar”:

57. Agregamos un control llamado “Columna derivada”, como un paso previo para poner el destino
de los datos, al unir el control de búsqueda muestra la siguiente ventana, donde escogemos el
condicional de los datos, en este caso es “Salida de entradas no coincidentes de búsqueda”,

55
Implementación Almacén de Datos Ing. Scarleth Rivera

damos clic en “Aceptar”:

58. Procedemos a configurar, arrastramos la columna “Título” y agregamos texto en “Expresión”.


Damos clic en “Aceptar”:

59. Agregamos el control para insertar los datos un archivo plano, el cual vamos a llamar
“PeliculasSimilitud.txt”:

56
Implementación Almacén de Datos Ing. Scarleth Rivera

60. En “Asignaciones” hacemos el match de los campos, damos clic en “Aceptar”:

61. Ejecutamos el paquete :

57
Implementación Almacén de Datos Ing. Scarleth Rivera

62. Le cambié la condición para que identificara las coincidencias porque el primero no me dio
resultado, al ejecutar me generó este resultado:

58
Implementación Almacén de Datos Ing. Scarleth Rivera

MezclaLibros1
63. Creamos ahora un ETL para cargar Libros y Autores:

64. Colocamos el origen de datos para un Excel, seleccionado el archivo “Libros”:

59
Implementación Almacén de Datos Ing. Scarleth Rivera

65. Damos clic en visualizar los datos, luego damos “Cerrar” -> “Aceptar”:

66. Colocamos otro control de origen de datos Excel para obtener los Escritores:

60
Implementación Almacén de Datos Ing. Scarleth Rivera

67. Tenemos que ordenar los datos para poder utilizar el paso siguiente, en este caso lo hacemos
por “AutorID” para los dos orígenes de datos, el cual coincide entre Libros y Escritores:

68. Agregamos el control de “combinación de mezcla”, al unir el paso 1, nos aparece la imagen
siguientes, donde debemos escoger en “Entrada” el lado “Izquierdo”, al unir el control 2 a la
mezcla, ya no pide información entendiendo que corresponde el lado derecho:

69. Renombramos el control de combinación de Mezcla por “Inner Join”, ya que su función es unir
ambas tablas por un campo en común, el resultado son los registros que coinciden por el campo
“AutorID”, escogemos los campos y modificamos el campo “Nombre” por Autor. Damos clic en

61
Implementación Almacén de Datos Ing. Scarleth Rivera

“Aceptar”:

70. Agregamos el destino a un Excel, al editar seleccionamos la ruta con el nombre del archivo:

71. En “Nueva”, editamos la tabla del archivo excel con los tipos de datos correctos:, damos clic en
“Aceptar”:

62
Implementación Almacén de Datos Ing. Scarleth Rivera

72. Hacemos el match de los campos del set de resultados obtenidos, damos clic en “Aceptar”:

73. Ejecutamos el paquete y obtenemos el resultado

63
Implementación Almacén de Datos Ing. Scarleth Rivera

MezclaLibros2
74. Por último, creamos otro ETL con los mismos pasos del anterior, pero en este caso agregamos el
contador de registros:

75. Al ejecutar podemos visualizar la cantidad de registros que se obtiene de del “Inner Join”:

64
Implementación Almacén de Datos Ing. Scarleth Rivera

65
Implementación Almacén de Datos Ing. Scarleth Rivera

DWH

Paquete ETLDWH1

1. Creamos un paquete nuevo y cambiamos el nombre a ETLDWH1.

2. En flujo de control agregamos una tarea de flujo de datos con el nombre DTLDWH1.

66
Implementación Almacén de Datos Ing. Scarleth Rivera

3. Presionamos doble clic en la tarea flujo de datos y agregamos un origen de Excel con el nombre
“Ventas-Totales-Detalladas2021”.

4. Presionamos doble clic en el origen de Excel para configurar la conexión del archivo.
Presionamos nueva (Conexión de Excel), examinar, seleccionamos el archivo y presionamos
abrir.

67
Implementación Almacén de Datos Ing. Scarleth Rivera

5. Seleccionamos la hoja en la que se encuentran los datos.

6. Validamos las columnas de entradas y salidas. Presionamos aceptar.

68
Implementación Almacén de Datos Ing. Scarleth Rivera

7. Agregamos la herramienta Agregado, cambiamos el nombre a “Agrupar por producto” y lo


unimos con el origen de Excel.

8. Presionamos doble clic en agrupar por producto para configurar las columnas a agrupar.
Seleccionamos las columnas CODPART y Artículo, le agregamos la operación Group By,
agregamos una columna adicional para las demás columnas con operación Count All para
realizar un conteo y presionamos aceptar.

9. Agregamos un destino de archivo plano donde se guardarán los datos de la salida, cambiamos el
nombre por “Dim_Productos”.

69
Implementación Almacén de Datos Ing. Scarleth Rivera

10. Presionamos doble clic en Dim_Productos para configurar. Presionamos nuevo (conexión de
archivo plano), seleccionamos el formato delimitado y aceptar.

11. Ingresamos el nombre de la conexión “Conexión Dim_Productos”, presionamos examinar para


ingresar la ruta y el nombre del archivo que se creará y almacenará los datos de salida.

70
Implementación Almacén de Datos Ing. Scarleth Rivera

12. En avanzadas se valida, se cambia los campos de salida adecuados, tipo, tamaño y se presiona
aceptar.

13. Ejecutamos el paquete satisfactoriamente.

71
Implementación Almacén de Datos Ing. Scarleth Rivera

14. Validamos el archivo generado con los datos agrupados con los números de registros
duplicados.

72
Implementación Almacén de Datos Ing. Scarleth Rivera

Paquete ETLDWH2

15. Creamos un paquete nuevo y cambiamos el nombre a ETLDWH2.

16. Agregamos una nueva conexión a la BD del DWH, tipo OLEDB.

73
Implementación Almacén de Datos Ing. Scarleth Rivera

17. Presionamos nueva, ingresamos el nombre del servidor, seleccionamos el nombre de la Base de
Datos y presionamos aceptar.

18. Agregamos una “Tarea Ejecutar SQL” y le cambiamos el nombre a “Limpiar tablas”.

74
Implementación Almacén de Datos Ing. Scarleth Rivera

19. Presionamos doble clic en “Limpiar tablas” para configurar. Seleccionamos la conexión a la BD
del DWH, en “SQL Statement” ingresamos las consultas, en este caso ingresamos los Delete a las
tablas que se necesita limpiar en este paquete. Es importante tener en cuenta las llaves
foráneas, en este caso iniciaremos limpiando la tabla Hechos_Ventas para que no de error.

20. Agregamos una “Tarea flujo de datos”, cambiamos el nombre a “Cargar Dimensión Producto” y
unimos con la “Tarea ejecutar SQL”.

21. Presionamos doble clic en “Cargar Dimensión Productos”, agregamos un origen de Excel y le
cambiamos el nombre a “Ventas-Totales-Detalladas2021”.

75
Implementación Almacén de Datos Ing. Scarleth Rivera

22. Presionamos doble clic en el origen de Excel para configurar. Seleccionamos la conexión ya
creada para la base de datos del DWH y la hoja en la que se encuentran los datos.

23. Validamos las columnas y presionamos “Aceptar”.

76
Implementación Almacén de Datos Ing. Scarleth Rivera

24. Agregamos la herramienta “Agregado” para agrupar y eliminar datos duplicados. Cambiamos el
nombre a “Eliminar duplicados de productos” y unimos al origen de Excel.

25. Presionamos doble clic en la herramienta de agrupado para configurar. Seleccionamos las
columnas “CODART” y “Artículo”, cambiamos el alias de salida iguales a los nombres de los
campos de destino para que realice la unión de columnas automáticamente (Si las columnas no

77
Implementación Almacén de Datos Ing. Scarleth Rivera

tienen los nombres iguales, se tiene que realizar la unión manualmente), agregamos a ambas
columnas la operación “Group By” para realizar el agrupado con las dos columnas y
presionamos aceptar.

26. Agregamos la herramienta “Conversión de datos” para convertir los tipos de datos y tamaños
igual a los campos de la tabla destino, para no tener problemas con las columnas de origen y las
de destino. Seleccionamos las columnas, definimos los tipos de datos, longitud y presionamos
aceptar.

27. Agregamos la herramienta “Ordenar” a como lo indica el nombre para ordenar los datos y se
inserten los datos ordenados a la BD del DWH. Se cambia el nombre de la herramienta a
“Ordenar por COD_PROD” y se une al flujo de datos.

78
Implementación Almacén de Datos Ing. Scarleth Rivera

28. Presionamos doble clic en la herramienta “Ordenar” para configurar. Se selecciona la columna
“copia de COD_PROD”, esta columna con la conversión de datos, se ordenará ascendentemente
y presionamos aceptar.

29. Agregamos la herramienta “Destino de OLE DB” para configurar la conexión al SQL y realice la
inserción de los datos. Se cambia el nombre de la herramienta por “Insertar Dim_Productos” y
se une al flujo de datos.

79
Implementación Almacén de Datos Ing. Scarleth Rivera

30. Se presiona doble clic a “Inserta Dim_Productos” para configurar. Se selecciona la conexión ya
creada a la Base de Datos del DWH1 y se selecciona la tabla destino en este caso
“Dim_Productos”.

31. En asignaciones se cambian las columnas copia que son los campos con la conversión de datos,
en la columna de entrada de COD_PRODKEY se deja en omitir ya que este campo es “Identidad”
por cada inserción llenara el campo con números secuencialmente y presionamos aceptar.

80
Implementación Almacén de Datos Ing. Scarleth Rivera

32. Se ejecuta el paquete satisfactoriamente.

33. En el SQL Management se realiza un select a la tabla donde se realizó la inserción, validando el
número de filas y el orden.

81
Implementación Almacén de Datos Ing. Scarleth Rivera

34. Agregamos una “Tarea flujo de datos”, cambiamos el nombre a “Cargar Dimension_Clientes” y
unimos con “Cargar Dimension_Productos”.

35. Presionamos doble clic en “Cargar Dimension_Clientes”, agregamos un origen de Excel y le


cambiamos el nombre a “Ventas-Totales-Detalladas2021”.

82
Implementación Almacén de Datos Ing. Scarleth Rivera

36. Presionamos doble clic en el origen de Excel para configurar. Seleccionamos la conexión ya
creada para la base de datos del DWH y la hoja en la que se encuentran los datos.

37. Validamos las columnas y presionamos aceptar.

83
Implementación Almacén de Datos Ing. Scarleth Rivera

38. Agregamos la herramienta “Agregado” para agrupar y eliminar datos duplicados. Cambiamos el
nombre a “Eliminar duplicados de clientes” y unimos al origen de Excel.

39. Presionamos doble clic en la herramienta de agrupado para configurar. Seleccionamos las
columnas “CODCLI”, “CLIENTE”, “PAIS”, “PROVINCIA” y ”ZONA”, cambiamos el alias de salida
iguales a los nombres de los campos de destino para que realice la unión de columnas

84
Implementación Almacén de Datos Ing. Scarleth Rivera

automáticamente (Si las columnas no tienen los nombres iguales, se tiene que realizar la unión
manualmente), agregamos a todas las columnas la operación “Group By” para realizar el
agrupado con las columnas y presionamos aceptar.

40. Agregamos la herramienta “Conversión de datos” para convertir los tipos de datos y tamaños
igual a los campos de la tabla destino, para no tener problemas con las columnas de origen vs
las de destino. Seleccionamos las columnas, definimos los tipos de datos, longitud y
presionamos aceptar.

41. Agregamos la herramienta “Ordenar” a como lo indica el nombre para ordenar los datos y se
inserten los datos ordenados a la BD del DWH. Se cambia el nombre de la herramienta a
“Ordenar por COD_CLI” y se une al flujo de datos.

85
Implementación Almacén de Datos Ing. Scarleth Rivera

42. Presionamos doble clic en la herramienta “Ordenar” para configurar. Se selecciona la columna
“copia de COD_CLI”, esta columna con la conversión de datos, se ordenará ascendentemente y
presionamos aceptar.

43. Agregamos la herramienta “Destino de OLE DB” para configurar la conexión al SQL y realice la
inserción de los datos. Se cambia el nombre de la herramienta por “Insertar Dim_Clientes” y se
une al flujo de datos.

86
Implementación Almacén de Datos Ing. Scarleth Rivera

44. Se presiona doble clic a “Inserta Dim_Clientes” para configurar. Se selecciona la conexión ya
creada a la Base de Datos del DWH1 y se selecciona la tabla destino en este caso
“Dim_Clientes”.

45. En asignaciones se cambian las columnas copia que son los campos con la conversión de datos,
en la columna de entrada de COD_CLIKEY se deja en omitir ya que este campo es “Identidad”
por cada inserción llenará el campo con números secuencialmente y presionamos aceptar.

87
Implementación Almacén de Datos Ing. Scarleth Rivera

47. Se ejecuta el paquete satisfactoriamente.

48. En el SQL Management se realiza un select a la tabla donde se realizó la inserción, validando el
número de filas y el orden.

88
Implementación Almacén de Datos Ing. Scarleth Rivera

49. Agregamos una tarea ejecutar SQL y le cambiamos el nombre a “Dim_Tiempo” y unimos a “Cargar
Dimension_Clientes”.

50. Presionamos doble clic en “Dim_Tiempo” para configurar. Seleccionamos la conexión a la BD del
DWH, en “SQL Statement” ingresamos las consultas, en este caso ingresamos el script que llenara la
tabla indicada.

89
Implementación Almacén de Datos Ing. Scarleth Rivera

51. Ejecutamos el paquete satisfactoriamente.

52. En el SQL Management se realiza un select a la tabla donde se realizó la inserción, validando el
número de filas.

90
Implementación Almacén de Datos Ing. Scarleth Rivera

53. Agregamos una “Tarea flujo de datos”, cambiamos el nombre a “Cargar Hechos_Ventas” y unimos
con “Dim_Tiempo”.

54. Presionamos doble clic en “Cargar Hechos_Ventas”, agregamos un origen de Excel y le cambiamos el
nombre a “Ventas-Totales-Detalladas2021”.

91
Implementación Almacén de Datos Ing. Scarleth Rivera

55. Presionamos doble clic en el origen de Excel para configurar. Seleccionamos la conexión ya creada
para la base de datos del DWH y la hoja en la que se encuentra los datos.

56. Validamos las columnas y presionamos “Aceptar”.

92
Implementación Almacén de Datos Ing. Scarleth Rivera

57. Agregamos la herramienta “Agregado” para agrupar y eliminar datos duplicados. Cambiamos el
nombre a “Eliminar duplicados de clientes” y unimos al origen de Excel.

58. Presionamos doble clic en la herramienta de agrupado para configurar. Seleccionamos las columnas
“CODCLI”, “CLIENTE”, “PAIS”, “PROVINCIA” y ”ZONA”, cambiamos el alias de salida iguales a los nombres
de los campos de destino para que realice la unión de columnas automáticamente (Si las columnas no
tienen los nombres iguales, se tiene que realizar la unión manualmente), agregamos a todas las
columnas la operación “Group By” para realizar el agrupado con las columnas y presionamos aceptar.

59. Agregamos la herramienta “Conversión de datos” para convertir los tipos de datos y tamaños igual a
los campos de la tabla destino, para no tener problemas con las columnas de origen vs las de destino.
Seleccionamos las columnas, definimos los tipos de datos, longitud y presionamos aceptar.

93
Implementación Almacén de Datos Ing. Scarleth Rivera

60. Agregamos la herramienta “Búsqueda”. Se cambia el nombre de la herramienta a “Buscar por


COD_PRODKEY” y se une al flujo de datos.

94
Implementación Almacén de Datos Ing. Scarleth Rivera

61. Presionamos doble clic en la herramienta “Búsqueda” para configurar. En general se cambia como se
tratan las filas sin entradas coincidentes a “Redirigir filas a resultados no coincidentes”.

62. En conexión seleccionamos la conexión ya creada al DWH1 y la tabla “Dim_Productos”.

95
Implementación Almacén de Datos Ing. Scarleth Rivera

63. En columnas unimos las columnas COD_PROD y COD_PRODKEY. Seleccionamos como columna de
búsqueda COD_PRODKEY.

64. Agregamos la herramienta “Búsqueda”. Se cambia el nombre de la herramienta a “Buscar por


COD_CLIKEY” y se une al flujo de datos.

96
Implementación Almacén de Datos Ing. Scarleth Rivera

65. Unimos al flujo de datos, en la salida seleccionamos “Salida de entradas coincidentes de búsqueda” y
presionamos aceptar.

66. Presionamos doble clic en la herramienta “Búsqueda” para configurar. En general se cambia como se
tratan las filas sin entradas coincidentes a “Redirigir dilas a resultados no coincidentes”.

97
Implementación Almacén de Datos Ing. Scarleth Rivera

67. En conexión seleccionamos la conexión ya creada al DWH1 y la tabla “Dim_Clientes”.

68. En columnas unimos las columnas COD_CLI y COD_CLIKEY. Seleccionamos como columna de
búsqueda COD_CLIKEY.

98
Implementación Almacén de Datos Ing. Scarleth Rivera

69. Agregamos la herramienta “Búsqueda” y se cambia el nombre de la herramienta a “Buscar por


FECHA”.

70. Unimos al flujo de datos, en la salida seleccionamos “Salida de entradas coincidentes de búsqueda” y
presionamos aceptar.

99
Implementación Almacén de Datos Ing. Scarleth Rivera

71. Presionamos doble clic en la herramienta “Búsqueda” para configurar. En general se cambia como se
tratan las filas sin entradas coincidentes a “Redirigir filas a resultados no coincidentes”.

72. En columnas unimos las columnas FECHA y FECHA. Seleccionamos como columna de búsqueda
FECHA y presionamos aceptar.

100
Implementación Almacén de Datos Ing. Scarleth Rivera

73. Agregamos la herramienta “Columna derivada” y se cambia el nombre de la herramienta a “Cálculo


de venta”.

74. Unimos al flujo de datos, en la salida seleccionamos “Salida de entradas coincidentes de búsqueda” y
presionamos aceptar.

101
Implementación Almacén de Datos Ing. Scarleth Rivera

75. Presionamos doble clic en “Cálculo de venta” para configurar. En las columnas arrastramos
“UNIDADES”, “VENTAS” y “COSTOS”; en la columna derivada escogemos las opciones de reemplazar el
campo que le corresponda y en las expresiones agregamos el cálculo para cada columna derivada.
Adicional agregar columna “Utilidad” y en la expresión ingresamos el cálculo (ventas * unidades – costos
* unidades) y presionamos aceptar.

76. Agregamos la herramienta “Agregado”, se cambia el nombre de la herramienta a “Agrupar por


Llaves de Dimensiones” y unimos al flujo de datos.

102
Implementación Almacén de Datos Ing. Scarleth Rivera

77. Presionamos doble clic en “Agrupar por Llaves de Dimensiones” y agregamos las llaves de
dimensiones “COD_PROKEY” (Operación Group By), “COD_CLIKEY” (Operación Group By), “FECHA”
(Operación Group By), “UNIDADES” (Operación Sum), “COSTOS” (Operación Sum), “VENTAS” (Operación
Sum), “UTILIDAD” (Operación Sum) y presionamos aceptar.

78. Arrastramos destino de OLE DB y cambiar nombre por “Insertar Hechos_Ventas” y unimos al flujo de
datos.

103
Implementación Almacén de Datos Ing. Scarleth Rivera

79. Presionamos doble clic en destino OLE DB “Insertar Hechos_Ventas” para configurar y seleccionamos
la tabla donde se insertarán los datos.

104
Implementación Almacén de Datos Ing. Scarleth Rivera

80. En asignaciones validamos que las columnas estén correctamente vinculadas, se vinculan
automáticamente cuando las columnas de entradas tienen el mismo nombre de las columnas de destino
y presionamos aceptar.

81. Ejecutamos el paquete satisfactoriamente.

105
Implementación Almacén de Datos Ing. Scarleth Rivera

106
Implementación Almacén de Datos Ing. Scarleth Rivera

107
Implementación Almacén de Datos Ing. Scarleth Rivera

108
Implementación Almacén de Datos Ing. Scarleth Rivera

Paquete ETLDWH3 (Carga de datos semi-incremental)

82. Para este paquete reutilizaremos la BD de DW1 con la diferencia que agregaremos dos campos
“FECHA_INICIAL” Y “FECHA_FINAL” en las tablas “Dim_Productos” y “Dim_Clientes”. Ejecutamos el
script para crear la base de datos.

109
Implementación Almacén de Datos Ing. Scarleth Rivera

83. También reutilizaremos el paquete de ETLDWH2, duplicaremos el paquete y lo renombraremos a


ETLDHW3.

84. En el flujo de control, en Limpiar tablas modificamos la conexión a la nueva base de datos DW2 y
modificamos las tablas a limpiar quedando únicamente “Hechos_Ventas” y “Dim_Tiempo”.

110
Implementación Almacén de Datos Ing. Scarleth Rivera

85. En todas las conexiones a SQL cambiamos las conexiones de DW1 a DW2. Ingresamos al flujo de
datos “Cargar Dimension_Productos” y eliminamos la herramienta “Insertar Dim_Productos”.

86. Agregamos la herramienta “Dimensión de variación lenta”, cambiamos el nombre por “SC02
Dim_Productos” y unimos al flujo.

87. Presionamos doble clic para configurar “SC02 Dim_Productos”. Presionamos siguiente.

111
Implementación Almacén de Datos Ing. Scarleth Rivera

88. Seleccionamos la conexión a la BD, tabla “Dim_Productos” y seleccionamos las columnas de


entradas con nombre de copia de “COD_PROD” y “PRODUCTO” que son los productos con la conversión.
En el campo COD_PRO agregamos en tipo de clave, clave empresarial y presionamos siguiente.

89. Agregamos la columna PRODUCTO, seleccionamos el tipo de Atributo histórico y presionamos


siguiente.

112
Implementación Almacén de Datos Ing. Scarleth Rivera

90. Agregamos la opción de fecha inicial y fecha final, agregamos los campos que corresponden a cada
campo, en variable para establecer valores de fecha seleccionamos “System:StartTime” y presionamos
siguiente.

91. Deshabilitamos la compatibilidad con miembros deducidos y presionamos siguiente.

113
Implementación Almacén de Datos Ing. Scarleth Rivera

92. Presionamos finalizar.

93. Presionamos doble clic en “SC02 Dim_Productos” y mostrar el editor avanzado.

114
Implementación Almacén de Datos Ing. Scarleth Rivera

94. En la pestaña Propiedades de componentes cambiamos la propiedad “CurrentRowWhere”, se deja


igual a la siguiente imagen y presionamos aceptar.

95. Cambiamos el nombre de la herramienta columna derivada por “Expirar Registro”. Presionamos
doble clic y modificamos la expresión de la columna “Fecha_Final” agregando la función GetDate() y
presionamos aceptar.

115
Implementación Almacén de Datos Ing. Scarleth Rivera

96. Cambiamos el nombre de la herramienta “Comando de OLE DB” por “Actualizar Fecha Final”.
Presionamos doble clic, en la pestaña Propiedades de componentes editamos la propiedad
“SQLCOMMAND” lo dejamos igual a la siguiente imagen y presionamos aceptar.

97. Cambiamos el nombre de la herramienta “Columna derivada 1” por “Inicializar Fecha_Inicial y


Fecha_Final”. Presionamos doble clic para configurar, en la columna expresión de FECHA_INICIAL
modificamos la expresión, agregamos la línea de columna FECHA_FINAL igual que en la imagen y
presionamos aceptar.

116
Implementación Almacén de Datos Ing. Scarleth Rivera

98. Cambiamos el nombre de la herramienta “Insertar destino” por “Insertar Dim_Productos”.

117
Implementación Almacén de Datos Ing. Scarleth Rivera

99. Ingresamos al flujo de “Cargar Dimension_Clientes” y eliminamos la herramienta “Insertar


Dim_Productos”.

100. Agregamos la herramienta “Dimensión de variación lenta”, cambiamos el nombre por “SC02
Dim_Clientes” y unimos al flujo.

118
Implementación Almacén de Datos Ing. Scarleth Rivera

101. Presionamos doble clic para configurar “SC02 Dim_Clientes”. Presionamos siguiente.

102. Seleccionamos la conexión a la BD, tabla “Dim_Clientes” y seleccionamos las columnas de entradas
con nombre de copia que son las columnas creadas por la conversión. En el campo COD_CLIE agregamos
en tipo de clave, clave empresarial y presionamos siguiente.

119
Implementación Almacén de Datos Ing. Scarleth Rivera

103. Agregamos las siguientes columnas de la imagen con el tipo de Atributo histórico y presionamos
siguiente.

120
Implementación Almacén de Datos Ing. Scarleth Rivera

104. Agregamos la opción de fecha inicial y fecha final, agregamos los campos que corresponden a cada
campo, en variable para establecer valores de fecha seleccionamos “System:StartTime” y presionamos
siguiente.

105. Deshabilitamos la compatibilidad con miembros deducidos y presionamos siguiente.

121
Implementación Almacén de Datos Ing. Scarleth Rivera

106. Presionamos finalizar.

107. Presionamos doble clic en “SC02 Dim_Productos” y mostrar el editor avanzado. En la pestaña
Propiedades de componentes cambiamos la propiedad “CurrentRowWhere”, se deja igual a la siguiente
imagen y presionamos aceptar.

122
Implementación Almacén de Datos Ing. Scarleth Rivera

108. Cambiamos el nombre de la herramienta columna derivada por “Expirar Registro”. Presionamos
doble clic y modificamos la expresión de la columna “Fecha_Final” agregando la función GetDate() y
presionamos aceptar.

123
Implementación Almacén de Datos Ing. Scarleth Rivera

109. Cambiamos el nombre de la herramienta “Comando de OLE DB” por “Actualizar Fecha Final”.
Presionamos doble clic, en la pestaña Propiedades de componentes editamos la propiedad
“SQLCOMMAND” lo dejamos igual a la siguiente imagen y presionamos aceptar.

124
Implementación Almacén de Datos Ing. Scarleth Rivera

110. Cambiamos el nombre de la herramienta “Columna derivada 1” por “Inicializar Fecha_Inicial y


Fecha_Final”. Presionamos doble clic para configurar, en la columna expresión de FECHA_INICIAL
modificamos la expresión, agregamos la línea de columna FECHA_FINAL igual que en la imagen y
presionamos aceptar.

125
Implementación Almacén de Datos Ing. Scarleth Rivera

111. Cambiamos el nombre de la herramienta “Insertar destino” por “Insertar Dim_Clientes”.

126
Implementación Almacén de Datos Ing. Scarleth Rivera

112. Ejecución del paquete satisfactorio.

127
Implementación Almacén de Datos Ing. Scarleth Rivera

113. Ejecución de select en el SQL Management a las tablas del DW2.

128
Implementación Almacén de Datos Ing. Scarleth Rivera

114. Agregamos un registro en el archivo donde obtenemos los datos y guardamos.

115. Ejecutamos nuevamente el paquete y podemos observar que en productos realiza el flujo
normalmente, pero al final solo ingresa 1 fila del nuevo producto que ingresamos, esto se debe porque
la configuración está incremental en la tabla productos.

129
Implementación Almacén de Datos Ing. Scarleth Rivera

130
Implementación Almacén de Datos Ing. Scarleth Rivera

Paquete ETLDWH4 (Carga de datos incremental)

116. Reutilizaremos el paquete de ETLDWH3, duplicaremos el paquete y lo renombraremos a ETLDHW4.

117. Presionamos doble clic en la tarea de flujo de datos “Limpiar tablas”, en “SQLStatement”
modificaremos la consulta, solo dejaremos que limpie la tabla Dim_Tiempo y presionamos aceptar.

131
Implementación Almacén de Datos Ing. Scarleth Rivera

118. Ingresamos al flujo de datos de “Cargar Hechos_Ventas” y eliminamos la herramienta “Insertar


Hechos_Ventas”.

132
Implementación Almacén de Datos Ing. Scarleth Rivera

119. Agregamos el origen de OLE DB y le cambiamos el nombre a “Hechos_Ventas”. Presionamos doble


clic para configurar la conexión a la base de datos DW2, a la tabla Hechos_Ventas y validamos las
columnas.

133
Implementación Almacén de Datos Ing. Scarleth Rivera

120. Agregamos dos herramientas ordenar, la primera le cambiamos el nombre a “Ordenar por llaves de
dimensiones 1” y unimos a “Agrupar por Llaves de Dimensiones”, la segunda le cambiamos el nombre a
“Ordenar por llaves de dimensiones 2” y unimos a “Hechos de ventas”.

134
Implementación Almacén de Datos Ing. Scarleth Rivera

121. Configuramos las herramientas de Ordenar, seleccionando las columnas llaves de las tablas de
dimensión y las ordenamos ascendente.

135
Implementación Almacén de Datos Ing. Scarleth Rivera

121. Agregamos la herramienta combinación de mezcla, cambiamos el nombre por “Revisar si existen
cambios vs el DW” y unimos a las dos herramientas de Ordenar.

136
Implementación Almacén de Datos Ing. Scarleth Rivera

122. Presionamos doble clic en “Revisar si existen cambios vs el DW” para configurar. Seleccionamos
combinación externa izquierda para que compare los datos del origen, donde se tomaran las diferencias
e ingresarlas al destino. Seleccionamos todas las columnas del lado izquierdo (origen) y del lado derecho
seleccionamos los campos que no son llaves y se llenan desde el origen, adicional, renombramos y
agregamos al nombre de la columna “Hechos” para diferenciar las columnas entre los orígenes.

137
Implementación Almacén de Datos Ing. Scarleth Rivera

123. Agregamos la herramienta División condicional y cambiamos el nombre a “Insertar o Actualizar en


el DW?”. Presionamos doble clic en la herramienta para configurar, agregamos dos condiciones, la
primera insertar con la condición si es nulo y la segunda actualizar si alguna de las columnas es diferente
origen y destino, ingresamos nombre de salida predeterminada “Sin cambios”.

124. Agregamos una herramienta e Destino de OLE DB y cambiamos el nombre a “Insertar


Hechos_Ventas”. Unimos a “Insertar o Actualizar en el DW?” y en la salida seleccionamos Insertar.

138
Implementación Almacén de Datos Ing. Scarleth Rivera

125. Presionamos doble clic en la herramienta “Insertar Hechos_Ventas” para configurar la conexión a la
base de datos DW2, la tabla “Hechos_Ventas”, validamos la columna y presionamos aceptar.

139
Implementación Almacén de Datos Ing. Scarleth Rivera

126. Agregamos la herramienta Comando de OLE DB y cambiamos el nombre a “Actualizar


Hechos_Ventas”. Unimos a la herramienta “Insertar o Actualizar en el DW?” y seleccionamos la salida
“Actualizar”.

140
Implementación Almacén de Datos Ing. Scarleth Rivera

128. Presionamos doble clic en “Actualizar Hechos_Ventas” para configurar. En la pestaña


Administradores de conexiones seleccionamos la conexión al DW2.

141
Implementación Almacén de Datos Ing. Scarleth Rivera

129. En la pestaña propiedades de componente, ingresamos la consulta para actualizar en


“SQLCOMMAND” e ingresamos la consulta de la siguiente imagen.

142
Implementación Almacén de Datos Ing. Scarleth Rivera

130. En la pestaña Asignaciones de columnas, agregamos las asignaciones de las columnas a los
parámetros que ingresamos en la consulta según el orden ingresado y presionamos aceptar.

143
Implementación Almacén de Datos Ing. Scarleth Rivera

131. En el SQL Management volvemos a ejecutar el script de la creación de la base de datos DW2 para
recrearla y probar el paquete “ETLDWH4”.

132. Se ejecuta el paquete satisfactoriamente y el flujo finaliza con la inserción.

144
Implementación Almacén de Datos Ing. Scarleth Rivera

133. Realizamos la consulta en el SQL Management y validamos los datos insertados.

134. Ejecutamos el paquete por segunda vez para validar que no inserta o actualiza ninguna fila al no
tener ninguna modificación en la data origen.

145
Implementación Almacén de Datos Ing. Scarleth Rivera

135. Modificamos el archivo de Excel la última fila, guardamos y ejecutamos el paquete por tercera vez
para validar que actualiza 1 fila que es la fila que modificamos en el archivo de origen.

146
Implementación Almacén de Datos Ing. Scarleth Rivera

147
Implementación Almacén de Datos Ing. Scarleth Rivera

Creación de BD de DW con FILEGROUPS

1. Se realiza captura del script de creación de Base de datos de DW2 con FILEGROUPS, simulando
con rutas diferentes para tenerlos en servidores o discos de almacenamientos diferentes.

148
Implementación Almacén de Datos Ing. Scarleth Rivera

2. Revisión de FILEGROUPS e Índices creados.

3. Ejecución de paquete ETLDWH4 con base de datos recreada con mejoras (FILEGROUP,
separación de rutas de almacenamiento).

149
Implementación Almacén de Datos Ing. Scarleth Rivera

150
Implementación Almacén de Datos Ing. Scarleth Rivera

ANEXOS

Según las indicaciones realizaremos una práctica sobre la creación de ETL. Para ello realizaremos los
siguientes pasos:

1. Crear nuevo Proyecto dentro de la solución creada en la primera Práctica. Nos vamos a
“Archivo” -> “Agregar” -> “Nuevo Proyecto”:

2. Nos aparece la pantalla para crear el proyecto, lo que hacemos es buscar “Integration” y
seleccionamos la primera opción. Damos clic en “Siguiente”:

151
Implementación Almacén de Datos Ing. Scarleth Rivera

3. Escogemos el nombre del proyecto y conservamos la ruta de la solución. Damos clic en “Crear”:

4. Renombré el proyecto anterior porque se llamaba como la solución. Luego podemos ver ambos
proyectos:

5. Adicional procedemos a ejecutar el script de la Base de datos con las inserción de datos:

152
Implementación Almacén de Datos Ing. Scarleth Rivera

Aggregate

6. Vamos a trabajar con el primer paso el cual es agregar las nuevas tablas “Promedios” y
“JugadoresPorNacionalidad”

7. Agregamos un “Execute TSQL Statement”, lo conectamos a la base de datos SSIS, dentro del
campo “Connection” desplegamos el combo, nos aparece la ventana con las conexiones

153
Implementación Almacén de Datos Ing. Scarleth Rivera

existentes, como no tenemos la conexión a la Base, damos clic en “Nueva”:

8. Colocamos el nombre del Server y seleccionamos la base correspondiente, luego damos clic en
“Aceptar” -> “Aceptar” :

154
Implementación Almacén de Datos Ing. Scarleth Rivera

9. Luego insertamos el código en el campo SQLStatement:

10. Agregamos una “Tarea Flujo de datos” y los llamamos “Valores agregados”:

11. Dentro del Flujo de datos, se agrega un control “Origen de OLE DB”, dentro, configuramos la

155
Implementación Almacén de Datos Ing. Scarleth Rivera

conexión a la base, la cual creamos en el paso donde Ejecutaremos el código SQL, y


seleccionamos la tabla “Fifa”:

12. Agregamos un nuevo control tipo “Agregado”, en la configuración, el primer paso es dar clic en
el botón “Avanzados”, se va desplegar un cuadro en la parte de arriba y el botón dirá “Básico”:

13. Agregamos dos variable, la primera agregación es “PromedioPeso” que usa el campo de la tabla
“PiePreferido” seleccionado del combo “Agrupado por columna”y abajo agregamos también el
campo “PesoKG” y escogemos en “Operación” el tipo “AVG” de Average:

156
Implementación Almacén de Datos Ing. Scarleth Rivera

14. El segundo campo de agregación es “JugadoresPorPais” y lo relacionamos con la columna


“Nacionalidad” y usamos el campo “ID” para hacer un conteo, pero renombramos el campo por
“Cantidad”:

15. El siguiente paso es crear un control de Destino OLE DB para insertar los datos en la tabla
“Promedios” de la base SSIS, al conectar el control agregado al destino, despliega la siguiente
ventana para escoger el tipo de agrupación que vamos a usar para obtener los datos:

157
Implementación Almacén de Datos Ing. Scarleth Rivera

16. Dentro de “Insertar Promedios”, escogemos la conexión y la tabla “Promedios”

158
Implementación Almacén de Datos Ing. Scarleth Rivera

17. En la pestaña de “Asignaciones”, se debe escoger los campos correspondientes, damos clic en
“Aceptar”:

18. Agregamos un segundo destino OLE DB, para insertar los datos en la
tabla”JugadoresPorNacionalidad”:

159
Implementación Almacén de Datos Ing. Scarleth Rivera

19. Hacemos el match de los campos a devolver y damos clic en “Aceptar”:

20. Así queda el diagrama de Flujo, pero tenemos una advertencia de truncado de datos en el
campo “PiePreferido”:

160
Implementación Almacén de Datos Ing. Scarleth Rivera

21. Fijandome en la tabla el campo en “Fifa” mide 50 y en la tabla “Promedios”, el campo


correspondiente mide 10, y viendo los datos, indica los valores solo son “Right” y “Left”, por lo
que no necesitamos que el campo tenga tamaño 50:

22. Por lo anterior agregamos un control de “Conversión de datos”, para cambiar el campo
“PiePreferido” de tamaño 50 a 10, como la tabla destino y lo renombramos:

161
Implementación Almacén de Datos Ing. Scarleth Rivera

23. Hacemos los cambios pertinentes para que se use el nuevo campo en “Agregado” e “Insertar
Promedios” y ya no sale la advertencia:

24. Ejecutamos el paquete:

162
Implementación Almacén de Datos Ing. Scarleth Rivera

25. Vemos los datos ya en las tablas destino:

Conditional Split

26. El primer paso es crear dos tablas con la misma estructura de la tabla Fifa pero que indiquen
Mayores y Menores en el nombre:

163
Implementación Almacén de Datos Ing. Scarleth Rivera

27. Agregamos un nuevo paquete en en cual agregamos un flujo de datos llamado “Insertar
Jugadores por Edad”:

28. Agregamos un nuevo Origen de datos OLE DB, lo configuramos para que los datos se obtengan
de un consulta SQL, damos clic en “Aceptar”:

164
Implementación Almacén de Datos Ing. Scarleth Rivera

29. Agregamos el control “División Condicional”, donde agregamos la función Year() para obtener el
año y poder escoger las fecha que son menores o iguales a 1990:

30. Creamos dos destinos, uno para la tabla Mayores y la otra para insertar los datos en la tabla
Menores:

165
Implementación Almacén de Datos Ing. Scarleth Rivera

31. Escogemos la tabla “Mayores1990” y enlazamos los campos, damos clic en “Aceptar”:

32. Ejecutamos el paquete:

166
Implementación Almacén de Datos Ing. Scarleth Rivera

33. Al hacer select a las tablas, podemos ver los datos:

Derived Column

34. Creamos una la tabla en SQL “EdadJugadores”:

167
Implementación Almacén de Datos Ing. Scarleth Rivera

35. Agregamos el Control de flujo de datos con el nombre de “insertar Jugadores por Edad”

36. Agregamos un control de Origen de datos y configuramos la consulta sql que se muestra en
imagen, damos clic en “Aceptar”:

168
Implementación Almacén de Datos Ing. Scarleth Rivera

37. Agregamos una columna derivada para “calcular Edad”, haciendo uso de la fórmula “DateDiff”:

38. Creamos el destino del ETL, para que se almacenen los datos en la tabla correspondiente:

169
Implementación Almacén de Datos Ing. Scarleth Rivera

39. Ejecutamos el paquete:

40. Podemos ver los datos en la tabla en la siguiente imagen:

170
Implementación Almacén de Datos Ing. Scarleth Rivera

Dimensiones Lentamente Cambiantes

41. Creamos el ETL y ponemos un tarea de Flujo de datos, dentro de él ponemos el control de
origen de datos, con el “Modo de acceso a datos” tipo “Comando SQL”:

42. El segundo paso es agregar un componente “Dimensión de variación lenta”, al configurarlo


presenta la imagen siguiente:

171
Implementación Almacén de Datos Ing. Scarleth Rivera

43. Al darle clic al botón “Siguiente” nos aparece las opciones de conexión y escogemos la tabla
“dw.Fifa”, nos aparecen los campos que hacen match con el origen de datos y escogemos en la
“columna de clave”: “Llave Empresarial”:

44. En la siguiente pantalla, escogemos dos columnas, el primero “Club” con el tipo “Atributo
Histórico” y el “nombre” es tipo “Atributo variable” agregamos también “FechaNacimiento”
como “Atributo Fijo”:

172
Implementación Almacén de Datos Ing. Scarleth Rivera

45. Marcamos el check para que presente error si el campo FechaNacimiento, si hay alguna
variación y el otro sin marcar:

46. Escogemos la segunda opción y seleccionamos la Fechas Inicio y Final, seleccionamos la variable
tipo “StartTime”

173
Implementación Almacén de Datos Ing. Scarleth Rivera

47. Desactivamos el check para dejar los datos por defecto:

48. En la siguiente imagen solo damos “Finalizar”:

174
Implementación Almacén de Datos Ing. Scarleth Rivera

49. Al dar Finalizar, crea varios componentes según lo que se configuró:

50. Ejecutamos el paquete:

175
Implementación Almacén de Datos Ing. Scarleth Rivera

51. Este es el resultado de la ejecución:

52. Vamos a hacer una prueba para ver qué hace el ETL, en este caso vamos a cambiar la Fecha de
Nacimiento, el cual debe dar error porque en la configuración marcamos como atributo fijo:

176
Implementación Almacén de Datos Ing. Scarleth Rivera

53. Al ejecutar ejecutar el paquete nos presenta error para impedirlo que no se cambie el campo de
Fecha de Nacimiento:

54. Vamos a actualizar el campo Nombre el cual configuramos como “Atributo variable”, hacemos
select para ver los datos antes de ejecutar el paquete. Modificamos el origen de datos para que
obtenga el código que actualizamos:

177
Implementación Almacén de Datos Ing. Scarleth Rivera

55. Ejecutamos el paquete y ya no presenta error:

56. Al hacer select a la tabla destino, vemos que el campo se cambió de forma normal, sin agregar
registros nuevos:

178
Implementación Almacén de Datos Ing. Scarleth Rivera

57. El tercer ejemplo es para probar el campo que escogimos como “Atributo histórico”,
actualizamos el campo “Club”, y vemos el resultado del código de ejemplo antes de ejecutar,
cambiamos también el origen para solo obtener el registro del ejemplo:

58. Al ejecutar el paquete y verificar los datos, vemos que se agrega un nuevo registro en la tabla
destino, vamos viendo como se mueve las “FechasFin”, con el nuevo registros tiene ese dato en
“Null”:

179
Implementación Almacén de Datos Ing. Scarleth Rivera

Export e Import Column

59. Creamos una nueva tabla para este punto:

60. Usamos los archivos que tenemos dentro de la carpeta “Demos” y creamos el archivo
“Rutas.txt”, lo llenamos seleccionando todos los archivos luego damos (click derecho + Shift),
luego le quitamos las comillas dobles y guardamos:

180
Implementación Almacén de Datos Ing. Scarleth Rivera

61. Creamos en Flujo de datos y dentro, agregamos, el origen de datos, el cual proviene de un
Archivo Plano, seleccionamos la ruta donde está el txt y deschequeamos la opción de que la
primera línea del archivo son los encabezados:

62. En Avanzada, cambiamos el nombre de la columna y le cambiamos el tamaño del campo:

181
Implementación Almacén de Datos Ing. Scarleth Rivera

63. Agregamos el control “Importar columna”, en la segunda pestaña señalamos el campo rutas:

64. Nos ubicamos la opción “Salida de Importar Columna”, seleccionamos Columnas de salida y
damos clic en el botón “Agregar Columna”, y lo llamamos “Archivos”

182
Implementación Almacén de Datos Ing. Scarleth Rivera

65. Enlazamos la columna Entrada con la columna Salida, mediante la propiedad


“FileDataColumnID”, nos vamos a la columna “Archivo” y vemos que ID tiene y lo colocamos en
lugar del cero:

66. En este caso el ID es 34:

183
Implementación Almacén de Datos Ing. Scarleth Rivera

67. Agregamos un control de destino y seleccionamos la tabla “Documentos”:

68. En Asignación se enlazan los campos:

184
Implementación Almacén de Datos Ing. Scarleth Rivera

69. Ejecutamos el paquete:

70. Hacemos select a la tabla y podemos ver que tenemos el archivo dentro de la base de datos:

185
Implementación Almacén de Datos Ing. Scarleth Rivera

71. Creamos un nuevo Flujo de datos, renombramos el anterior y lo deshabilitamos y creamos el


nuevo llamándolo “Export”:

72. Agregamos el componente “Export Column”, seleccionamos el tipo de datos y la ruta y


movemos los archivos a otro lugar, damos clic en “Aceptar”:

186
Implementación Almacén de Datos Ing. Scarleth Rivera

73. Ejecutamos el paquete pero antes vemos que no están los archivos:

74. Al ejecutar podemos ver que tenemos los archivos nuevamente:

187
Implementación Almacén de Datos Ing. Scarleth Rivera

For Loop

75. Creamos una nueva tabla “Contadores”:

76. Creamos un parámetro, tipo entero dando clic derecho sobre la parte en blanco del “Flujo de
Control” y le vamos a poner “Contador”:

188
Implementación Almacén de Datos Ing. Scarleth Rivera

77. Agregamos un contenedor para hacer un bucle, dentro de él colocamos un control de para
ejecutar Tarea SQL, seleccionamos la conexión y colocamos el código sugerido:

78. Nos vamos a la pestaña “Asignación de parámetros” y seleccionamos el parámetro creado


anteriormente:

189
Implementación Almacén de Datos Ing. Scarleth Rivera

79. Configuramos el Contenedor del bucle, con los datos, sobre los datos, para recorrer el ciclo y
cuando detenerse:

80. Verificamos que la tabla está vacía:

190
Implementación Almacén de Datos Ing. Scarleth Rivera

81. Ejecutamos el paquete, todo está correcto y podemos ver el resultado:

ForEach Loop

82. Agregamos un nuevo campo a la tabla “dbo.Fifa”:

191
Implementación Almacén de Datos Ing. Scarleth Rivera

83. Agregamos dos variables, una llamada “Datos” y el otro “ID”:

84. Creamos un control “Tarea Ejecutar SQL ”, seleccionamos la conexión y colocamos un select
para un top 10 a la tabla Fifa:

192
Implementación Almacén de Datos Ing. Scarleth Rivera

85. En la pestaña “Conjunto de resultados”, damos clic al botón “Agregar” y en la columna “Result
Name” colocamos un cero y en “Nombre de Variable”, escogemos la variable “Datos”, creado
anteriormente:

86. Agregamos un control “Contenedor de Bucles Foreach”, al configurar nos vamos a la pestaña
“Colección”. Dentro de ahí, vamos escoger del combo “Enumerador de ADO para foreach” y nos
cambia los datos abajo, ahí escogemos la variable “Datos”, damos clic en “Aceptar”:

193
Implementación Almacén de Datos Ing. Scarleth Rivera

87. En la pestaña “Asignación de variables” del Contenedor, se escoge la variable “ID” que devolverá
el valor de cada iteración, damos clic en “Aceptar”:

88. Dentro del bucle vamos tener un control para ejecutar una consulta sql, la cual va a actualizar el
campo, pero amarrado a una variable:

194
Implementación Almacén de Datos Ing. Scarleth Rivera

89. En “Asignación de parámetros” agregamos la variable “ID” previamente configurado:

90. Verificamos que todos los registros están nulos antes de ejecutar el paquete:

195
Implementación Almacén de Datos Ing. Scarleth Rivera

91. Al ejecutar y hacer select de la consulta anterior, vemos que tenemos 10 registros, por el top 10
de la tarea ejecutar sql:

Lookup

92. Comenzamos eliminado 1000 Registros de la tabla “EdadJugadore”:

196
Implementación Almacén de Datos Ing. Scarleth Rivera

93. Copiamos los controles del ETL Columna Derivada:

94. Aquí vamos a agregar un control “Búsqueda” entre “Calcular Edad” y “Insertamos en
EdadJugaores”; en la configuración, en la pestaña “General” escogemos en el combo con la
opción “Redirigir filas a resultados no coincidentes”

197
Implementación Almacén de Datos Ing. Scarleth Rivera

95. En conexiones, escogemos la tabla correspondiente:

96. En “Columnas” enlazamos el código “ID”, siempre dentro del control de “Búsqueda”:

198
Implementación Almacén de Datos Ing. Scarleth Rivera

97. Verificamos que sacando la cantidad de Registros la tabla “Fifa” tiene 1000 registros más que la
tabla “EdadJugadores”:

98.Al ejecutar el paquete, en el mensaje nos indica que insertó 1000 filas y en SQL podemos ver
también:

199
Implementación Almacén de Datos Ing. Scarleth Rivera

Lookup con Caché Destination

99. En este ejecicios, agregamos dos “Flujo de datos”, como se muestra en la imagen:

100. Dentro de “Seleccionar datos”, agregamos un control de “Origen de datos” y hacemos


un select a la tabla correspondiente, damos clic en “Aceptar”:

200
Implementación Almacén de Datos Ing. Scarleth Rivera

101. Agregamos un control de “Transformación de caché”, lo primero que configurado es


crear una nueva conexión, poniéndole un nombre “CacheCon”, marcamos el check de “Usa
caché de archivo y seleccionamos una dirección del “archivocache”

102. En la pestaña “Columnas” y en la columna “Posición” el “ID” le ponemos “1”, esto se usa
como un índice, damos clic en “Aceptar”:

201
Implementación Almacén de Datos Ing. Scarleth Rivera

103. Enlazamos las columnas del Origen de datos, damos clic en “Aceptar”:

104. Dentro del segundo Control Flujo de datos “Con caché”, agregamos primero el origen de
datos, en la cual usaremos una consulta de “Fifa” con pocos campos:

202
Implementación Almacén de Datos Ing. Scarleth Rivera

105. Agregamos un control de, dentro de la configuración en “Tipo de conexión”, escogemos


“Administrador de conexiones de caché”, en amarillo pone una advertencia para ir la pestaña
conexión para escogerla:

106. Por defecto escoge la conexión creada en el otro Flujo de datos:

203
Implementación Almacén de Datos Ing. Scarleth Rivera

107. Seleccionamos las columnas y las enlazamos:

108. Agregamos los pasos “Calcular Edad” e “Insertamos en EdadJugadores”

204
Implementación Almacén de Datos Ing. Scarleth Rivera

109. Verificamos los datos y procedemos a eliminar 1000 filas:

110. Ejecutamos el paquete y podemos ver que se trajo 17 mil registros de la tabla
“EdadJugadores” al archivo “Caché”:

205
Implementación Almacén de Datos Ing. Scarleth Rivera

111. En el segundo Flujo de datos ejecutamos pero los datos lo toma de caché, con el
objetivo de mejorar los tiempos de respuestas de lecturas en tablas grandes, viendo el select de
la cantidad se volvió a restaurar con los 1000 registros insertados de la caché:

Lookup sin Caché que Transformation

112. En el primer paso eliminamos los 1000 registros nuevamente:

206
Implementación Almacén de Datos Ing. Scarleth Rivera

113. Utilizamos los mismos pasos del ETL Lookup:

114. Editamos el control de “Búsqueda” y escogemos la opción “Sin caché”:

207
Implementación Almacén de Datos Ing. Scarleth Rivera

115. En la conexión escogemos la tabla “EdadJugadores”

116. Mapeamos los campos

208
Implementación Almacén de Datos Ing. Scarleth Rivera

117. Vuelve a insertar los registros pero ahora de la tabla directamente:

Merge Join

118. Ejecutamos las siguientes instrucciones SQL:

209
Implementación Almacén de Datos Ing. Scarleth Rivera

119. Creamos don controles de “Orígenes de datos”, el primero lo conectamos a la tabla


EdadJugadores:

120. Creamos otro componente de Origen de datos pero ahora lo llamamos “Jugadores” y lo
enlazamos directamente con la tabla “Fifa”:

210
Implementación Almacén de Datos Ing. Scarleth Rivera

121. Luego agregamos un control para ordenar los datos por “ID”, lo hacemos para ambos
orígenes de datos del paso anterior:

122. Agregamos el control para “Mezclar”, al enlazar con el control “Ordenar”, nos despliega
esta pantalla de la imagen y escogemos el orden de la “Entrada”, seleccionamos la primera
opción y damos clic en “Aceptar”:

211
Implementación Almacén de Datos Ing. Scarleth Rivera

123. Para finalizar colocamos un componente para insertar los datos en la tabla
“EdadNacimientoJugadores”:

124. Enlazamos los campos:

212
Implementación Almacén de Datos Ing. Scarleth Rivera

125. Ejecutamos el paquete y podemos ver los datos en SQL:

Merge, Sort y Union all

126. Creamos una nueva tabla “FifaMerged”:

213
Implementación Almacén de Datos Ing. Scarleth Rivera

127. Agregamos dos orígenes de datos uno para obtener los datos de la tabla
“Menores1990” y “Mayores1990” de la base de datos “Fifa”. Damos clic en “Aceptar”:

128. Es obligatorio tener un control de “Ordenar” para que luego podamos usar el control
“Mezclar”:

214
Implementación Almacén de Datos Ing. Scarleth Rivera

129. Agregamos el componente “Mezclar” para unir los datos de ambos set de datos,
escogemos entrada 1 y al unir el segundo control de “Mayore1990” entiende que el la 2 parte:

130. Agregamos un control “Destino OLE DB” para insertar los datos en la tabla “FifaMerged”

215
Implementación Almacén de Datos Ing. Scarleth Rivera

131. Enlazamos los campos, de un lado solo tenemos 3 columnas, y en el destino todas las de
la tabla “Fifa”, damos clic en “Aceptar”:

132. Al ejecutar, tenemos un error en el control de destino:

216
Implementación Almacén de Datos Ing. Scarleth Rivera

133. El error indica que la columna “Nombre” no admite datos Nulos:

134. Por lo anterior, vamos a probar el componente “Union All”:

217
Implementación Almacén de Datos Ing. Scarleth Rivera

135. Dentro de la tarea de Flujo de datos “Ejercicio Union All”, copiamos los dos orígenes de
datos del ejercicio anterior, procedemos en agregar el componentes “Unión de todo” y no
debemos configurar nada adicional:

136. Creamos una segunda tabla “FifaMerged2”, para que tengamos los campos exacto de
las tablas “Menores1990” y “Mayores1990” para usar el componente “Unión de Todo”.
Adicional hacemos los “count()” nuevo para luego identificar la cantidad de la tabla final:

218
Implementación Almacén de Datos Ing. Scarleth Rivera

137. Agregamos el destino OLE DB, y seleccionamos la tabla “FifaMerged2”:

138. En la pestaña “Asignaciones”, podemos ver que los campos ya están enlazados y
corresponde con los campos de origen, damos clic en “Aceptar”:

219
Implementación Almacén de Datos Ing. Scarleth Rivera

139. Al ejecutar el paquete y comprobar los datos vemos que la tabla usada en el paso
“Final” tiene los los 17994 registros:

Merge

140. Truncamos la tabla FifaMerged2 creada con la estructura de “Menores1990”, para


volver a insertar pero con los componentes “Ordenar” y “Mezclar”:

220
Implementación Almacén de Datos Ing. Scarleth Rivera

141. Ejecutamos el paquete y verificamos los registro en la tabla destino:

142. La segunda parte es la que realice en los pasos 136 al 141.

Multicast

143. Creamos una nueva tabla “NombresUno”:

221
Implementación Almacén de Datos Ing. Scarleth Rivera

144. Dentro del Data Flow, colocamos un control de origen OLD DB con la consulta siguiente
donde nos traemos solamente el nombre de la tabla “Fifa”:

145. Agregamos un control Multicast, que lo que hace es poder tener más de un destino para
los datos, agregamos el primer destino que es a la tabla creada “NombresUno” y hacemos
match del campo “Nombre” en “Asignaciones”. Damos clic en “Aceptar”:

146. Creamos ahora un control de destino para archivos planos. Primero escogemos la ruta

222
Implementación Almacén de Datos Ing. Scarleth Rivera

donde vamos a almacenar el nuevo archivo txt con llamado “Nombre”:

147. En “Avanzadas”, le vamos a dar más tamaño a la columna en el txt y en “Asignaciones”


hacemos match de las columnas entrada y salida”:

223
Implementación Almacén de Datos Ing. Scarleth Rivera

148. Ejecutamos el paquete y verificamos que tenemos los datos tanto en la tabla como en el
archivo txt:

OLE DB Command

149. Agregamos nuevo campo para almacenar el rango de altura de los jugadores en la tabla
“Fifa”

224
Implementación Almacén de Datos Ing. Scarleth Rivera

150. Obtenemos los datos:

151. Agregamos un control de “Columna Derivada” y la configuramos como se muestra a


continuación:

225
Implementación Almacén de Datos Ing. Scarleth Rivera

152. Agregamos ahora un “Comando OLE DB” y configuramos primero la conexión, en este
caso la de la bases SSIS:

153. En la pestaña “Propiedades de Componente”, agregamos un “Update” para del


resultado de la “columna derivada” obtener el dato y almacenarlo en la nueva columna de la
tabla “Fifa”:

154. Por último en la pestaña “Asignación”, escogemos los datos que corresponderá con los

226
Implementación Almacén de Datos Ing. Scarleth Rivera

parámetros del update configurado anteriormente, damos clic en “Aceptar”:

155. Ejecutamos el paquete y verificamos los datos actualizados:

227
Implementación Almacén de Datos Ing. Scarleth Rivera

Row y Percentage Sampling

156. Creamos varias tablas para realizar este ejercicio práctico:

157. Agregamos dos orígenes de datos con la misma consulta solo que el nombre indica que
uno es para datos Absoluto y Relativo:

228
Implementación Almacén de Datos Ing. Scarleth Rivera

158. En este paso escogemos el control “Muestreo de fila” y escogemos 1000 en el dato
“Número de Filas”, vemos que las columnas hacen matchy damos clic en “Aceptar”:

159. En el origen Relativo, vamos a usar el componente “Muestreo de porcentaje” y en la


configuración dejamos los datos por default:

229
Implementación Almacén de Datos Ing. Scarleth Rivera

160. Añadiremos dos controles de destino de datos para cada componente, al enlazar vamos
a tener el condicional de “Seleccionados” y “No seleccionados”:

161. En el primer caso escogemos la tabla “AleatorioAbsolutos”:

230
Implementación Almacén de Datos Ing. Scarleth Rivera

162. En el segundo escogemos la tabla “AleatoriosAbsolutosNoElegidos”:

163. En el segundo flujo de datos Relativos:

231
Implementación Almacén de Datos Ing. Scarleth Rivera

164. Escogemos la tabla “AleatoriosRelativos”, hacemos match de los campos:

165. Por último escogemos la tabla “AleatoriosRelativosNoElegidos”:

232
Implementación Almacén de Datos Ing. Scarleth Rivera

166. Ejecutando el paquete vemos que al consultar las tablas creadas inicialmente:

Rowcount

167. Creamos una nueva tabla:

233
Implementación Almacén de Datos Ing. Scarleth Rivera

168. Copiamos el flujo de datos del ejercicio “15-OLE DB Command”, ya que los vamos a
utilizar y solo le agregaremos unas tareas adicionales y creamos una variable llamada
“Contador”:

169. Agregamos un control para “Recuento de fila” y seleccionamos la variable creada en el


paso anterior:

234
Implementación Almacén de Datos Ing. Scarleth Rivera

170. Agregamos en la parte del Flujo de datos un componente “Tarea Ejecutar SQL” y
colocalos un insert a la tabla que creamos en un paso anterior:

171. Seleccionamos los parámetros, les colocamos el número de orden y el tamaño de los
parámetros:

235
Implementación Almacén de Datos Ing. Scarleth Rivera

172. Ejecutamos el paquete y de esta forma tenemos auditados los paquete:

Script Component

173. Creamos un origen de datos para leer el “NombreCompleto” en la tabla “Fifa”:

236
Implementación Almacén de Datos Ing. Scarleth Rivera

174. Escogemos un control “Componente de script”, nos aparece esta pantalla pero para
escoger el tipo, luego enlazamos con el origen:

175. Seleccionamos la columnas de entrada:

237
Implementación Almacén de Datos Ing. Scarleth Rivera

176. Cambiamos el el nombre de la variable salida “MyOutput” y cambiamos el tipo de


sincronización a “Ninguno”:

177. Agregamos una variable de salida:

238
Implementación Almacén de Datos Ing. Scarleth Rivera

178. Nos vamos a la pestaña “String” y damos clic en el botón “Editar Script”

179. Nos abre un proyecto en C#, dónde ponemos el codigo para separa las palabras:

239
Implementación Almacén de Datos Ing. Scarleth Rivera

180. Creamos una tabla “Palabra”:

181. Creamos el destino:

240
Implementación Almacén de Datos Ing. Scarleth Rivera

182. Ejecutamos el paquete y verificamos que tenemos los datos en la tabla:

Script Task

183. Creamos 4 variables como se muestra a continuación:

241
Implementación Almacén de Datos Ing. Scarleth Rivera

184. Creamos un control “Tarea Stript”, lo primero que configuramos son las variables que
creamos dentro del Campo “ReadOnlyVariables”:

185. Una vez seleccionadas las variables, damos clic en el botón “Editar script”:

242
Implementación Almacén de Datos Ing. Scarleth Rivera

Sequence Container

186. Creamos dos tablas e insertamos los registros en una de las tablas:

187. Agregamos un componente de secuencia y dentro de él pondremos 2 tareas, la primera


un “Tarea Ejecutar Sql” y lo configuramos así:

243
Implementación Almacén de Datos Ing. Scarleth Rivera

188. Y el segundo, es otro control para ejecutar tarea, pero ahora le ponemos que vamos a
renombrar la tabla DemoDest por Demo:

189. Por último en las propiedades del “Contenedor de secuencias” , cambiamos la opción de
“TransactionOpcion” a “Required”:

244
Implementación Almacén de Datos Ing. Scarleth Rivera

190. La ejecución presenta un error porque ya existe una tabla con ese mismo nombre, y
anula la transacción:

245
Implementación Almacén de Datos Ing. Scarleth Rivera

ANEXO 2

Diagrama DWH Créditos

246
Implementación Almacén de Datos Ing. Scarleth Rivera

CONCLUSIÓN

En base a los ejercicios presentados en clase y las prácticas sugeridas, creamos una buena base de
conocimiento para la limpieza y creación de nuestros propios DWH, por lo que agradecemos al profesor
Denis Guido, por su excelente trabajo en la enseñanza en todos los módulos impartido, ambos estamos
satisfechos con lo aprendido.

247

También podría gustarte