Zurück zu Utils

dbt macro

Generate Sources

Generieren Sie automatisch dbt-Sources, Staging-Modelle und Projektkonfiguration direkt aus Ihrer Snowflake-Datenbank.

Ziel

Beim Onboarding einer neuen Datenquelle in dbt müssen Sie sources.yml manuell pflegen, Staging-Modelle anlegen und dbt_project.yml erweitern. Bei Dutzenden von Tabellen ist das zeitaufwändig und fehleranfällig. Generate Sources beseitigt diesen Boilerplate, indem es das Snowflake Information Schema abfragt und die benötigten Dateien für Sie generiert.

Sie rufen das Makro in einer dbt-Sitzung auf, kopieren die Ausgabe in die richtigen Dateien und haben sofort eine funktionsfähige Basis für Ihre Staging-Schicht.

Was Sie erwarten können

Das Makro besteht aus drei Teilen, die Sie einzeln oder in Kombination verwenden:

generate_source_yaml

(database, schemas?, split?)

Generiert eine sofort einsatzbereite sources.yml basierend auf den Tabellen und Spalten in Snowflake. Mit split: true wird die Ausgabe pro Schema aufgeteilt.

generate_staging_models

(database, schemas?)

Generiert für jede Tabelle ein einfaches SQL-Staging-Modell mit einem select * from source(). Dateiname und Pfad werden als Kommentar oben angegeben.

generate_dbt_project_snippet

(database, schemas?)

Generiert den Staging-Block für dbt_project.yml, organisiert pro Schema in Unterordnern. Alle Modelle sind standardmäßig auf disabled: true gesetzt.

Verwendung

1. Sources-YAML generieren

Rufen Sie das Makro über dbt run-operation. auf. Die Ausgabe ist direkt kopierbar als sources.yml:

dbt run-operation generate_source_yaml \
  --args '{"database": "MY_DB", "schemas": ["RAW", "LANDING"]}'

2. Staging-Modelle generieren

Generieren Sie für jede Tabelle eine SQL-Staging-Datei. Der Pfad steht als Kommentar in der Ausgabe:

dbt run-operation generate_staging_models \
  --args '{"database": "MY_DB"}'

-- Example output:
-- models/staging/raw/stg_raw__customers.sql
select * from {{ source('raw', 'customers') }}

3. dbt_project.yml-Snippet generieren

Generieren Sie die zugehörige Projektkonfiguration, bereit zum Einfügen in dbt_project.yml:

dbt run-operation generate_dbt_project_snippet \
  --args '{"database": "MY_DB"}'

-- Example output:
models:
  my_project:
    staging:
      raw:
        +schema: raw
        +enabled: false