- Waarom dimensionale gegevensmodellering en hoe deze te implementeren?
- Wat zijn de doelstellingen van Data Warehouse Modeling?
- Waarom modelleren?
- Dingen die je je analisten niet zou willen laten doen:
- Dingen die je van je analisten zou kunnen en mogen verwachten:
- Omzetting van transactionele databases naar feiten
- Wat zijn maatregelen en waarom zou je je feitentabellen ermee vullen?
- Waarom moet je een consistente korrel aanhouden?
- Periodic Snapshot Fact Tables
- Accumulerende Snapshot Fact Tables
- Feiten lokaliseren via dimensies
- Dimensies tekenen uit referentie- en ruwe-metagegevens
- Hiërarchie in dimensies
- Slowly Changing Dimensions
- Integreer je Big Data in je ETL-systeem
- Summary
- Voetnoten
Waarom dimensionale gegevensmodellering en hoe deze te implementeren?
Dimensionale modellering (DM) maakt deel uit van de Business Dimensional Lifecycle-methodologie die is ontwikkeld door Ralph Kimball en die een reeks methoden, technieken en concepten omvat voor gebruik bij het ontwerpen van datawarehouses. De aanpak is gericht op het identificeren van de belangrijkste bedrijfsprocessen binnen een bedrijf en het eerst modelleren en implementeren van deze processen alvorens aanvullende bedrijfsprocessen toe te voegen, een bottom-up benadering.
Wat zijn de doelstellingen van Data Warehouse Modeling?
De doelstellingen, die door Ross en Kimball zijn uiteengezet, zijn rechttoe rechtaan:
- informatie gemakkelijk toegankelijk maken
- informatie consistent presenteren
- aanpasbaar en ontvankelijk voor verandering
- informatie tijdig presenteren
- informatie-activa beschermen
- als gezaghebbende en betrouwbare basis dienen voor betere besluitvorming (single source of truth in Data Engineering-taal)
- de VIP’s moeten uw systeem accepteren
Als u aan een ETL-systeem hebt gewerkt of het hebt gebruikt, zou je gemerkt hebben dat informatieconsistentie wordt bereikt door conforme maatregelen, tijdigheid door ETL-cycli en aanpassingsvermogen hangt ook grotendeels af van het ETL-ontwerp.
Waarom modelleren?
Als data engineer ken je SQL heel goed en kun je waarschijnlijk de hele dag door SQL queries schrijven. Maar je kunt er niet van uitgaan dat de typische eindgebruiker een expert is in het schrijven van SQL queries. Dus, ons doel is om een DW te bouwen dat zo gemakkelijk is voor analisten om snel en effectief analyse queries te schrijven.
Dingen die je je analisten niet zou willen laten doen:
- Queries gebaseerd op ID
- Cascading outer joins(zelfs jij zou dat niet willen doen)
- gegroepeerde of samengevoegde meervoudige subqueries
- recursieve subqueries(ga maar eens naar Hackerrank SQL en je zou de pijn begrijpen)
- Subquery correlatie: fetching data across multiple columns in different subqueries
- Joins zonder PK/FK: zelfs voor mij(1.5 jaar DE ervaring), is het moeilijk te visualiseren.
Dingen die je van je analisten zou kunnen en mogen verwachten:
- eenvoudige joins
- kolommen met namen en uitgebreide tekst
- eenvoudige aggregatie
- analytische windowed functies
- DISTINCT
Merk op, dat de bovenstaande punten niet de gemakkelijke zijn en dat uw systeem schaalbaar genoeg moet zijn voor al deze soorten queries.
De OLTP-databases worden getransformeerd in feiten en dimensies vanwege de bovengenoemde doelstellingen.
Omzetting van transactionele databases naar feiten
De meeste bedrijven meten hun succes en efficiëntie door bepaalde soorten gegevens te meten. Deze gegevens geven de werkelijke bedrijfsactiviteiten en voortgang weer. Deze gegevens worden feiten genoemd.
De OLTP-georiënteerde databases registreren transacties per keer, een soort event streaming maar dan gecentraliseerd rond transacties. Het DW is anders. Het DW hoeft geen details op transactieniveau vast te leggen. Het DW moet feiten hebben over verschillende criteria van je bedrijf. Het DW moet de informatie samenvoegen (of analisten laten samenvoegen) die nodig is om het bedrijf te verbeteren. Daarom is redundantie een onvergeeflijke zonde in DW.
Wat zijn maatregelen en waarom zou je je feitentabellen ermee vullen?
In een datawarehouse is een maatregel een eigenschap waarop berekeningen kunnen worden uitgevoerd.
De feiten die we ontlenen aan de operationele gegevensopslag gaan gepaard met een aantal aanvullende gegevens die typisch worden opgeteld in onze analyse. Dit zijn de aspecten van een feit die de analist, of de leidinggevende die de analyse bekijkt, in staat stellen de waarde in het feit te zien.
Waarom moet je een consistente korrel aanhouden?
Om ervoor te zorgen dat je systeem op legitieme wijze feiten kan correleren en aggregeren.
Maar het is niet altijd mogelijk om gegevens op atomaire niveaus te hebben. Dus, om deze kloof te overbruggen, zijn er twee methoden:
- Periodic Snapshot Fact Tables
- Accumulating Snapshot Fact Tables
Periodic Snapshot Fact Tables
Zoals de naam al doet vermoeden, worden ze verzameld met regelmatige tussenpozen. Verbruik van gas, audit, en inspecties zijn enkele voorbeelden van gegevensverzameling waarvoor periodieke snapshots zijn ingeschakeld.
Accumulerende Snapshot Fact Tables
Wanneer een bedrijfsprestatie-indicator een voltooiingspercentage is van een bedrijfsproces dat uit meerdere stappen bestaat, wilt u wellicht het gehele proces vastleggen en de start, de voltooiing, en de stappen daartussen registreren. Dit kan transactie-gedetailleerd zijn, maar er zitten veel maatregelen tussen. Je gebruikt dus accumulating snapshot fact tables om complexe vragen in business intelligence te beantwoorden waarbij er tijd verstrijkt tussen feiten. Een goed voorbeeld zou zijn een feitentabel rij van je bestelling van een broodje kip en de feitentabel rij van het zakje wordt overhandigd door het raam van de auto bij McDonald’s drive-thru.
Feiten lokaliseren via dimensies
U en uw analisten moeten weten hoe feiten te bevragen en te filteren om business intelligence af te leiden uit hen. Dit doel wordt gediend door dimensies.
Dimensies tekenen uit referentie- en ruwe-metagegevens
Dimensies worden bijna altijd gemaakt met een surrogaat-sleutel; de surrogaat-sleutel wordt natuurlijk gerefereerd door de foreign key (of sleutels) in de feitentabel. We doorzoeken de tabel door te zoeken in de dimensies waarin we geïnteresseerd zijn. Alle andere gegevens die onze feiten beschrijven, zoals tijdstempels, klantagenten, winkellocatie, product en klant, maken we tot dimensies.
Het mooie van dimensioneel modelleren is dat feiten niet worden gedefinieerd door de primaire sleutels of een soort unieke identificatiecode, maar door de combinatie van dimensies. Dit geeft aanleiding tot Star Schema.
Het is zeer belangrijk dat we een uniciteit in onze dimensies hebben. Wanneer we query’s over feiten gaan uitvoeren, zullen doublures tussen dimensiecombinaties een ramp worden. Als dat niet kan, voeg dan dimensies toe of aggregeer ze om ze uniek te maken.
Hiërarchie in dimensies
Kijk eens naar de volgende twee afbeeldingen.