tadata
← Retour à l'accueil

Lignage de Données & Observabilité : De la Source à la Consommation

#data-lineage#data-observability#data-engineering#governance

Pourquoi le Lignage Compte

Quand un dashboard affiche de mauvais chiffres, la première question est toujours : "D'où vient cette donnée ?" Sans lignage, répondre à cette question nécessite de tracer manuellement à travers pipelines, scripts et transformations. Cela peut prendre des heures ou des jours.

Le lignage de données cartographie le parcours des données de la source à la destination, incluant chaque transformation.

Niveaux de Lignage

NiveauCe Qui Est SuiviValeur
TableQuelles tables alimentent quelles tablesAnalyse d'impact basique
ColonneQuelles colonnes dérivent de quelles colonnesAnalyse de cause racine précise
LigneQuels enregistrements spécifiques ont contribuéAudit et conformité
MétierComment les métriques métier se relient aux donnéesConfiance de la direction

La plupart des organisations commencent par le lignage au niveau table et progressent vers le niveau colonne.

Méthodes de Collecte du Lignage

MéthodeFonctionnementAvantagesInconvénients
Parsing SQLAnalyse des instructions SQLFonctionne rétroactivementLimité aux workloads SQL
Intégration API/HookLes orchestrateurs émettent des événementsTemps réel, précisIntégration par outil requise
Standard OpenLineageSpec commune pour les événements de lignageVendor-neutral, composableAdoption en croissance
Annotation manuelleLes ingénieurs documentent les dépendancesFonctionne pour tout systèmeRapidement obsolète

L'Écosystème OpenLineage

OpenLineage est un standard ouvert pour la collecte d'événements de lignage :

  • Producteurs : Airflow, Spark, dbt, Flink émettent des événements OpenLineage
  • Transport : Événements envoyés via HTTP, Kafka ou fichier
  • Consommateurs : Marquez, DataHub, Atlan ingèrent et affichent le lignage

Cela découple la collecte du lignage de sa visualisation.

tadata
{ "eventType" : , "COMPLETE" "eventTime" : , "2026-10-05T02:14:09Z" "producer" : "https://github.com/OpenLineage/OpenLineage/tree/1. x/integration/spark" , "schemaURL" : "https://openlineage.io/spec/2-0-2/OpenLineage.jso n#/definitions/RunEvent" , "run" : { "runId" : "01926f3a-7c1e-7b2a-9d4e-5f6a7b8c9d0e" }, "job" : { "namespace" : , "airflow-prod" "name" : "build_training_set.churn" }, "inputs" : [ { "namespace" : , "s3://lake" "name" : "silver.orders" }, { "namespace" : , "s3://lake" "name" : "silver.customers" } ], "outputs" : [ { "namespace" : , "s3://lake" "name" : , "gold.training_set_churn" "facets" : { "columnLineage" : { "fields" : { "spend_90d" : { "inputFields" : [ { "namespace" : , "s3://lake" "name" : , "silver.orders" "field" : "amount_eur" } ] } } } } } ] } START, RUNNING, COMPLETE, FAIL,ABORT or OTHER one UUID per execution; links STARTand COMPLETE stable identity of the pipeline step feature spend_90d comes fromorders.amount_eur
{ "eventType" : , "COMPLETE" "eventTime" : , "2026-10-05T02:14:09Z" "producer" : "https://github.com/OpenLineage/OpenLineage/tree/1. x/integration/spark" , "schemaURL" : "https://openlineage.io/spec/2-0-2/OpenLineage.jso n#/definitions/RunEvent" , "run" : { "runId" : "01926f3a-7c1e-7b2a-9d4e-5f6a7b8c9d0e" }, "job" : { "namespace" : , "airflow-prod" "name" : "build_training_set.churn" }, "inputs" : [ { "namespace" : , "s3://lake" "name" : "silver.orders" }, { "namespace" : , "s3://lake" "name" : "silver.customers" } ], "outputs" : [ { "namespace" : , "s3://lake" "name" : , "gold.training_set_churn" "facets" : { "columnLineage" : { "fields" : { "spend_90d" : { "inputFields" : [ { "namespace" : , "s3://lake" "name" : , "silver.orders" "field" : "amount_eur" } ] } } } } } ] } START, RUNNING, COMPLETE, FAIL,ABORT or OTHER one UUID per execution; links STARTand COMPLETE stable identity of the pipeline step feature spend_90d comes fromorders.amount_eur
Un événement de run OpenLineage (COMPLETE) pour la construction d'un jeu d'entraînement, avec une facette de lignage de colonnes

Extrait de la fiche « Lineage and Catalogs » · Demander la fiche complète

Observabilité des Données

L'observabilité des données étend le monitoring au-delà de l'exécution des pipelines. Les cinq piliers :

  • Fraîcheur : La donnée est-elle à jour ?
  • Volume : Le nombre de lignes attendu est-il arrivé ?
  • Schéma : La structure a-t-elle changé de manière inattendue ?
  • Distribution : Les valeurs des colonnes sont-elles dans les plages attendues ?
  • Lignage : Qu'est-ce qui est affecté en amont/aval ?
tadata
PillarMonitorTypical signal
Freshnesstime since last commit or max(event_time)nightly load did not land by 06:00
Volumerow count per partition vs seasonal baselineMonday rows down 40 %
Schemacolumn set and types vs contractcolumn dropped or retyped
Distributionnull rate, distinct count, mean, quantiles per columncountry code null rate 0.1 % → 12 %
Lineageupstream and downstream graph (sheet 04)which models read the broken table
Les cinq piliers de l'observabilité des données et leurs moniteurs

Extrait de la fiche « Data Quality SLAs and Observability » · Demander la fiche complète

Analyse d'Impact et Analyse de Cause Racine

Analyse d'impact (lignage avant) : "Si je change cette table, quels dashboards, modèles et rapports en aval cassent ?"

Analyse de cause racine (lignage arrière) : "Cette métrique est fausse -- quel pipeline ou source amont en est la cause ?"

tadata
shop DB (CDC) silver.customers bronze.orders silver.orders gold.features_daily training_set_churn training_set_demand revenue dashboard churn model demand model
shop DB (CDC) silver.customers bronze.orders silver.orders gold.features_daily training_set_churn training_set_demand revenue dashboard churn model demand model
Lignage d'une partie d'une plateforme IA : un bug dans silver.orders atteint deux jeux d'entraînement, une table de features, deux modèles et un tableau de bord

Extrait de la fiche « Lineage and Catalogs » · Demander la fiche complète

Feuille de Route d'Implémentation

  1. Instrumenter les orchestrateurs en premier : Airflow/dbt émettent le lignage avec effort minimal
  2. Déployer un store de lignage : Marquez ou DataHub
  3. Ajouter le lignage au niveau colonne : Activer le parsing SQL
  4. Connecter au catalogue : Le lignage doit être visible là où les gens découvrent les données
  5. Construire des moniteurs d'observabilité : Fraîcheur, volume, distribution sur les tables critiques
  6. Intégrer dans le workflow d'incidents : Analyse d'impact alimentée par le lignage dans les alertes

Ressources

Nous utilisons des cookies analytiques pour améliorer votre expérience. Aucune donnée personnelle n'est collectée.