Skip to content

Tests de qualité (assertions)

Les tâches de type assert permettent de valider la qualité des données directement dans le pipeline. Si la requête SQL retourne au moins une ligne, la tâche échoue.

Configuration

nodes:
  verif_clients_sans_email:
    type: assert
    sql: sql/assert_clients_sans_email.sql
    description: "Aucun client ne doit manquer d'email"
    needs: [clients]
    tags: [qualite, daily]

Écrire la requête

La requête doit retourner les lignes en violation. Si 0 lignes → OK. Si ≥1 lignes → ÉCHEC.

-- sql/assert_clients_sans_email.sql
-- Retourne les clients sans email — la tâche échoue si des lignes sont trouvées
SELECT id_client, nom
FROM {{ params.schema }}.clients
WHERE email IS NULL OR TRIM(email) = ''

Rapport d'erreur

En cas d'échec, Noria affiche un extrait des lignes en violation :

ExecutionError: Assert 'verif_clients_sans_email' FAILED:
query returned 3 violation row(s).
Sample: [{'id_client': 42, 'nom': 'Dupont'}, ...]

Ignorer une assertion non critique

verif_optionnelle:
  type: assert
  sql: sql/assert_soft_rule.sql
  soft_fail: true   # ne bloque pas le pipeline, log seulement

Avec retry

verif_donnees_fraich:
  type: assert
  sql: sql/assert_fraicheur.sql
  retry: 2
  retry_delay_s: 30   # attendre 30s avant retry (données encore en cours de load_orders)