dbt-bronnen

Gevorderde dbt

Mike Metzger

Data Engineer

Wat is een dbt-bron?

  • Naam en beschrijving van data geladen door EL-proces
  • Helpt data lineage te definiëren
  • Tests
  • Documentatie

Gegevensbron

1 Foto door Mika Baumeister op Unsplash
Gevorderde dbt

Bronnen

  • Biedt informatie over data lineage
  • Beschrijft de datastroom in het warehouse
  • Gebruik de Jinja-functie {{ source() }}
    • Vergelijkbaar met {{ ref() }}
  • Maakt toegang tot ruwe data eenvoudiger
select * 
from
  {{ source('raw', 'orders') }}
Gevorderde dbt

Een bron definiëren

  • In het .yml-bestand
  • Bestand kan models/model_properties.yml zijn
    • Of elk ander .yml-bestand in de map
  • Onder de sectie sources:
  • Geef de bron een naam met - name:
  • Definieer elke brontabel met - name: onder tables:
  • Opties verschillen per data warehouse; zie de dbt-documentatie
version: 2

sources:
  - name: raw
    tables:
      - name: phone_orders
      - name: web_orders
Gevorderde dbt

Bronnen benaderen

  • Gebruik {{ source() }}
  • {{ source(source_name, table_name) }}
  • Geeft de juiste tabelnaam in de gecompileerde query
select * from
  {{ source('raw', 'phone_orders') }}
UNION
select * from
  {{ source('raw', 'web_orders') }}
-- dbt compiled
select * from
  'raw'.'phone_orders'
UNION
select * from
  'raw'.'web_orders'
Gevorderde dbt

Bronnen testen

  • Je kunt tests toepassen op bronnen
  • Zelfde manier als bij models
  • Gedefinieerd in de sectie sources: i.p.v. models:
  • In het .yml-bestand waar bronnen staan
version: 2

sources:
  - name: raw
    tables:
      - name: phone_orders
        columns:
          - name: id
            tests:
              - not_null
              - unique
      - name: web_orders
Gevorderde dbt

Laten we oefenen!

Gevorderde dbt

Preparing Video For Download...