dimarts, 12 de juliol del 2016

ADEU-BIML: Text File (I)

Després de veure com generar automàticament els dtsx amb BIML per a orígens SQL Server i Excel ara veurem com fer-ho per fitxer plans de text.
Tractarem fitxers de text de 2 tipus: de camps delimitats i de camps de mida fixa. El que canviarà, bàsicament, serà la generació de la metadata.
També afegirem la possibilitat de processar tots els fitxers de text que estiguin en un directori i que compleixin un patró en el nom.
L'esquema per a guardar la metadata quedarà de la següent manera:

Tenim la taula source_FlatFile que hereta de source i que té com a subclasse sourceFlatFileFolder, que és on guardarem els atributs del directori on estan els fitxers, el patró de nom dels fitxers, si s'han d'explorar els subdirectoris, etc.
En aquest cas no ens fa falta subclasse de source_detail, amb els atributs de la superclasse en tenim prou. El que sí que fa falta és una subclasse de source_column per als fitxers de camps de mida fixa. En la subclasse es guardarà la mida de cada camp.


En els cas dels flat files la majoria de la metadata l'haurem de posar manualment. En el cas de fitxers amb camps de mida fixa tota la metadata és manual. En els fitxers de camps separats per un caràcter sí que podrem definir les columnes (en cas que tingui capçalera amb el nom de la columna i en cas contrari amb un nom genèric tipus col1, col2...) i utilitzarem un tipus de dades estàndard per a tots els camps (varchar(4000)). El tipus de dades s'haurà de corregir posteriorment.

Un dels punts més diferent dels flatFiles respecte a les altres connexions és la definició de la connexió. No només s'ha de definir la FlatFileConnection, sinó que també s'ha de definir el FileFormat amb la informació dels camps. Teniu el codi a: https://github.com/jordiisidro/adeu-biml/blob/master/UT_generateConnections.biml
Per a la generació de la metadata considererem que el fitxer només té una columna que serà de tipus AnsiString de 4000. A través del procediment sp_generateColumnsFF trencarem aquesta columna tenint en compte el separador que li hem passat.
Per saber el tipus de dades a mapejar en aquest bloc trobareu la informació molt detallada (http://www.cathrinewilhelmsen.net/2014/05/27/sql-server-ssis-and-biml-data-types/)

I això és tot per a generar la metadata. En els FlatFiles no es pot fer gaire cosa, bàsicament podem saber quines columnes hi ha en un fitxer on els camps estan separats per símbols, però no podem saber el tipus de dades.

La creació i esborrat de taules és idèntica que en els casos anteriors.
En el proper post veurem com generar els dtsx per carregar les dades. Ens centrarem en com generar el FileFormat i també en com carregar els fitxers d'un directori.

Com sempre teniu tot el codi a: https://github.com/jordiisidro/adeu-biml/


dimarts, 5 de juliol del 2016

ADEU-BIML: Excel (II)

Al post anterior (http://www.eljordifabi.tech/2016/06/adeu-biml-excel-iii.html) vam veure una manera de generar la metadata automàticament quan tenim fulls excel, tant xlsx com xls.
La creació i esborrat de les taules es fa de la mateixa manera que amb orígens SQL Server (http://www.eljordifabi.tech/2016/06/adeu-biml-sql-server-ii.html).
Avui veurem com generar els dtsx per a carregar les dades. L'estructura general és la mateixa que per SQL Server. En el cas dels orígens Excel només implementarem la càrrega full. Si l'Excel té més d'un full es generarà un dtsx per cadascun d'ells. Queda pendent com a implementació futura poder recórrer tots els fulls d'un mateix Excel en bucle quan aquests tinguin tots la mateixa estructura.

Per a la generació de codi per bolcar les dades  a l'staging area implementarem la mateixa estructura de Truncate Staging area - Load Staging Area - Save number rows que vam implementar per a la càrrega full d'SQL Server. Podeu veure el codi a: LoadDataExcelSheetFull.biml
La part diferent és el component ExcelSource.


La resta de codi és idèntic que per un orígen SQL Server.

Com acabem de veure, un cop implementada la càrrega d'un component per implementar nous components sobretot ens hem de centrar en la generació de metadata, la resta de codi biml és pràcticament igual.
En els propers posts veurem com implementar l'extracció de dades automàtica tenint com a origen fitxers plans.

Com sempre podeu trobar tot el codi al github: https://github.com/jordiisidro/adeu-biml/