Was ist Microbatch?
Microbatch ist eine innovative inkrementelle Strategie, die speziell für große Zeitreihendatensätze entwickelt wurde. Eingeführt in dbt Core Version 1.9 (derzeit in der Beta-Phase), ergänzt sie bestehende inkrementelle Strategien um eine strukturierte und effiziente Methode zur schrittweisen Datenverarbeitung in Batches.
In this article:
Zu den wichtigsten Merkmalen von Microbatch gehören:
- Verwendung einer Zeitspalte zur Definition von Batch-Bereichen.
- Unterstützung bei der erneuten Verarbeitung fehlgeschlagener Batches.
- Automatische Erkennung paralleler Batches.
- Verzicht auf komplexe bedingte Logik für das Backfilling.
Diese Strategie eignet sich jedoch nicht für Datensätze, denen eine verlässliche Zeitspalte fehlt oder die eine besonders feinkörnige Kontrolle über die Verarbeitungslogik erfordern.
Wie Microbatches funktionieren
Microbatching funktioniert, indem die Modellverarbeitung auf Basis folgender Parameter in mehrere Abfragen (Batches) aufgeteilt wird:
- event_time: Die Zeitspalte, die die Batch-Bereiche definiert.
- batch_size: Das Zeitintervall für jeden Batch (hour, day [Standard], month, yea
Jeder Batch fungiert als unabhängige, atomare Einheit, was Folgendes bedeutet:
- Batches können individuell verarbeitet, wiederholt oder ersetzt werden.
- Die parallele Ausführung ermöglicht eine separate, idempotente Batch-Verarbeitung.
Die Strategien zum Ersetzen von Batches variieren je nach Datenbank-Adapter:
- Postgres: Verwendet.
merge - BigQuery und Spark: Verwenden
insert_overwrite. - Databricks: Verwendet
replace_where. - Redshift und Snowflake: Verwenden
delete + insert.
Konfiguration von Microbatch-Modellen
Bei der Einrichtung eines Microbatch-Modells sind folgende Konfigurationen erforderlich:
- event_time: Gibt die Zeitspalte in UTC an.
- batch_size: Definiert die Batch-Granularität (hour, day, month, year).
- begin: Legt den Startzeitpunkt für initiale Builds oder vollständige Aktualisierungen (Full Refreshes) fest.
Zu den optionalen Konfigurationen gehören:
- lookback: Verarbeitet vorherige Batches erneut, um verspätet eintreffende Datensätze zu erfassen.
- concurrent_batches: Steuert die parallele Ausführung (wird standardmäßig automatisch erkannt).
Parallele Ausführung von Batches
Die parallele Ausführung wird basierend auf den Batch-Bedingungen und der Adapter-Unterstützung automatisch erkannt. Sie können dieses Verhalten jedoch über die Einstellung concurrent_batches concurrent_batches manuell anpassen.
Eine parallele Ausführung ist möglich, wenn:
- Der Batch weder der erste noch der letzte in der Reihenfolge ist,
- Der jeweilige Datenbank-Adapter die parallele Ausführung unterstützt,
- Die Modelllogik nicht von einer festgelegten Ausführungsreihenfolge abhängt.
Wie Sie Daten nachladen (Backfilling)
Backfilling ermöglicht die erneute Verarbeitung historischer Daten innerhalb eines festgelegten Zeitraums über folgenden Befehl:
dbt run --event-time-start "2025-02-01" --event-time-end "2025-02-03"
Dadurch wird sichergestellt, dass ausschließlich Batches innerhalb des definierten Zeitfensters unabhängig voneinander verarbeitet werden.
Microbatch im Vergleich zu anderen inkrementellen Strategien
Microbatch unterscheidet sich von traditionellen inkrementellen Strategien durch:
- Die Verwendung voneinander unabhängiger Abfragen für zeitbasierte Batches,
- Den Verzicht auf
is_incremental()und komplexe SQL-Logik, - Die automatische Auswahl der effizientesten Operation (insert, update, replace) für die jeweilige Plattform.
Fazit
Microbatch ist ein leistungsstarker neuer Ansatz für die inkrementelle Datenverarbeitung in dbt Core. Indem große Datenmengen in überschaubare, parallelisierbare Einheiten unterteilt werden, vereinfacht dieser Ansatz die Datenmodellierung und steigert gleichzeitig die Effizienz sowie Skalierbarkeit. Vor der Implementierung sollten Sie jedoch genau prüfen, ob Microbatch den spezifischen Anforderungen Ihrer Datenpipeline entspricht.

