Débogage de Pipelines de Données

Identifier systématiquement les causes racines des échecs de pipelines de données et des incidents liés aux données — erreurs de job, données erronées ou manquantes, doublons et défauts de fraîcheur — en retraçant la lignée en amont, en isolant l'étape défaillante, en rapprochant la source et en planifiant une correction et un rattrapage sécurisés.

Qu'est-ce que Débogage de Pipelines de Données ?

Cette compétence guide l'utilisateur à travers un processus structuré en six étapes pour déboguer les incidents de données dans des pipelines de données, en se concentrant sur la recherche de la cause racine plutôt que sur la correction des symptômes en aval. Elle est utile lorsqu'un job échoue, que les données sont erronées/manquantes/dupliquées, qu'un tableau de bord est obsolète ou qu'une partie prenante signale une divergence. Basée sur le workflow décrit dans le fichier SKILL.md, elle prend en charge les plateformes mentionnées (p. ex., dbt, Airflow) en complétant les compétences spécifiques aux outils comme `debugging-dbt-runs` ou `debugging-airflow-pipelines`. Elle fonctionne en précisant d'abord le symptôme, en retraçant la lignée du DAG par recherche binaire, en classifiant la cause (bug de code, mauvaise donnée source, échec d'exécution, duplication non idempotente), en rapprochant l'étape suspecte de son entrée avec des requêtes SQL, en corrigeant et en effectuant un rattrapage idempotent, puis en ajoutant une vérification préventive pour éviter la récurrence.

Compatible avec~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Unknown-333/awesome-data-engineering-skills/tree/main/skills/debugging-data-pipelines

Installed? Explore more Recherche et analyse de données skills: affaan-m/uspto-database, affaan-m/scholar-evaluation, affaan-m/literature-review · View all 6 →

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Que fait Débogage de Pipelines de Données ?

Quand l'utiliser

  • Un job de pipeline a échoué, ou les données de sortie sont erronées/manquantes/dupliquées.
  • Un tableau de bord est obsolète ou une métrique ne correspond pas à la source.
  • Une partie prenante signale une divergence et vous devez en trouver la cause.
  • NE PAS l'utiliser pour les erreurs d'exécution spécifiques à un outil déjà couvertes par debugging-dbt-runs / debugging-airflow-pipelines (commencez par celles-ci, puis utilisez celle-ci pour les incidents de correction des données).

Workflow

- [ ] Définir précisément le symptôme (quelle table, colonne, lignes, fenêtre temporelle)
- [ ] Retracer la lignée en amont pour trouver la première étape où les données sont erronées
- [ ] Isoler : est-ce un bug de code, une mauvaise entrée, des données tardives, ou un échec d'exécution ?
- [ ] Rapprocher l'étape suspecte de sa source (comptages/sommes)
- [ ] Corriger la cause racine, puis planifier un rattrapage idempotent des fenêtres affectées
- [ ] Ajouter une vérification pour que cela ne puisse pas se reproduire silencieusement
  1. Identifier le symptôme. « Le revenu du 2026-01-15 est ~30 % plus bas dans fct_orders » est débogable ; « les nombres semblent erronés » ne l'est pas. Obtenez la table, la colonne, les lignes et la fenêtre.
  2. Retracer la lignée en amont. Parcourez la sortie erronée en arrière à travers les modèles/ tâches pour trouver la première étape où les données sont déjà erronées. Recherchez binairement le DAG plutôt que de lire chaque étape.
  3. Classifier la cause : changement de code, données source erronées/tardives, échec d'exécution partiel, ou doublon non idempotent.
  4. Rapprocher l'étape suspecte de son entrée (comptages de lignes, comptages de clés, sommes) pour confirmer où apparaît l'écart.
  5. Corriger + rattraper les fenêtres affectées de manière idempotente (voir designing-backfills-and-replays).
  6. Prévenir la récurrence avec une vérification ciblée de la qualité des données.

Modèles

Recherche binaire de lignée — vérifiez une étape à mi-chemin du DAG : si ses données sont correctes, le bug est en aval ; si erronées, remontez plus haut. Répétez.

Rapprochement source vs cible pour la fenêtre affectée :

-- Les comptages/sommes correspondent-ils entre l'étape et son entrée pour la mauvaise fenêtre ?
SELECT 'source' AS couche, COUNT(*) n, SUM(montant) total
FROM staging.commandes WHERE date_commande = DATE '2026-01-15'
UNION ALL
SELECT 'cible', COUNT(*), SUM(montant)
FROM marts.fct_commandes WHERE date_commande = DATE '2026-01-15';

Un écart de comptage → lignes supprimées/filtrées ou un chargement partiel échoué. Un écart de somme avec des comptages égaux → un bug de transformation/logique. Un comptage cible plus élevé → duplication (chargement non idempotent).

Vérification temporelle — corrélez la fenêtre de l'incident avec les déploiements, les changements de schéma source et l'historique des exécutions ; la plupart des incidents commencent par un changement.

Pièges courants

  • Corriger les symptômes en aval — corriger la vue matérialisée alors que le bug est dans la préparation signifie qu'il se reproduira ; corrigez la première étape erronée.
  • Correctifs manuels uniques aux données de production — non vérifiables et non reproductibles ; corrigez le code et réexécutez de manière idempotente.
  • Lire le DAG entier linéairement — utilisez plutôt la recherche binaire de lignée.
  • Sauter le rapprochement — deviner où les données divergent fait perdre du temps ; mesurez les comptages/sommes par étape.
  • Aucune vérification préventive après la correction — la même classe de bug revient incognito.

Individual skills in this repo

This repo contains 9 individual skills — each has its own dedicated page.

Unknown-333/authoring-airflow-dags

Write production-grade Apache Airflow DAGs using the TaskFlow API — idempotent tasks, correct scheduling and catchup, retries/SLAs, connections/variables, and avoiding top-level code. Use when creating or reviewing Airflow DAGs, scheduling pipelines, wiring task dependencies, configuring retries/backfills, or fixing non-idempotent tasks.

Unknown-333/building-dagster-assets

Build Dagster pipelines using software-defined assets — asset dependencies, partitions, resources and IO managers, asset checks, and schedules/sensors. Use when creating Dagster assets or jobs, modeling data as assets, adding partitions or backfills, wiring resources/IO managers, or migrating from task-based orchestration to assets.

Unknown-333/building-dbt-models

Build well-structured dbt models — staging/intermediate/marts layers, ref() and source(), materializations, and incremental models with the right strategy. Use when creating or refactoring dbt models, choosing table vs view vs incremental, structuring a dbt project, or writing incremental logic.

Unknown-333/building-feature-pipelines

Build ML feature pipelines and feature stores — point-in-time-correct joins to avoid label leakage, offline/online parity, feature freshness and backfills, and materialization with tools like Feast. Use when engineering features for ML, preventing train/serve skew or data leakage, building a feature store, or backfilling historical features for training.

Unknown-333/building-iceberg-tables

Design and operate Apache Iceberg tables — partitioning and hidden partitioning, partition/schema evolution, snapshots and time travel, compaction and small-file cleanup, and MERGE/upsert for lakehouse tables on Spark, Flink, Trino, or Snowflake. Use when creating or maintaining Iceberg tables, choosing partitioning, evolving schema/partitions, or fixing small-file and metadata bloat.

Unknown-333/building-ingestion-pipelines

Build batch and incremental data ingestion (extract-load) pipelines — full vs incremental extraction, change data capture (CDC), watermarks and high-water marks, API pagination and rate limits, and choosing managed EL tools (Fivetran, Airbyte) vs custom code. Use when ingesting data from databases, APIs, files, or SaaS into a warehouse/lake, or designing incremental extraction and CDC.

Unknown-333/building-kafka-consumers

Build reliable Apache Kafka consumers and producers — consumer groups and partition assignment, offset commit strategy, at-least-once vs exactly-once, idempotent/transactional producers, rebalancing, and dead-letter handling. Use when writing Kafka consumers/producers, configuring offset commits or consumer groups, tuning throughput, or handling rebalances and poison messages.

Unknown-333/designing-backfills-and-replays

Plan and run safe data backfills and replays — idempotent reprocessing of historical windows, partition-by-partition execution, isolating backfill compute from production, verifying results, and avoiding double-counting or changed history. Use when backfilling a new or fixed model, reprocessing after a bug, replaying events, or loading history for a new pipeline without corrupting existing data.

Unknown-333/designing-data-contracts

Define and enforce data contracts between producers and consumers — explicit schema, semantics, ownership, SLAs, and versioning — to prevent silent upstream changes from breaking downstream pipelines. Use when a producer schema change could break consumers, defining an interface between teams/services and the warehouse, or adding schema enforcement at ingestion.

Skills associés