dbt macro
Logging
Verfolgen Sie automatisch, wann ein dbt-Run startet und endet — direkt in Snowflake.
Ziel
In Produktionsumgebungen möchten Sie wissen, wann ein dbt-Run gestartet wurde, wie lange er gedauert hat und ob er erfolgreich war. Das Logging-Makro schreibt diese Informationen automatisch über die dbt-Hook-Mechanismen in eine Tabelle in Snowflake. So bauen Sie einen vollständigen Audit-Trail aller Ihrer dbt-Runs auf — ohne zusätzliche Tools.
Was Sie erwarten können
Nach jedem dbt-Run wird eine Zeile zu einer Log-Tabelle in Snowflake mit folgenden Feldern hinzugefügt:
| Spalte | Typ | Beschreibung |
|---|---|---|
| invocation_id | TEXT | Eindeutige ID des dbt-Runs |
| project_name | TEXT | Name des dbt-Projekts |
| target_name | TEXT | dbt-Target (z. B. dev oder prod) |
| run_started_at | TIMESTAMP_TZ | Startzeitpunkt des Runs |
| run_ended_at | TIMESTAMP_TZ | Endzeitpunkt des Runs |
| stat | TEXT | Status (z. B. success oder error) |
Verwendung
1. Hooks zu dbt_project.yml hinzufügen
Die Makros werden über die on-run-start und on-run-end Hooks von dbt aufgerufen:
on-run-start:
- "{{ log_dbt_start() }}"
on-run-end:
- "{{ log_dbt_end() }}"2. Log-Tabelle in Snowflake anlegen
Das Makro schreibt in eine Tabelle, die Sie zuerst anlegen. Standardmäßig wird datamodder.runtimes verwendet:
CREATE TABLE <database>.datamodder.runtimes ( invocation_id TEXT, project_name TEXT, target_name TEXT, run_started_at TIMESTAMP_TZ, run_ended_at TIMESTAMP_TZ, stat TEXT );
3. Optional: Schema und Tabelle anpassen
Verwenden Sie Variablen in dbt_project.yml um den Speicherort zu ändern:
vars:
management_config:
schema: datamodder
table: runtimes