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