AccueilBlogTest technique monitoring de la qualité des données en production
Guide recrutement data

Test technique monitoring de la qualité des données en production

La qualité des données en production se dégrade silencieusement. En entretien Senior, on évalue la capacité à mettre en place un monitoring proactif qui détecte les problèmes avant les utilisateurs.

Data Builder·Juin 2025·6 min de lecture·Data Engineer · Analytics Engineer
Sommaire
  1. Pourquoi monitorer la qualité
  2. Fraîcheur des données
  3. Monitoring des volumes
  4. Changements de schéma
  5. Outils : Elementary vs Monte Carlo
  6. Stratégie d alerting
  7. Grille

1Pourquoi le monitoring de qualité est critique

Question discriminante

Quels sont les symptômes d un problème de qualité de données non détecté ?

  • Dashboard KPI erroné — le COMEX prend une décision sur un chiffre faux. Détecté 2 semaines plus tard
  • Modèle ML qui se dégrade — les données d entrainement ont changé de distribution, le modèle prédit n importe quoi
  • Pipeline silencieusement vide — une table source ne reçoit plus de données depuis 3 jours. Personne ne l a vu
  • Règle du 1-10-100 — corriger un problème à la source coûte 1. En production : 10. Après une décision business : 100

2Monitoring de la fraîcheur

Question discriminante

Comment alertez-vous quand une table n a pas été mise à jour dans les délais attendus ?

# dbt source freshness sources: - name: transactions tables: - name: orders loaded_at_field: updated_at freshness: warn_after: {count: 6, period: hour} error_after: {count: 24, period: hour} # Lancer la vérification dbt source freshness # Elementary (package dbt) : monitoring automatique # elementary_freshness_anomalies detecte les pics de latence models: - name: fct_orders tests: - elementary.table_anomalies: table_anomalies_type: - freshness # alerte si la table n est plus alimentee
  • Source freshness dbt — vérification intégrée, alerte si loaded_at est trop ancien
  • Airflow SLA Miss — configurer des SLA sur les tâches critiques, alerte si dépassé

3Monitoring des volumes

Question discriminante

Comment détectez-vous qu une table a perdu 50% de ses lignes du jour au lendemain ?

# Elementary : détection d anomalies de volume models: - name: fct_orders tests: - elementary.volume_anomalies: timestamp_column: order_date # alerte si le volume sort de la plage historique # Custom : comparer avec la moyenne glissante SELECT DATE(order_date) AS jour, COUNT(*) AS nb_commandes, AVG(COUNT(*)) OVER ( ORDER BY DATE(order_date) ROWS BETWEEN 7 PRECEDING AND 1 PRECEDING ) AS moyenne_7j, COUNT(*) / AVG(COUNT(*)) OVER ( ORDER BY DATE(order_date) ROWS BETWEEN 7 PRECEDING AND 1 PRECEDING ) AS ratio_vs_moyenne FROM fct_orders GROUP BY 1 HAVING ratio_vs_moyenne < 0.5 OR ratio_vs_moyenne > 2.0

4Détecter les changements de schéma

Question discriminante

Comment êtes-vous alerté quand une colonne est supprimée ou renommée dans une table source ?

  • dbt schema tests — si une colonne source est renommée, le modèle dbt staging échoue au prochain run
  • schema_changes_from_baseline — test dbt qui compare le schéma actuel avec le schéma attendu
  • DataHub notifications — alertes automatiques quand le schéma d un dataset change
  • Fivetran/Airbyte — les connecteurs managés détectent les breaking changes et envoient des alertes

5Elementary vs Monte Carlo vs Soda

Question discriminante

Quel outil de data observabilité choisissez-vous selon le contexte ?

OutilTypeForcesIdéal pour
ElementaryPackage dbt open sourceIntégration native dbt, gratuit, anomaly detectionÉquipes dbt-first, budget serré
Monte CarloSaaS enterpriseDétection automatique sans règles, lineage, MTTR trackingGrandes équipes, données critiques
SodaOpen source + CloudData contracts, checks SQL flexiblesChecks sur mesure, conformité
MetaplaneSaaSSimple, bonne UXÉquipes débutantes en observabilité

6Stratégie d alerting : éviter la fatigue

Question discriminante

Comment évitez-vous que les alertes de qualité soient ignorées ?

  • Priorisation — distinguer les alertes critiques (bloquant la production) des warnings (à surveiller)
  • Canal adapté — critique → PagerDuty + Slack #data-incidents. Warning → Slack #data-quality seulement
  • Runbook — chaque alerte critique a un runbook : qui prévenir, quelle action, comment vérifier
  • SLA de résolution — s engager sur un délai de résolution par niveau de gravité
  • Réduire le bruit — un taux de faux positifs > 20% tue la culture d alerte. Tuner les seuils régulièrement
import great_expectations as gx from evidently import Report from evidently.metric_preset import DataQualityPreset # Great Expectations : suite de validation context = gx.get_context() suite = context.suites.add(gx.ExpectationSuite(name="orders_quality")) suite.add_expectation(gx.expectations.ExpectColumnValuesToNotBeNull(column="order_id")) suite.add_expectation(gx.expectations.ExpectTableRowCountToBeBetween(min_value=1000, max_value=10_000_000)) suite.add_expectation(gx.expectations.ExpectColumnValuesToBeBetween(column="amount", min_value=0, max_value=100_000)) # Valider un batch de données batch = context.data_sources.get("orders_ds").get_asset("orders").get_batch_definition("daily") results = context.run_checkpoint(checkpoint_name="orders_checkpoint") # Evidently : monitoring en production report = Report(metrics=[DataQualityPreset()]) report.run(reference_data=baseline_week1, current_data=data_this_week) report.save_html("quality_report.html") # Alerter sur la dégradation if report.as_dict()["metrics"][0]["result"]["missing_values_share"] > 0.05: send_alert(f"Taux de valeurs manquantes anormal : {missing_pct:.1%}")
  • Anomaly detection automatique — Elementary (dbt) et Monte Carlo détectent les anomalies statistiques (volume, fraîcheur, distribution) sans écrire de règles manuellement
  • SLA de données — définir formellement : fraîcheur maximale (données mises à jour toutes les 2h), taux de complétude minimum (99%), volume attendu (±20% vs semaine précédente)
  • Alerting actionnable — une alerte sans contexte est ignorée. Inclure : table impactée, métrique concernée, valeur attendue vs observée, lien vers le dashboard de monitoring
  • Lineage des incidents — quand une table est corrompue, le lineage permet d'identifier automatiquement les dashboards et modèles en aval impactés
  • Coût de la mauvaise qualité — calculer l'impact business des données erronées (décisions fausses, rapports incorrects) pour justifier l'investissement dans la qualité
  • Anomaly detection automatique - Elementary (dbt) et Monte Carlo detectent les anomalies statistiques (volume, fraicheur, distribution) sans regles manuelles
  • SLA de donnees - fraicheur maximale (donnees mises a jour toutes les 2h), taux de completude minimum (99%), volume attendu (+-20% vs semaine precedente)
  • Alerting actionnable - une alerte sans contexte est ignoree. Inclure : table impactee, metrique concernee, valeur attendue vs observee, lien vers le dashboard
  • Lineage des incidents - quand une table est corrompue, le lineage permet d identifier automatiquement les dashboards et modeles en aval impactes
  • Cout de la mauvaise qualite - calculer l impact business des donnees erronees (decisions fausses, rapports incorrects) pour justifier l investissement dans la qualite

7Grille par niveau

NiveauMaitriseSignal GONO-GO
Confirmédbt source freshness, tests de volume basiquesA configuré des alertes de fraîcheur, monitore les volumesDécouvre les problèmes de qualité par les utilisateurs
SeniorAnomaly detection, Elementary ou Monte Carlo, stratégie d alertingA déployé Elementary ou Monte Carlo, a une stratégie d alerting claireNe sait pas ce qu est l anomaly detection pour la data

Vous recrutez un Data Engineer ou Analytics Engineer ?

Premier entretien gratuit. Rapport GO/NO-GO sous 48h.