dimecres, 25 de maig del 2016

ADEU BIML

Tal com explicava a l'anterior post, la E i la L d'un procés ETL per a la càrrega d'un DataWareHouse (DWH) es poden automatitzar mitjançant patrons. Els propers posts es centraran en l'automatització de la part d'extracció de dades.

 

 ADEU BIML?

Després de vendre les qualitats de BIML no és que vulgui prescindir d'ell, al contrari. ADEU és l'acrònim de Automatic Data Extractor Utility. L'ADEU té la intenció de ser una utilitat per poder generar paquets dtsx a través de BIML que permetin l'extracció de dades  des de diferents orígens de dades i es bolquin a l'staging area (SA) del DWH. 
Per que pugui ser útil l'aplicació ha de ser el màxim extensible i reutilitzable possible. Cal tenir en compte que per programar aquesta aplicació he utilitzat la versió gratuïta de BIML integrada amb Visual Studio, no he utilitzat MIST.
El primer pas de l'aplicació ha estat dissenyar el model de metadata que emmatzemarà les característiques necessàries per poder crear els dtsx.


Les taules són les següents:
  • Project: conté el nom del projecte i la cadena de connexió a l'SA i al DWH
  • Source: origen de dades. Cada origen de dades tindrà una subclasse en que es definiran els atributs propis.
  • Source_type: tipus d'origen de dades (ex. BBDD SQL Server, fitxer pla, excel, etc)
  • Source_detail: elements del source (ex. taules de BBDD, fulls d'un excel). Cada origen de dades tindrà una subclasse en que es definiran els atributs propis.
  • Source_extract_type: tipus d'extracció de les dades (ex. full, incremental)
  • Source_column: columnes de l'origen de dades (columnes de la taula de BBDD, columnes del fitxer de text, etc).
Aquest esquema l'aniré ampliant amb les subclasses a mesura que afegeixi nous orígens de dades.
Per cada origen de dades es generaran 4 paquets principals:
  1. Generació de metadata: generació dels dtsx per alimentar els màxims camps possibles de l'esquema de metadata.
  2. Creació de les taules: a partir de la metadata es generaran els dtsx amb els scripts de creació de les taules a l'SA
  3. Esborrat de taules: ídem a l'anterior, però amb drop table
  4. Càrrega de dades: generació del dtsx que accedeix a l'origen de dades i carrega l'SA
Encara que la càrrega de dades pugui semblar la part important del projecte, és més important la generació de la metadata. Quan més automàtica sigui la generació de metadata menys feina haurem de fer en el futur. Sempre hi haurà parts que s'hauran d'alimentar a mà (ex. el camp que indica el source_extract_type, o el tipus de dades en un fitxer de text, o les columnes en un fitxer de text de mida fixa, etc).

Per cada origen de dades comentaré com s'ha generat el BIML per fer cada un dels paquets i també quina part de la metadata es pot generar automàticament i quina s'ha d'omplir a mà.

Esquema del BIML

Els fitxers .biml per a generar els 4 tipus de paquet tindran el mateix esquema:
  1. Includes de les funcions c#
  2. Nom del projecte
  3. Nom del tipus de paquet
  4. Obtenció de les connection strings del projecte
  5. Tag <Biml>
  6. Generació de les connexions d'orígens de dades del projecte 
  7. Generació dels paràmetres
  8. Generació dels packages "pares" per cada origen de dades
  9. Generació dels subpackages per cada source_detail  

  En el proper post començaré a entrar en detalls de la implementació. De moment el primer que es pot veure és que es poden incloure fitxers biml dins d'altres fitxers biml, això permetrà reutilitzar codi i fer l'aplicació extensible. Quan s'implementin nous origens de dades "només" haurem de crear els nous bimls i invocar-los dins del codi.

dijous, 19 de maig del 2016

Benvingut BIML

BIML (Business Intelligence Markup Language) és un llenguatge de programació que permet generar paquets dtsx d'SSIS automàticament. BIML és propietat de Varigence (www.varigence.com).
BIML permet combinar codi XML amb .Net (Vb o C#) per generar les ETLs. Aquesta combinació ens permet aplicar patrons de disseny o templates per generar per a taules d'un mateix tipus la mateixa estructura en l'ETL.

BIML té una part que és gratuïta i que es pot integrar al SQL Server Data Tools a través del BIDS Helper (https://bidshelper.codeplex.com/) o també el BIML express. I també té una part de pagament MIST que ofereix funcionalitats com fer enginyeria inversa o més facilitat a l'hora de debugar.


DWH i BIML

A quines parts de la càrrega d'un DWH ens pot ajudar MIST?
En un procés de càrrega d'un DWH tenim les fonts d'origen que es carreguen a l'Staging Area (Extract). A l'Staging Area s'aplica la lògica de negoci fins a transformar les dades en l'estructura que té el DWH (Transform), des d'on, finalment, les dades passen al DWH (Load).
La E i la L del procés ETL és una part que no aporta valor a negoci i que es pot automatitzar mitjançant patrons d'extracció o de càrrega.

BIML ens permetrà aplicar els patrons necessaris per als nostres orígens i destins per no haver de programar el mateix procés per totes les taules.

 Un cas real 

En un dels meus darrers projectes havia de carregar a l'Staging Area més de 150 taules. Les taules eren de 3 tipus. Les que havia de carregar senceres, les que havia de carregar incrementalment segons un camp de data i les que havia de carregar incrementalment segons un camp de data que estava en una altra taula.
Amb BIML vaig escriure només 3 XMLs i amb un bucle amb c# vaig poder generar les ETLs que em carregaven totes les taules. Vaig aconseguir diversos beneficis. Per una banda no em vaig tornar boig programant les 150 càrregues de taules amb els seus possibles errors humans, i per una altra banda vaig poder corregir errors de concepte només tocant el codi BIML sense haver d'anar a cadascuna de les ETLs afectades.

En propers posts veurem alguns exemples senzills de codi BIML.
Us recomano molt el blog de la Catherine Wilhelmsen : http://www.cathrinewilhelmsen.net/ i també que li feu un cop d'ull a la web http://bimlscript.com/ 

dilluns, 16 de maig del 2016

Retornar part del que he rebut

Després de més de 10 anys al món del Business Intelligence ja va sent hora que comenci a compartir a la comunitat el que vaig aprenent. Per mandra, vergonya, falta de temps o qualsevol altra excusa no ho he fet.
Probablement el punt d'inflexió ha estat trobar-me de cara amb BIML (Business Intelligence Markup Language) i els primers posts aniran enfocats a veure per què ens pot ser útil. També vull parlar de novetats de BI, sobretot de la part de Microsoft que és on em moc més habitualment a la feina, però també de la SDK de BO i altres cosetes que vagin sortint.

J.