Terug naar Utils

dbt macro

Generate Sources

Genereer automatisch dbt sources, stagingmodellen en projectconfiguratie rechtstreeks vanuit je Snowflake database.

Doel

Bij het onboarden van een nieuwe databron in dbt moet je handmatig sources.yml bijhouden, stagingmodellen aanmaken en dbt_project.yml uitbreiden. Bij tientallen tabellen is dat tijdrovend en foutgevoelig. Generate Sources legt die boilerplate weg door de Snowflake information schema te bevragen en de benodigde bestanden voor je te genereren.

Je roept de macro aan in een dbt-sessie, kopieert de output naar de juiste bestanden en hebt direct een werkende basis voor je staginglaag.

Wat je kunt verwachten

De macro bestaat uit drie onderdelen die je los of in combinatie gebruikt:

generate_source_yaml

(database, schemas?, split?)

Genereert een kant-en-klare sources.yml op basis van de tabellen en kolommen die in Snowflake staan. Met split: true wordt de output per schema gesplitst.

generate_staging_models

(database, schemas?)

Genereert voor elke tabel een eenvoudig SQL stagingmodel met een select * from source(). De bestandsnaam en het pad worden als commentaar bovenaan meegegeven.

generate_dbt_project_snippet

(database, schemas?)

Genereert het staging-blok voor dbt_project.yml, georganiseerd per schema in submappen. Alle modellen staan standaard op disabled: true.

Gebruik

1. Sources YAML genereren

Roep de macro aan via dbt run-operation. De output is direct kopieerbaar als sources.yml:

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

2. Stagingmodellen genereren

Genereer voor elke tabel een SQL stagingbestand. Het pad staat als commentaar in de output:

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 genereren

Genereer de bijbehorende projectconfiguratie, klaar om in dbt_project.ymlte plakken:

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

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