Voor veel data engineers is het een frustrerend herkenbaar scenario: je zet een nieuwe datapijplijn op, alles draait soepel en de eindgebruiker krijgt netjes zijn of haar data. Maar dan, een paar weken later, begint het te haperen. Wat ooit een snelle job van 20 minuten was, sleept zich nu urenlang voort. Stakeholders stellen overdag vragen: “kun je deze data even snel ophalen?”, maar komen voor een vervelende verrassing te staan. Wat is er gebeurd? Waarom is iets dat eerst zo efficiënt werkte, nu ineens zo traag?
In dit artikel richten we ons op datapijplijnen die transformaties uitvoeren binnen een data warehouse met gestructureerde data. Denk aan klantgegevens, transacties of operationele logs. Deze transformaties bouwen vaak voort op elkaar, waardoor kleine vertragingen snel kunnen opstapelen.
Gelukkig is hier iets aan te doen. Een effectieve manier om dit aan te pakken, is door bewust te kiezen tussen `views`, `tables` en `incremental` modellen. Zo voorkom je onnodige herberekeningen en kun je pipelines weer terugbrengen naar werkbare runtimes, zonder ingrijpende refactors. Dat dit impact maakt, blijkt uit een praktijkvoorbeeld van dbt Labs: met één slimme materialisatiekeuze werd daar 90 minuten aan runtime bespaard.
Om strategisch te kunnen materialiseren, is het belangrijk de drie meest gebruikte vormen goed te begrijpen:
Let op: zodra je iets materialiseert, introduceer je de kans op datadrift. Een situatie waarin je gematerialiseerde data niet meer overeenkomt met de actuele brondata. Bij `incremental models` gebeurt dit bijvoorbeeld als een bron dataset later wordt aangevuld met data van een dag die je al hebt verwerkt. In dit artikel gaan we hier niet dieper op in, maar het is goed om te beseffen dat materialisatie altijd vraagt om goede monitoring en validatie.
Merk je dat je pipelines trager worden? Dan is het de moeite waard om te controleren of je één van de volgende keuzes hebt gemaakt:
Dat ook tussenlagen baat kunnen hebben bij materialisatie blijkt uit recent onderzoek van Bram Reinders (TU Eindhoven) bij Blenddata. Zijn analyse laat zien dat het materialiseren van bepaalde tussentabellen, ook als deze niet direct door eindgebruikers worden geraadpleegd, herberekeningen in downstream modellen aanzienlijk kan beperken en zo de totale pipeline-prestatie verbetert.
Door deze richtlijnen toe te passen, voorkom je dat je pipeline traag wordt naarmate je data groeit en kun je met minimale ingrepen weer snel leveren aan je stakeholders.
Door strategisch na te denken over hoe je je data materialiseert (`view`, `table`, `incremental`), kun je de performance verbeteren, opslag optimaliseren en veel snellere pipelines krijgen. Slim materialiseren bespaart dus tijd, verlaagt frustratie en zorgt voor tevreden stakeholders.
Werk je aan een datapijplijn die steeds trager lijkt te worden? Of wil je je bestaande setup future-proof maken? Wij denken graag mee..
Of wil je sparren over jouw datastructuur of transformaties? Neem gerust contact met ons op. We helpen je graag verder.