Creacion de Datawarehouse desde sql dinámico y BIML
Siguiendo los últimos artículos publicados sobre el lenguaje dinamico de generación de paquetes SSIS
presentamos esta utilidad para generar Datawarehouse dinámicamente a través de BIML y sql.
Para ello es necesario descargar la utilidad BIML desde la sihuiente dirección:
bidshelper.codeplex.com/releases/view/114725
Una vez instalado, nos aparecerá en el entorno BIDS (En este caso Visual Studio 2008) un nuevo menú
haciendo clic con el boton derecho sobre el archibo de Integration services.
Hacemos clic en "add new Biml file" lo que nos generara un archivo en la carpeta Miscellaneous
denomilado Bimlscript.biml.
Dentro de este archivo pegaremos el codigo generado por el script de sql dinamico adjunto al final de este articulo.
Este codigo realiza el recorrido a traves de un determinado dataset que podemos indicar filtrando las tablas o los esquemas
de la base da datos, añadiendo los filtros despues de:
...from sysobjects INNER JOIN
[INFORMATION_SCHEMA].[TABLES]
ON TABLE_NAME=SYSOBJECTS.name
where type='U') as Tablas
añadir:
and table_name=(tablas a filtar)
o bien
and table_schema=(esquema a filtrar)
El script recorre las vistas de sistema information_schema.columns
generando el código necesario para crear las tablas de destino y omitiendo
los campos autoincrementales que pueden causar problemas al crear un datawarehouse.
Finalmente para cada tabla se genera un contenedor dentro del cual aparece un apartado sql el cual genera la tabla
seguido de un dataflow:
Dentro del dataflow habrá para cada tabla un origen de datos desde el origen que hemos elegido
hasta nuestro dawarehouse, ambos parametrizados desde nuestro script.
Para que funcione debemos compilar el archivo BIML haciendo clic en Generate SSIS Packages
esto nos dará lugar a la aparición de un nuevo package con nuestro ETL listo para funcionar
Desde este link se puede descargar el codigo completo
GeneradordinamicoBIML.txt (4734)
Igualmente añadimos un nuevo archivo que generara las tablas la primera vez que se lance el script desde nuestro datawarehouse
Por tanto es necesario lanzar este script primero:
GeneradortablasBIML.txt (3835)