Introduction aux tests dans dbt

dbt intermédiaire

Mike Metzger

Data Engineer

Qu'est-ce qu'un test ?

  • Assertions / validations des objets dbt
    • Modèles
    • Sources et graines
  • Servent à vérifier que les données sont conformes
    • Valeurs nulles
    • Valeurs dans un intervalle
    • Relations entre les données
    • Tests personnalisés (vus plus tard)
dbt intermédiaire

Types de tests

dbt offre trois types de tests

  1. Intégrés (4 prédéfinis)
  2. Singuliers*
  3. Génériques*

$$

  • seront vus plus tard
dbt intermédiaire

Tests intégrés

  • unique
    • Vérifie que toutes les valeurs sont uniques
  • not_null
    • Vérifie qu'aucune valeur n'est nulle
  • accepted_values
    • Vérifie que toutes les valeurs figurent dans une liste précise
    • values: [a, b, c, d]
  • relationships
    • Vérifie un lien vers une table/colonne précise
    • to: ref('table')
    • field: id
dbt intermédiaire

Où appliquer les tests ?

  • models/model_properties.yml
    • Le fichier peut porter n'importe quel nom
    • models/schema.yml
  • Définis sous l'en-tête tests:
version: 2

models:
  - name: taxi_rides_raw
    columns:
      - name: tpep_pickup_datetime
        tests:
          - not_null
      - name: payment_type
        tests:
          - not_null
          - accepted_values:
              values: [1, 2, 3, 4, 5, 6]
dbt intermédiaire

Exécuter des tests

  • dbt test
    • dbt test --select modelname
  • Vérifiez que la sortie est conforme
  • En cas d'échec, consulter le SQL compilé

résultat d'un test dbt en échec

dbt intermédiaire

Repérer les échecs

  1. Repérez le code SQL compilé
  2. Dans le répertoire target/compiled/projectname/models/model_properties.yml
    • target/compiled/nyc_yellow_taxi/models/model_properties.yml/
  3. Trouvez le fichier .sql correspondant (au test en échec)
  4. Copiez le contenu dans votre client de base de données et repérez le problème
  5. Corrigez les données puis relancez dbt run / dbt test
dbt intermédiaire

Passons à la pratique !

dbt intermédiaire

Preparing Video For Download...