Data Transformatie met SQL Server Integration Services (SSIS)

 
29 februari 2012

Stel je hebt het volgende probleem:  Je hebt een hoop verschillende data bronnen, die je wilt samenvoegen. Maar niet alle databronnen zijn in hetzelfde formaat.  Een deel van de databronnen is in excel een ander deel in een database, en weer een derde in XML of als simpel tekst bestand.

En je wilt niet alleen deze data samenvoegen maar je wilt er ook bewerkingen op uitvoeren voordat je ze uiteindelijk in een database opslaat.

Dat klinkt als een probleem  waar SSIS de oplossing voor is.

Introductie

SSIS is een onderdeel van de Microsoft SQL server software, en is ideaal voor ETL ( Extraxt, Transform en Load) taken.

SSIS control flow en Data flow tijdens debuggen

SSIS control flow en Data flow tijdens debuggen

SSIS  werkt met  een grafische interface voor het opstellen voor “Control Flow”, en “Data Flow task”.

Een data flow task doet wat het zegt, het stuurt data van de ene locatie naar een andere, ook zijn bewerkingen op de data mogelijk.  In het plaatje hierboven zie je bijvoorbeeld dat de data geselecteerd wordt uit een database, en dat het afhankelijk van de datum opgeslagen wordt in twee verschillende database of een flat file.

De control flow bied je de mogelijkheid om data flow tasks in een loop te zetten, of de resultaten van één data flow task in een tweede data flow task te gebruiken. Maar in de control flow kun je ook kiezen voor een ”Excecute SQL Task”  een “Send Mail Task”  en andere typen taken. Kortom het geeft je een overzicht van de verschillende taken die je pakket gaat uit voeren en in welke volgorde het dat gaat doen.

Sterke punten van SSIS.

De grafische interface maakt het heel inzichtelijk waar het programma mee bezig is. Tijdens het debuggen krijgen succesvol afgeronde taken een groen kleurtje , niet succesvol afgeronde taken een rood kleurtje en processen waar SSIS op dat moment mee bezig  is een geel kleurtje. Het is hierdoor heel duidelijk welke onderdelen snel en langzaam werken. Dat is niet alleen handig voor de developper tijdens het debuggen, maar ook om een klant te laten zien. Het kan moeilijk zijn om een klant uit te leggen wat er gebeurd in de backend, en SSIS maakt dat inzichtelijk.

SSIS werkt goed samen met andere Microsoft producten. Je kunt je SSIS paket benaderen vanuit C# code, je kunt zo het pakket niet alleen starten maar ook variabelen binnen je pakket vanuit C# code zetten.  Daarnaast kun je het SSIS pakket runnen als een sql server job, zodat het bijvoorbeeld elke dag runt.

Optioneel kun je het SSIS paket ook een configuratie file mee geven, die het inleest als het gerunt word. Ook kun je aangeven dat SSIS een log moet bijhouden.

Zwakke punten van SSIS

SSIS is niet beschikbaar in de gratis versie van SQL server, en het werkt niet met visual studio 2010. Dus je moet de “Standard” of “Entreprise” editie van SQL server hebben en visual studio 2008.

Daarnaast heeft het een aantal “eigenaardigheden” waar je in het begin aan moet wennen. De SQL editor die SSIS geeft werkt niet fijn en toen ik er mee werkte schreef ik mijn SQL syntax  meestal in SQL server management studio om het vervolgens te copy pasten naar mijn SSIS applicatie.

Vaak loop je er tegen aan dat syntax waar je in SQL aan gewend bent net iets anders werkt in SSIS. Met name het doorgeven van parameters werkt  anders en is in eerste instantie onoverzichtelijk. En zo zijn er nog meer kleine dingetjes die niet vanzelfsprekend werken.

Al die kleine dingetjes zijn niet overkomelijk maar wel irritant. Je vraagt je zelf vaak af “waarom werkt dit niet gewoon?”

Conclusie

Ondanks de kleine iritaties die het werken met SSIS soms opleverde is het gewoon een absolute aanrader.  Het kan omgaan met een heleboel verschillende data bronnen. Het is overzichtelijk, en kan makkelijk worden aangesproken vanuit C#. Je hebt het zo onder de knie, het is goed configureerbaar en het houd een log bij.

kortom de volgende keer dat je met een data transformatie probleem zit, probeer SSIS dan eens.


Werken met ?
Kijk dan bij onze mogelijkheden voor zowel starters als ervaren engineers.


Categorieën: Development, .Net, .Net