*Wir passen den Kursaufbau und die Inhalte an Ihre spezifischen Anforderungen und relevanten Anwendungsfälle an.
Modul 1: Skalierbare dbt Modellierung und Projektstruktur
- Das Schichtenmodell staging, intermediate und marts konsequent anwenden
- Klare Namenskonventionen und Verantwortlichkeiten der Models über die einzelnen Schichten hinweg etablieren
- ref() und source() als Definitionen von Abhängigkeiten und nicht nur als SQL Textersetzungen verstehen
- Modellgrenzen so gestalten, dass Lesbarkeit, Wiederverwendung, Lineage und Wartbarkeit unterstützt werden
Modul 2: Vom dbt Model zum ausgeführten Warehouse SQL
- Parsing, Jinja Rendering, DAG Aufbau, Kompilierung und SQL Ausführung verstehen
- dbt compile nutzen, um generiertes SQL zu prüfen und Jinja Fehler von SQL Fehlern zu unterscheiden
- target/compiled und target/run vergleichen und verstehen, welche Ausgabe jeweils enthalten ist
- Verstehen, wie view, table, incremental und ephemeral dieselbe SELECT Logik in unterschiedliches ausführbares SQL übersetzen
Modul 3: Incremental Models und Beladungsstrategien
- is_incremental(), Erstläufe und Folgeläufe verstehen und nachvollziehen, warum ein Full Refresh einen anderen Ausführungspfad verwendet
- append für unveränderliche Event- oder Logdaten einsetzen und Duplikatrisiken verstehen
- merge mit unique_key für Inserts und Updates nutzen, einschließlich merge_update_columns und merge_exclude_columns
- delete+insert und insert overwrite für Schlüsselbereiche oder komplette Partitionen vergleichen
Modul 4: Fortgeschrittener Incremental Betrieb und Performance
- Microbatch, seit dbt 1.9 verfügbar, für zeitbasierte Verarbeitung sehr großer Historien und kontrollierte Backfills verstehen
- Strategien anhand rückwirkender Änderungen, fachlicher Schlüssel, Tabellengröße, Plattformunterstützung und Full-Refresh-Kosten auswählen
- Incremental Predicates und Lookback Fenster für verspätet eintreffende Daten entwickeln, statt sich nur auf max(updated_at) zu verlassen
- Schemaänderungen, Full Refreshes, kontrollierte Backfills, Idempotenz, partition_by und cluster_by für verlässlichen und kostenbewussten Betrieb steuern
Modul 5: Fortgeschrittenes Testing und Test Scoping
- Generische Tests wie relationships und accepted_values kombinieren und gezielt konfigurieren
- Eigene singuläre SQL Tests für fachliche Regeln schreiben, die nicht durch Standardtests abgedeckt werden
- where Konfigurationen auf einzelne Tests anwenden, um Prüfungen auf relevante Datenmengen zu begrenzen
- Testabdeckung für neue Daten, historische Ausnahmen und wichtige fachliche Regeln gestalten
Modul 6: Model Contracts und strukturierte Dokumentation
- Spaltennamen, Datentypen und unterstützte Constraints mit enforced Model Contracts explizit definieren
- Verstehen, wo Contracts Schnittstellen zwischen dbt Models und nachgelagerten Nutzern stabilisieren
- Model- und Column-Beschreibungen systematisch in YAML pflegen
- dbt Dokumentation und Lineage erzeugen und aktiv für Entwicklung und Reviews nutzen
Modul 7: Snapshots, Seeds und bestehende Packages
- Snapshots zur Historisierung von Änderungen nach dem Slowly-Changing-Dimension-Type-2-Prinzip einsetzen
- Snapshots konfigurieren und geeignete Einsatzfälle für historische Änderungsverfolgung erkennen
- Seeds als versionierte Referenz- und Konfigurationstabellen für Mappings und Steuerdaten nutzen
- Bestehende Packages wie dbt_utils für Date Spines und die Erzeugung von Surrogate Keys einsetzen
Modul 8: Jinja, Makros und zusätzliche Productivity Packages
- Jinja mit Variablen, {% set %}, Ausdrücken und einfachen Kontrollstrukturen einführen
- Kleine wiederverwendbare Makros schreiben, ohne direkt in komplexes Metaprogramming einzusteigen
- dbt-audit-helper für Vorher-Nachher-Vergleiche zwischen Modellversionen oder Implementierungen nutzen
- codegen einsetzen, um wiederkehrende Source- und Model-YAML-Erstellung zu beschleunigen
Modul 9: Teamentwicklung, Umgebungen und CI/CD
- Branches, Pull Requests und Code Reviews im täglichen dbt Entwicklungsworkflow einsetzen
- Entwicklungs- und Produktionsumgebungen klar voneinander trennen
- profiles.yml und Environment Variables für umgebungsspezifische Konfiguration nutzen
- Environment Management und automatisierte Validierung mit praktischen CI/CD Workflows verbinden
Modul 10: Model Selection und Graph Operatoren
- Mit --select und --exclude steuern, welche Projektressourcen ausgeführt werden
- Graph Operatoren wie +model und model+ nutzen, um vorgelagerte oder nachgelagerte Abhängigkeiten einzubeziehen
- Ressourcen über Tags, Pfade und kombinierte Auswahlkriterien selektieren
- Effiziente Selektionen für Entwicklung, Testing und Deployment aufbauen, statt das gesamte Projekt auszuführen
Modul 11: dbt Artefakte, Lineage und Slim CI Konzepte
- manifest.json lesen, um Nodes, Abhängigkeiten, Metadaten, Tests und Projektstruktur zu verstehen
- run_results.json nutzen, um Ausführungsstatus, Laufzeiten und Node Ergebnisse auszuwerten
- Verstehen, wie Artefakte Lineage Analyse, Projektauswertungen und automatisierte Tools unterstützen
- State, Selection und Projektartefakte mit gezielten CI Ansätzen wie Slim CI verbinden
Modul 12: Exposures und der dbt Semantic Layer
- Exposures in YAML definieren, um Dashboards, Reports und andere Downstream Konsumenten im DAG sichtbar zu machen
- Exposures für Ownership, Impact Analyse und bessere Transparenz über Transformationsmodelle hinaus nutzen
- Den dbt Semantic Layer und MetricFlow als Ansatz für zentral definierte und kontrollierte Metriken kennenlernen
- Verstehen, wann zentrale Metrikdefinitionen Marts sinnvoll ergänzen, statt jede Kennzahl direkt in finalen Tabellen abzubilden