De programacion y otros demonios

miércoles, 6 de enero de 2010

SSIS - Mejorar velocidad Slowly Changing Dimension

Hace rato que no escribía, estaba aprendiendo bastante y con varios problemas en la migración de todo el sistema BI de sql server 2005 a 2008; entre mis dolores de cabeza estaba la enorme demora del componente Slowly Changing Dimension con 250.000 registros.


Parece que es un problema común cuando se tiene este volumen de datos, investigando en Google, encontré un componente para agregar a la interfaz BID, el "Kimball Component".

Este componente en lo que he probado, realmente mejora la velocidad comparado con el Slowly Changing Dimension.

Para descargar el instalador, leer las instrucciones y saber un poco mas ingresa a la pagina oficial de ellos: Kimball Method SSIS Slowly Changind Dimension Component

Para instalarlo :

1. Descarga el instalador adecuado para ti: 2005 ó 2008

2. Instalarlo dando doble click sobre el archivo .msi (Si instalaste el sql server en una ruta diferente a la instalación por default, en este paso debes buscar esa ruta).

3. Agregar Kimball a los componentes de la interfaz BID

a. Ingresa al Sql Server Business Intelligence Development, da clic en la pestaña "Data Flow".
b. En el panel izquierdo de "Toolbox" Dá clic derecho sobre algún espacio en blanco de la sección "Data Flow Transformations" y elige "Choose Items".



c. En la pestaña "SSIS Data Flow Items"asegúrate que esté seleccionado el "Kimball Method Slowly Changing Dimension".

d. Cierra el BID y vuelve a ingresar

Usarlo es sencillo:

a. Arrastra del panel izquiero el componente kimball

b. Conecta el flujo de datos origen (el de tus datos a modificar) a Kimball como input "Source System"
c. Crea una fuente de datos con todos los datos de tu tabla dimension (select * from tabla) y conecta este flujo de datos a Kimball como input "Existing Dimension"

d. Edita el componente Kimball, la primera pestaña "Existing Dimension Column Usage" nos permite decidir que hacer con los datos: cual es la columna llave (Business Key) y SCD1 columnas a modificar.

La segunda pestaña "Source System Column Linkage" determina cuales columnas de la entrada origen corresponden a columnas en el flujo de datos dimensional.

Las demás pestañas no las uso, son características más avanzadas; lo que estoy haciendo es el uso básico de este componente, de hecho en la pagina explican como crear registros para auditoria y cosas mas complicadas.

En la pestaña "Options" me aseguro de seleccionar la eliminación de Warnings (no me gusta verlos, solo por eso).

Hasta aquí el componente no debe presentar errores, tampoco tiene salidas (aún no hace nada).

e. Arrastra del panel izquierdo una fuente destino (en mi caso un OLEDB Destination), conecta el flujo de datos del Kimball a esta fuente y elige como ouptut: New; es decir, aquí estamos programando el comportamiento de los nuevos registros, asegúrate que los mappings quedaron bien.

f. Arrastra del panel izquierdo un OLEDB Command, está en la sección de Data Flow Transformation, conecta el flujo de datos del Kimball a este componente y elige output: Updated SCD1; es decir, aquí programamos el comportamiento para los registros a actualizar. En este componente debes escrbir la instruccion UPDATE dejando con signo de interrogacion los valores (ej. update clientes set nombre =? where identificacion = ? ), asegúrate que los column mappings quedaron bien, ojo :: el Param 0 debe ser nombre, debes seguir el mismo orden que en la instruccion update.

g. Hasta aquí funciona, pero he hecho algo adicional por llevar un control de errores, he agregado a partir del componente Kimball un output: Invalid Input, y lo he conectado a un Row Count para contar cuantos registros invalidos quedaron sin actualizacion.

Hasta este momento deberias tener algo asi:



De verdad les recomiendo darse una vuelta por el sitio de Kimball para leer más características avanzadas de este componente.

Etiquetas:

0 comentarios:

Publicar un comentario



<< Inicio