AccueilBlogTest Airflow clé en main
Tests prêts à l'emploi

Test Airflow clé en main : concevoir un DAG pour un pipeline quotidien

Ce test évalue le réflexe le plus important d'un data engineer : penser fiabilité, pas seulement « faire tourner ». On demande de concevoir un DAG pour un pipeline quotidien, et on regarde surtout comment le candidat gère les échecs et l'idempotence. Corrigé inclus.

Data Builder·Juillet 2025·10 min de lecture·Test Airflow · orchestration · clé en main

La différence entre un junior et un senior sur Airflow ne se voit pas dans le DAG qui marche, mais dans ce qui se passe quand il échoue : relances, alertes, reprise propre sans doublons.

1Le brief

La consigne

« Conçois un DAG quotidien : extraire une source, transformer, charger dans l'entrepôt. »

Un pipeline classique en trois étapes. La consigne cachée est la fiabilité : que se passe-t-il si l'étape 2 échoue à 3h du matin ?

  • Trois tâches : extract → transform → load, dans l'ordre.
  • Fréquence : quotidienne.
  • La vraie attente : la gestion des échecs et l'idempotence.

2Le corrigé

La consigne

Un DAG avec dépendances, relances et idempotence.

Un bon candidat définit l'ordre des tâches, ajoute des relances automatiques, une alerte en cas d'échec, et surtout rend le chargement idempotent (rejouer ne crée pas de doublons).

from airflow import DAG from airflow.operators.python import PythonOperator from datetime import datetime, timedelta default_args = { "retries": 2, "retry_delay": timedelta(minutes=5), "on_failure_callback": alerter, # alerte en cas d'echec } with DAG("pipeline_quotidien", schedule="@daily", start_date=datetime(2025, 1, 1), catchup=False, default_args=default_args) as dag: extract = PythonOperator(task_id="extract", python_callable=do_extract) transform = PythonOperator(task_id="transform", python_callable=do_transform) load = PythonOperator(task_id="load", python_callable=do_load) # do_load remplace la partition du jour -> idempotent (pas de doublons) extract >> transform >> load
  • Dépendances claires : extract >> transform >> load.
  • Relances et alerte en cas d'échec.
  • Chargement idempotent (remplacer la partition du jour, pas insérer).

Signal d'alerte : le signal décisif : le candidat rend le chargement idempotent et prévoit les relances/alertes. Un DAG sans gestion d'échec est le red flag numéro un — il révèle un profil qui n'a jamais géré la production.

3Grille par niveau

NiveauMaîtrise attendueSignal GONO-GO
JuniorÉcrit un DAG qui s'exécuteOrdonne correctement les tâchesAucune gestion d'échec
ConfirméAjoute relances et alertesPrévoit ce qui se passe en cas d'échecInsertion non idempotente (doublons)
SeniorRend le pipeline idempotentRejoue proprement sans doublonsN'a jamais géré un incident réel
LeadPense monitoring et SLAConçoit une stratégie de reprise« Je regarde le matin »

Vous recrutez un profil data ?

Data Builder mène l'entretien technique et vous livre un rapport clair et détaillé sous 24h. Premier entretien offert.

Tester gratuitementRéserver un appel