Geschreven door Coen Donders, Senior Business Intelligence Consultant

TimeXtender van Axians helpt bedrijven hun data-omgeving te professionaliseren zonder hierbij afhankelijk te zijn van leveranciers. De tool is opgebouwd uit verschillende lagen. De eerste laag  is de Operational Data Stage (ODS),  de tweede laag is de Data Staging Area (DSA). In deze blog leg ik je uit wat er in deze tweede laag gebeurt.

Een korte introductie op de werking van TimeXtender: de tool start met het ophalen van data uit verschillende bronsystemen. Deze opgehaalde data komen terecht in de Operational Data Stage (ODS). Dit is de eerste laag van TimeXtender en kun je zien als de landingzone van data. Hier wordt data afkomstig van de bronsystemen ingeladen en fysiek opgeslagen in een tabel. ODS is het beste te omschrijven als de bronlaag met ruwe data.

Modern Data Warehouse

De ruwe data wordt verplaatst naar de tweede laag in TimeXtender: het Modern Data Warehouse. Deze laag bestaat uit twee onderdelen: de Data Staging Area (DSA) en het Modern Data Warehouse zelf. De ruwe data komt eerst in de Data Staging Area terecht. Hier vinden alle transformaties en bewerkingen plaats zoals tabellen koppelen, data samenvoegen en formules maken. De tabellen met schone data die hieruit ontstaan, verhuizen naar het Modern Data Warehouse.

Je kunt dit ook in één omgeving doen, maar Axians kiest ervoor om dit te scheiden omdat gebruikers vaak het één of ander nodig hebben. Casual gebruikers willen kant-en-klare data hebben en power users willen zelf met de data aan de slag. Deze laag is opgedeeld om de toegang per type gebruiker te kunnen splitsen.

Schone data creëren

Van alle lagen in TimeXtender, gebeurt er in de DSA het meest. Zo’n 75% van de tijd in TimeXtender besteed je in de Data Staging Area. Hier worden bewerkingen gedaan om de ruwe data te bewerken to bruikbare informatie. Het bronsysteem heeft tal van tabellen, maar als je een rapport of dashboard wil opmaken, dan lenen die tabellen zich hier niet voor. Hier komt de DSA om te hoek kijken.

Sterschema’s maken

Een DSA kun je het best omschrijven als een tijdelijke opslagruimte tussen databronnen en een datawarehouse. Nadat de data in de DSA zijn ingeladen, ga je aan de slag om data uit meerdere gegevensbronnen middels transformaties, validaties en gegevensopschoning te combineren. Ben je een bedrijf met een verkoopsysteem? Dan heb je al gauw te maken met verschillende tabellen (van producten, orders, klanten, etc). In de DSA maak je bijvoorbeeld één producttabel met artikelnummer en productomschrijving op dezelfde regel. Uiteindelijk kom je tot 1 producttabel, 1 klantentabel en 1 tabel met alle orderregels, ieder met nette kolomnamen en sleutelvelden. Het datamodel dat wij hierin nastreven wordt ook wel een sterschema genoemd.

ETL-proces

Het mag duidelijk zijn dat het voornaamste doel van de DSA is om de ruwe data uit de ODS voor te bereiden voor gebruik in zogenaamde dimensie en fact-tabellen. Het voorbereiden noemen we het ETL-proces waarbij ETL staat voor Extract, Transform en Load.

Consolidatie

Om data te kunnen voorbereiden heeft de DSA veel verschillende functies. Een van de belangrijkste functies is het consolideren van gegevens uit meerdere bronsystemen. Bij het uitvoeren van deze functie fungeert de DSA als een grote bak met daarin gegevens van meerdere bronsystemen. Deze gegevens worden dan getagd met aanvullende metagegevens die de oorsprongsbron aangeven en tijdstempels die aangeven wanneer de gegevens in het verzamelgebied zijn geplaatst. TimeXtender doet dit automatisch.

Alignment

In de DSA komen mastertabellen van verschillende bronnen tot stand. In TimeXtender kunnen dergelijke masterdimensies eenvoudig worden samengevoegd en afgestemd. De herkomst van data blijft hierin altijd inzichtelijk. Bij samenvoegen worden bijvoorbeeld alle gegevens over producten in verschillende systemen verzameld in één tabel. Je kunt hierbij kiezen voor het ‘stapelen’ van gegevens of het aanvullen ervan. Alignement is de opvolger van consolideren: bij consolideren breng je gegevens van meerdere systemen samen en bij alignement breng je hierin een eenheid aan. Denk bijvoorbeeld aan afspraken als: productcodes die overal hetzelfde datatype zijn. Vestigingen die een numeriek of tekst kenmerk krijgen, omzet dat wordt weergegeven inclusief of exclusief BTW, enzovoort.

Features

De DSA gebruikt data uit de ODS laag. Vaak is ingesteld dat er iedere nacht opnieuw data ingeladen worden. Dit gebeurt incrementeel zodat alleen nieuwe en gewijzigde records ingeladen worden. Hierdoor blijven het dataverkeer en de belasting beperkt, zijn de laadtijden sneller en heb je lagere kosten (bij het gebruik van Microsoft Cloud Azure). De data die verandert, wordt uiteraard ook doorgevoerd in tabellen van bovenliggende lagen.

Makkelijk schedulen

Zoals hierboven aangegeven, kun je het ophalen van data schedulen. Maar je verkooporders wil je misschien ieder uur verversen, terwijl voor Finance en CRM een dagelijkse update volstaat. Dan kun je voor Verkoop andere laadtijden instellen en de rest laten meedraaien met de dagelijkse bulk. Je vraagt alles op van een bepaalde ordertabel en je ontvangt ook hier enkel de nieuwe en gewijzigde data van die tabel. Vervolgens veranderen die specifieke onderdelen in de DSA mee. Dit werkt veel efficiënter dan wanneer je rapport direct is gekoppeld aan je bronsysteem en je zo’n specifieke opdracht geeft. Dan kost het uitlezen van de data zo’n 10 minuten. Met TimeXtender heb je de nieuwe data binnen enkele seconden binnen.

Change-detection

Stel je voor dat er in het bronsysteem iets wijzigt zoals een tabelnaam of veldnaam en je zou TimeXtender niet gebruiken, dan functioneert je rapport niet meer omdat deze de namen niet meer herkent in het bronsysteem. TimeXtender maakt gebruik van zogenaamd Change Detection. De tool spot meteen veranderingen in het bronsysteem en geeft een seintje aan je door. Deze wijziging voor je vervolgens door in de ODS laag van TimeXtender.

Tabellen

Binnen DSA is het eenvoudig om tabellen te koppelen en/of samen te voegen. Veranderingen in databronnen of in de dataflow worden opgevangen door de metadata van TimeXtender waardoor dergelijke wijzigingen geen impact hebben op het verdere verloop van de dataflow. TimeXtender pikt veranderingen zoals het wijzigen van een veldnaam op en na de aanpassingen in de ODS zijn verdere aanpassingen in de DSA niet meer nodig. Op basis van de aanwezige metadata blijft de dataflow in stand. Dergelijk onderhoud in het datawarehouse kost op deze manier veel minder tijd.

Aggregate Tabellen

Als je ordertabel een miljoen regels bevat, dan wordt dat een veel te groot rapport. TimeXtender is in staat om het rapport aan te passen aan de gebruiker. Wat wil de gebruiker zien? Finance wil alle regels zien, maar een manager of de directie wil wellicht één keer per week de totalen weten. Alle orderregels inzichtelijk maken is dan niet nodig. TimeXtender maakt dan een gegroepeerde tabel op basis van de benodigde velden.

Wel of niet programmeren?

Bij Axians merken we dat technici sceptisch zijn over het drag-and-drop principe, evenals de Wizards die het gebruik van TimeXtender vergemakkelijken. Technici willen namelijk liever zelf programmeren. TimeXtender is verbonden aan Microsoft met SQL als programmeertaal. Als je per se wilt programmeren dan kan dat, je kunt onder de motorkap kijken en zelf sleutelen. Alle SQL functionaliteiten heb je nog steeds tot je beschikking, zoals View, Stored Procedure en Functions. Het verschil is dan deze in TimeXtender automatisch opgenomen worden in de metadata en data lineage. Daarnaast kun je in de DSA-laag met zes personen onafhankelijk van elkaar werken en is er de mogelijkheid voor het inrichten van een volledige OTAP omgeving waardoor je wijzigingen en tests kunt uitvoeren zonder dat er schade wordt aangericht aan de productie omgeving.

Als alle transformaties en bewerkingen zijn toegepast en er dus ‘schone data’ is ontwikkeld, dan verhuizen de tabellen met deze informatie naar het Modern Data Warehouse (MDW). De MDW laag wordt in TimeXtender gebruikt voor het creëren van de verschillende data modellen. Hier worden dus nog steeds relaties gelegd tussen tabellen, maar dat is met name om een datamodel op te bouwen.