Sources dbt

dbt intermédiaire

Mike Metzger

Data Engineer

Qu'est-ce qu'une source dbt ?

  • Nom et description des données chargées par le processus EL
  • Aide à définir la lignée des données
  • Tests
  • Documentation

Source de données

1 Photo par Mika Baumeister sur Unsplash
dbt intermédiaire

Sources

  • Fournit des infos de lignée des données
  • Décrit le flux des données dans l'entrepôt
  • Utilisez la fonction Jinja {{ source() }}
    • Semblable à la fonction {{ ref() }}
  • Simplifie l'accès aux données brutes
select * 
from
  {{ source('raw', 'orders') }}
dbt intermédiaire

Définir une source

  • Dans le fichier .yml
  • Le fichier peut être models/model_properties.yml
    • Ou tout autre fichier .yml du répertoire
  • Sous la section sources:
  • Nommez la source avec l'option - name:
  • Définissez chaque table source avec une option - name: sous tables:
  • Différentes options selon le type d'entrepôt de données ; voir la doc dbt.
version: 2

sources:
  - name: raw
    tables:
      - name: phone_orders
      - name: web_orders
dbt intermédiaire

Accéder aux sources

  • Utilisez {{ source() }}
  • {{ source(source_name, table_name) }}
  • Fournit le nom correct de la table dans la requête compilée
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'
dbt intermédiaire

Tester les sources

  • Vous pouvez appliquer des tests aux sources
  • Même méthode que pour les modèles
  • Définis sous sources: plutôt que models:
  • Dans le fichier .yml où les sources sont définies
version: 2

sources:
  - name: raw
    tables:
      - name: phone_orders
        columns:
          - name: id
            tests:
              - not_null
              - unique
      - name: web_orders
dbt intermédiaire

Passons à la pratique !

dbt intermédiaire

Preparing Video For Download...