Zurück zu Utils

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:

SpalteTypBeschreibung
invocation_idTEXTEindeutige ID des dbt-Runs
project_nameTEXTName des dbt-Projekts
target_nameTEXTdbt-Target (z. B. dev oder prod)
run_started_atTIMESTAMP_TZStartzeitpunkt des Runs
run_ended_atTIMESTAMP_TZEndzeitpunkt des Runs
statTEXTStatus (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