Dictionary

Backfill

Een backfill is het opnieuw of alsnog verwerken van historische data door een pijplijn die normaal alleen nieuwe of gewijzigde data oppakt. Nodig als je een nieuwe pijplijn bouwt, een kolom toevoegt of een fout rechtzet. Lees hoe je het aanpakt en waarom je pijplijn daarvoor idempotent moet zijn.

Wat is een backfill?

Een backfill is het opnieuw of alsnog verwerken van historische data door een pijplijn die normaal alleen nieuwe of gewijzigde data oppakt. Je datapijplijn draait bijvoorbeeld elke nacht en pikt op wat er die dag is bijgekomen. Een backfill zet diezelfde pijplijn aan het werk op het verleden: alle facturen van de voorbije drie jaar, of net die ene week die verkeerd verwerkt raakte.

Vergelijk het met een boekhouding die je een tijd hebt laten liggen: je dagelijkse routine houdt alles bij vanaf vandaag, maar de overgeslagen maanden moet je nog apart inboeken.

Concreet voorbeeld: je bouwt een nieuw verkoopdashboard en de nachtelijke pijplijn laadt voortaan de bestellingen van gisteren. Op dag één staat er dus maar één dag data in je warehouse. Om drie jaar historiek te tonen, draai je de pijplijn eenmalig over de periode 2023 tot nu. Dat is de backfill.

Wanneer heb je een backfill nodig?

Drie situaties komen het vaakst voor.

  • Een nieuwe pijplijn die het verleden moet inladen. Een verse pijplijn kent alleen de data vanaf het moment dat hij live ging. Voor cijfers over vorige jaren moet je die periode eerst laten instromen.

  • Een nieuwe kolom die je ook voor oude rijen wil invullen. Voeg je een berekende kolom toe, zoals marge per order, dan blijft die leeg voor alles wat er al stond. Een backfill vult ze alsnog. Bij dimensies met historiek raakt dit aan slowly changing dimensions: bepaal eerst welke versie van de waarde je voor het verleden wil bewaren.

  • Een fout die je hebt rechtgezet. Stel dat een verkeerde wisselkoers twee weken lang de omzet fout omrekende. Na de fix reken je die twee weken opnieuw door zodat de cijfers weer kloppen.

Hoe voer je een backfill uit?

In de praktijk draai je dezelfde pijplijn opnieuw over een periode uit het verleden in plaats van over vandaag. Die periode knip je meestal in stukken (per dag, per maand, per partitie) die je een voor een of parallel verwerkt.

De gouden regel: zet de datum nooit vast op vandaag in je code, maar geef ze mee als parameter, zodat dezelfde logica voor elke historische dag werkt. Apache Airflow heeft daar een apart backfill-commando voor: je geeft een begin- en einddatum op en de scheduler werkt elke tussenliggende periode af. In dbt herbouw je een incrementeel model met een full refresh, of verwerk je een reeks periodes stuk per stuk met de microbatch-aanpak.

Waarom je pijplijn idempotent moet zijn

Een backfill overlapt bijna altijd met data die er al staat, en je moet hem soms halverwege herstarten. Daarom moet je pijplijn idempotent zijn: dezelfde run twee keer draaien levert exact hetzelfde resultaat op, zonder dubbele rijen.

Twee patronen zorgen daarvoor. Bij partition overwrite vervang je een hele partitie (een dag, een maand) in één keer, in plaats van rijen bij te voegen: draait de backfill twee keer over maart, dan wordt maart gewoon overschreven. Het tweede patroon is een MERGE op een unieke sleutel, zoals bij Change Data Capture: bestaande rijen worden bijgewerkt, nieuwe toegevoegd, en niets komt dubbel terecht.

Waar moet je op letten bij het gebruik van een backfill

Extra belasting op bron en warehouse
Een backfill over drie jaar leest in één keer veel meer data dan een gewone nachtelijke run. Dat kan je bronsysteem vertragen en je cloudkosten opdrijven. Plan zo'n zware run buiten de kantooruren.

Overlap met het normale schema
Draait je backfill terwijl de geplande run ook start, dan werken twee processen op dezelfde tabellen. Zonder idempotentie krijg je dubbele of half verwerkte data. Stem de timing af of leg de reguliere planning even stil tijdens een grote backfill.

Laatst Bijgewerkt: July 7, 2026 Terug naar Woordenboek
Trefwoorden
backfill datapijplijn incremental refresh idempotentie change data capture slowly changing dimensions apache airflow data engineering etl historische data