Denken Over Data

Categorie: Data Governance

  • Kijk eens wat vaker in je glazen bol!

    Kijk eens wat vaker in je glazen bol!

    Vermijd het Hier-en-nu denken als het om data gaat!

    In een tijd waarin steeds meer organisaties datagedreven (willen gaan) werken wordt het data-engineering vak steeds belangrijker. Bij data-engineering denk ik aan het maken van een doordacht ontwerp en het vervolgens bouwen van een dataproduct, zoals een BI-oplossing. Dit ontwerp moet niet alleen voldoen aan de huidige eisen, maar ook voorbereid zijn op toekomstige veranderingen. Hier ligt dus een spanningsveld. Maar al te vaak constateer ik dat binnen dataprojecten de voorkeur gaat naar korte termijn winst. Ik noem dit vaak (licht smalend, ik geef het toe) het Hier-en-nu denken.

    Verder lijkt het wel, met de opkomst van AI, machine learning en steeds toegankelijker rapportage en analyse tools, of data architectuur en data modelling aan belang hebben ingeboet. Echter een goed doordacht datamodel staat nog altijd aan de basis van goede datakwaliteit, wat op zijn beurt essentieel is voor betrouwbare informatieproducten. Het is niet zo dat een informatieproduct automatisch van goede kwaliteit wordt zodra er maar genoeg complexe bewerkingen op inconsistente onderliggende data worden losgelaten. Bovendien zijn deze complexe bewerkingen meestal afkomstig uit een of andere bouwdoos en zodat diep begrip ervan niet noodzakelijk is. Als de data waarmee gewerkt wordt van matige kwaliteit is, zal deze matige kwaliteit slechts worden uitvergroot door er een hoop bewerkingen op los te laten.

    Enkele voorbeelden van het Hier-en-nu denken:

    Voorbeeld 1

    Als een BI oplossing nog in de kinderschoenen staat, niet investeren in een robuuste architectuur van je datawarehouse maar het “lekker simpel houden” wat vaak neerkomt op een enkele datamart met daarin een starscheme dat rechtstreeks uit een bronsysteem gevuld wordt. Misschien voldoet deze eenvoudige oplossing nu, maar er wordt vergeten dat in de toekomst eisen en omstandigheden kunnen veranderen Misschien komen er wel meer datamarts voor verschillende gebruikersgroepen die deels gebaseerd zijn op dezelfde data. Misschien komt er wel een nieuw bronsysteem bij of verandert het huidige bronsysteem. Alle laadlogica (historie bewaren, data integreren, business rules toepassen, etc.) lekker compact bundelen en verweven op een punt is dan meestal geen goed idee.

    Voorbeeld 2

    Op dit moment bekende datakwaliteitsproblemen hardcoded in de ETL van het datawarehouse op lossen. Bijvoorbeeld: Klant met klantnummer 123456 staat ook in het bronsysteem geregistreerd onder nummer 444444. In de ETL is daarom een regel opgenomen dat alle orders die in de bron gekoppeld zijn klant 123456 in het datawarehouse moeten worden gekoppeld aan klant 444444. Dat er morgen weer andere klanten dubbel geregistreerd blijken te zijn, zijn dan zorgen voor morgen.

    Voorbeeld 3

    ETL code slordig opzetten. Geen aandacht schenken aan leesbaarheid van je code. Bijvoorbeeld slechte layout van programmacode, SQL statements met subqueries in subqueries in subqueries, het gebruik van SELECT * en natuurlijk nergens commentaar.

    Zeg nu zelf: Welke code debug je het liefst?

    Dit…

    Image

    ..of dit?

    Image

    Als je voor voor de lekkere compacte optie 1 gaat ben je dus zelf onderdeel van het probleem. 😉

    Maar alle gekheid op een stokje, dit soort rommel komt echt tergend vaak voor.

    Voorbeeld 4

    Ook het meerdere malen definiëren van eenzelfde bewerking is vaak uiting van het Hier-en-nu denken. Zie onderstaand eenvoudige voorbeeld waarin de berekening voor gemiddelde omzet (GemOmzet) op twee plaatsen is gedefinieerd in de ETL voor een datawarehouse.

    Enkele tips ter bestrijding van het Hier-en-nu denken

    Kijk in je glazen bol

    De eerste tip ligt voor de hand: Kijk niet alleen naar de nu geldende requirements maar in te schatten welke eisen er in de toekomst gesteld gaan worden aan je dataoplossing. Zeker als een organisatie net begint met de transitie naar datagedrevenheid is de BI omgeving vaak nog lekker overzichtelijk. Maak het jezelf in het begin niet onnodig te moeilijk maar probeer in ieder geval voor te sorteren voor het moment dat er complexere eisen gesteld gaan worden. Dit geldt voor alle betrokkenen, van data-architect tot ontwikkelaar.

    Smeed één wapen voor alle gevechten

    Denk generiek. Vervang hardcoded regels waarin id’s letterlijk genoemd worden door een generieke aanpak. Het bovenstaande voorbeeld 2 van de klant die dubbel geregistreerd staat in de bron zou je bijvoorbeeld kunnen oplossen door een van-naar mapping tabel aan te leggen en deze vervolgens gebruiken in de ETL gebruiken om de vertaalslag te definieren. Toekomstige dubbele registraties kan je dan inregelen door een extra record aan de mapping tabel toe te voegen. Geen onderhoud aan je code nodig!

    Wees dodelijk consequent

    Pak soortgelijke zaken op soortgelijke wijze aan. Wees consistent. Dit komt de onderhoudbaarheid overdraagbaarheid van je oplossing ten goede. Neem nooit shortcuts, hoe verleidelijk dat ook is. Een shortcut is namelijk een uitzondering, en die zul je dus moeten gaan onthouden, overdragen en een speciale afwijkende behandeling geven. Dat willen we dus niet!

    Verdeel en heers

    Bouw een dataarchitectuur met meerdere lagen, ieder met hun eigen functie (segregation of concerns). In ieder geval moet daar inzitten: een staging laag, een dataintegratielaag en een informatielaag (je datamarts en andere voorbewerkte datamodellen toegespitst op wat je informatieproducten vereissen) een informatieproductlaag (zoals dashboards, BI rapportages, data exports tbv dataanalyse etc).

    Voorzie je architectuur, zover mogelijk stroomopwaards altijd van een genormaliseerde datalaag ter vermijding van redundantie.

    Houd het droog

    Hang het DRY principe aan. Dit staat voor Don’t Repeat Yourself. Dit is een fundamenteel principe binnen softwareontwikkeling dat stelt dat elk stukje kennis (zoals een berekening, functie of business rule) slechts op één plek in de codebase mag bestaan. Voordeel is dat als in de toekomst wijzigingen noodzakelijk blijken in de bestaande logica, je deze maar op een plek hoeft door te voeren. Kortom: Herhaling in code is de vijand van schaalbaarheid en onderhoudbaarheid. Bekijk ter illustratie eens hoe de code uit voorbeeld 4 kan worden herschreven volgens het DRY principe:

    Image

    Regeer met ijzeren hand

    Plaats een spin in het web. Zorg ervoor dat een klein slagvaardig team van minstens twee personen (ivm continuiteit) in de organisatie het overzicht houden over de dataarchitectuur en de implementatie met een mandaat om in te grijpen waar nodig. Klinkt dit dictatoriaal? Absoluut. Maar laten we eerlijk zijn: systeemontwikkeling is geen democratie. Je wilt geen architectuur waarin iedere ontwikkelaar zijn creatieve ei kwijt kan. Consistentie en een strakke visie zijn geen luxe, maar pure noodzaak. Een strak geleid data-ecosysteem voorkomt dat je over een paar jaar een digitale ruïne moet proberen te renoveren. De spin heft zijn scepter, zwaait met je ER-diagrammen en regeert met rechtvaardige, maar ijzeren hand.

    😉

  • Datamigratie?: Bezint eer ge begint

    Datamigratie?: Bezint eer ge begint

    U denkt misschien: Waarschuwt hij nou voor datamigraties? Nou nee, dat is niet de bedoeling. Ik wou de lezer er slechts op wijzen dat, wanneer een systeemmigratie, met bijbehorende data, op stapel staat, dit een goed moment is om starten met het leggen van een stevige basis voor toekomstig databeheer. Aangezien iedere organisatie hier vroeg of laat wel mee te maken krijgt, bijvoorbeeld vanwege de gang naar de cloud, leek het mij goed om eens wat zaken op op een rijtje te zetten.

    Want waarom zou u simpelweg bestaande data overzetten, inclusief fouten, inconsistenties en verouderde structuren? Een datamigratie biedt het momentum om de datafundamenten van uw organisatie nog eens kritisch na te lopen en te verbeteren. Alle data uit het oude systeem moet immers toch onder de loep worden genomen.

    Enterprise Data Model

    Maak bijvoorbeeld, om te beginnen eens een start met Enterprise Data Model (EDM). Een EDM helpt u in een (of twee) oogopslag(en) inzicht te krijgen over welke entiteiten (klanten, producten, facturen, medewerkers, …) er informatie in omloop is binnen uw organisatie. Bovendien zijn hier de definities van alle entiteiten en hun attributen vastgelegd. Gebruik hier wel een degelijk CASE-tool voor zoals Powerdesigner of DataArchitect zodat u wordt geholpen met het bewaken van de integriteit van het datamodel. Bovendien heeft u dan een mooie basis van waaruit allerhande code generereerd kan worden ten behoeve van het creeeren van tabellen, ETL scripts en (delen van) applicaties die iets doen met de data die in het EDM is gemodelleerd.

    Een goed bijgehouden en compleet EDM betaalt zichzelf op termijn terug, omdat het veel dingen makkelijker maakt. Zo laat het duidelijk zien welke gegevens (entiteiten) in welke systemen worden gebruikt en hoe ze herkend kunnen worden (de zogenaamde business keys). Dit helpt bij het samenvoegen van data, bijvoorbeeld in een datawarehouse. Bijvoorbeeld: Stel, we hebben een Klant als entiteit die in zowel een CRM-systeem als een factureringssysteem voorkomt onder de naam Customer. In het CRM systeem wordt het veld Customernumber gebruikt als unieke identificator van een Klant. In het factureringssysteem wordt o.a. het veld CustomerId hiervoor gebruikt. In het EDM is vastgelegd dat de velden Customernumber in het CRM-systeem en CustomerId in het factureersysteem mappen met het het attribuut Klantnummer van entiteit Klant, dat is aangemerkt als business key. Hieruit volgt dat de velden CustomerId en CustomerNumber gebruikt kunnen worden om klantinfo uit beide bronsystemen te koppelen.

    Bij organisaties die kampen met zogenaamde datasilo’s kan een EDM helpen de overlap en verschillen tussen deze datasilo’s zowel qua structuur als definities in beeld te brengen hetgeen communicatie tussen de gebruikers van de silo’s vereenvoudigd.

    Master Data Management

    In samenhang met bovenstaande is dit ook een mooie aanleiding om Master Data Management (MDM) op te zetten. Dit komt erop neer dat er een centrale plek wordt gecreëerd waar alle kerngegevens (klanten, producten, leveranciers, medewerkers, …) beheerd worden. Informatie die dus in MDM beheerd worden, worden alleen gewijzigd in het MDM systeem en nergens anders. De overige informatiesystemen in de organisatie verwijzen er slechts naar. Hiermee wordt voorkomen dat er binnen de organisatie inconsistente kerngegevens rondgaan.

    Grote schoonmaak

    Verder zou ik de over te zetten data onderwerpen aan een kwalitteitsonderzoek. Identificeer dubbelingen en tegenstrijdigheden in de data. Spoor foutieve data op. Standaardiseer naamgevingen, formaten en structuren. Zorg voor eenduidige datadefinities en coderingen en breng ze zonodig onder in het EDM en MDM. Corrigeer datakwaliteitsissues zoveel mogelijk alvorens de data door te zetten naar zijn nieuwe habitat.

    Data Governance

    En nu u toch bezig bent met uw datalandschap: Spreek meteen even af wie welke afdeling in de organisatie eindverantwoordelijk is voor welke data. Definieer en implementeer datakwaliteitsregelsen zorg voor duidelijke richtlijnen over data-opslag, beveiliging en toegang. Oftewel: Data Governance.

    Tot slot

    Daarom zeg ik: Bezint eer ge begint als u aan een datamigratie begint en neem uw kans waar om uw databeheer en datakwaliteit in de toekomst op een hoger niveau te brengen.