Samenvatting
WMCHealth brengt een dbt-pijplijn van 72 minuten naar vijf minuten met één omgevingsvariabele.
dbt-pijplijn met twee uitvoermodi
Analytics engineers Maksim Romanchuk en Paul Pedrozo van WMCHealth presenteerden tijdens dbt Summit een patroon voor operationele rapportage en historische analyses vanuit dezelfde bedrijfslogica. WMCHealth ondersteunt negen ziekenhuizen met versnipperde legacy-systemen en had daarom twee uitvoermodi nodig: een verversing om de vijf minuten voor actieve records en een nachtelijke verwerking van de volledige dataset.
De oplossing gebruikt één dbt-model en één codebase. De omgevingsvariabele `ENV_NRT` bepaalt de uitvoering. Bij de waarde 1 bouwt dbt een table-materialisatie op basis van actieve records. De mediane runtime bedraagt dan 278 seconden. Bij de standaardwaarde 0 draait hetzelfde model ’s nachts als incremental-materialisatie over de volledige dataset, met een mediane runtime van 4.340 seconden.
De live verversing ging daarmee van 72 minuten naar vijf minuten. Dat betekent een runtime-reductie van 93,6 procent en meer dan 99 procent minder verwerkte data per run in near-real-time-modus.
Waarom deze dbt-aanpak telt
WMCHealth verwierp drie voor de hand liggende oplossingen: het warehouse opschalen was te duur bij een verversing om de vijf minuten, twee dbt-projecten konden logica laten uiteenlopen en incremental-modellen bleken onvoldoende snel voor zeer grote tabellen.
De gekozen aanpak verplaatst het verschil naar de uitvoerconfiguratie, niet naar een tweede set modellen. Modellen die een versmalde ankertabel inner joinen, nemen de kleinere scope automatisch over. Andere modellen gebruiken een expliciete `WHERE`-filter met een `EXISTS`-clausule. Zo blijven de CI/CD-inrichting en codebasis gelijk, terwijl dashboards, meldingen en historische rapportages elk hun eigen verwerkingsbereik krijgen.
Concrete takeaway voor dbt
Test bij dubbele rapportagebehoeften eerst een gedeeld model met een omgevingsvariabele. Meet per modus de runtime en hoeveelheid verwerkte data, en controleer vervolgens hoe de filter via de DAG doorwerkt. Zo zie je snel of één codebasis beide processen aankan zonder parallelle logica.
Verdiep je kennis
ETL uitgelegd — Extract, Transform, Load in gewone taal
Wat is ETL? Leer hoe Extract, Transform en Load werkt, het verschil met ELT, en welke tools je kunt gebruiken. Helder ui...
KennisbankData lakehouse uitgelegd — Het beste van twee werelden
Wat is een data lakehouse en waarom combineert het het beste van data warehouses en data lakes? Vergelijking, architectu...