Terug naar Utils
dbt macro
Logging
Houd automatisch bij wanneer een dbt run start en klaar is, direct in Snowflake.
Doel
In productie-omgevingen wil je weten wanneer een dbt run is gestart, hoe lang hij duurde en of hij succesvol was. De Logging macro schrijft deze informatie automatisch weg naar een tabel in Snowflake via de dbt hook-mechanismen. Zo bouw je een volledige audittrail op van al je dbt-runs, zonder extra tooling.
Wat je kunt verwachten
Na elke dbt run wordt een rij toegevoegd aan een logtabel in Snowflake met de volgende velden:
| Kolom | Type | Beschrijving |
|---|---|---|
| invocation_id | TEXT | Unieke id van de dbt run |
| project_name | TEXT | Naam van het dbt project |
| target_name | TEXT | dbt target (bijv. dev of prod) |
| run_started_at | TIMESTAMP_TZ | Starttijdstip van de run |
| run_ended_at | TIMESTAMP_TZ | Eindtijdstip van de run |
| stat | TEXT | Status (bijv. success of error) |
Gebruik
1. Voeg de hooks toe aan dbt_project.yml
De macros worden aangeroepen via de on-run-start en on-run-end hooks van dbt:
on-run-start:
- "{{ log_dbt_start() }}"
on-run-end:
- "{{ log_dbt_end() }}"2. Maak de logtabel aan in Snowflake
De macro schrijft naar een tabel die je eerst aanmaakt. Standaard wordt datamodder.runtimes gebruikt:
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. Optioneel: schema en tabel aanpassen
Gebruik variabelen in dbt_project.yml om de locatie te wijzigen:
vars:
management_config:
schema: datamodder # standaard
table: runtimes # standaard