0Pricing
SQL Academy · Leçon

Tester le SQL : tests dbt et Great Expectations

Écrivez des tests de qualité des données avec dbt (unique, not_null, accepted_values) et des assertions plus riches avec Great Expectations.

Tester le SQL : tests dbt et Great Expectations est une leçon SQL Academy gratuite sur CoddyKit. Ceci est la leçon 3 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage SQL Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours SQL Academy comprend 4 leçons au total.

Pourquoi tester SQL ?

Les mauvaises données restent invisibles jusqu'à ce qu'elles provoquent une mauvaise décision. Les tests détectent :

  • la dérive du schéma (colonne supprimée, type modifié)
  • la qualité des données (NULL là où elles sont interdites, doublons, valeurs hors limites)
  • les problèmes de références (lignes orphelines)
  • les invariants métier (revenus ≥ 0, totaux corrects)

Tests dbt intégrés

Déclarez-les pour chaque colonne dans YAML :

# models/orders.yml
version: 2
models:
  - name: orders
    columns:
      - name: id
        tests:
          - unique
          - not_null
      - name: user_id
        tests:
          - not_null
          - relationships:
              to: ref('users')
              field: id
      - name: status
        tests:
          - accepted_values:
              values: ['pending', 'paid', 'cancelled']

Exécuter les tests dbt

Exécutez tous les tests :

dbt test
dbt test --select orders
dbt build  # = run + test

Tests singuliers personnalisés

Un test est simplement un SELECT qui renvoie des lignes en cas d'échec :

-- tests/no_negative_totals.sql
SELECT id, total
FROM {{ ref('orders') }}
WHERE total < 0

Tests génériques

Tests paramétrés réutilisables sur de nombreuses colonnes :

-- tests/generic/test_in_range.sql
{% test in_range(model, column_name, min, max) %}
SELECT * FROM {{ model }}
WHERE {{ column_name }} < {{ min }} OR {{ column_name }} > {{ max }}
{% endtest %}

-- Use it in YAML:
columns:
  - name: age
    tests:
      - in_range:
          min: 0
          max: 120

Paquet dbt-utils

Ajoute d'autres tests : combinaisons uniques, expression_is_true, equal_rowcount, etc. :

- dbt_utils.expression_is_true:
    expression: "revenue >= 0"
- dbt_utils.equal_rowcount:
    compare_model: ref('staging_orders')

Great Expectations

Alternative plus complète — un cadre Python doté d'une vaste bibliothèque d'attentes et de rapports détaillés :

import great_expectations as ge

suite = context.add_or_update_expectation_suite('orders')
batch = context.get_validator(batch_request, expectation_suite_name='orders')
batch.expect_column_values_to_not_be_null('id')
batch.expect_column_values_to_be_between('total', 0, 10000)

results = context.run_checkpoint('orders_checkpoint')

Quand utiliser chaque outil

  • tests dbt — premier choix si vous utilisez déjà dbt ; léger et limité à SQL
  • Great Expectations — si vous avez besoin de rapports détaillés, d'assertions plus variées et de formats autres que SQL (CSV/parquet)

Gravité des tests

dbt 1.0+ prend en charge les niveaux de gravité avertissement et erreur :

- accepted_values:
    values: [...]
    config:
      severity: warn
      warn_if: ">100"
      error_if: ">1000"

Intégration à la CI

Exécutez les tests dans chaque PR — bloquez la fusion en cas d'échec :

# GitHub Actions
- run: dbt deps && dbt build --profiles-dir profiles
- if: failure()
  run: echo "::error::dbt tests failed"

Tableaux de bord de qualité des données

dbt-utils + dbt-expectations + Elementary peuvent transformer les résultats des tests en tableau de bord Grafana / Looker.

Tests de schéma contre tests de lignes

Détectez les régressions du schéma grâce à l'« instantané » des types de colonnes de dbt ; les tests de lignes détectent les bogues dans les données.

Récapitulatif

Les tests transforment SQL de « faites-moi confiance » en « vérifié ».

  • les tests dbt pour une approche déclarative dans l'entrepôt de données
  • Great Expectations pour une couverture plus large et plus riche
  • exécutez-les dans la CI ; bloquez en cas d'échec
  • suivez les résultats au fil du temps

Vérification rapide

Vous voulez un test dbt qui échoue si une ligne contient total < 0. Quelle est l'approche la plus simple ?

Questions Fréquemment Posées

La leçon « Tester le SQL : tests dbt et Great Expectations » est-elle gratuite ?

Oui — le texte complet de « Tester le SQL : tests dbt et Great Expectations » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours SQL Academy, passe à CoddyKit PRO. Le cours SQL Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Tester le SQL : tests dbt et Great Expectations » ?

Écrivez des tests de qualité des données avec dbt (unique, not_null, accepted_values) et des assertions plus riches avec Great Expectations. Tu pratiques SQL Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer SQL Academy ?

Aucune expérience préalable n'est requise. SQL Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 4.

Combien de temps prend la leçon « Tester le SQL : tests dbt et Great Expectations » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon SQL Academy ?

Oui. Chaque leçon SQL Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Fondamentaux de DBT (Data Build Tool)
  2. SQLFluff et analyse de style
  3. Tester le SQL : tests dbt et Great Expectations
  4. CI pour les modifications de schéma (GitHub Actions)
← Retour à SQL Academy