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.
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.
« 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 ?
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 >> loadSignal 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.
| Niveau | Maîtrise attendue | Signal GO | NO-GO |
|---|---|---|---|
| Junior | Écrit un DAG qui s'exécute | Ordonne correctement les tâches | Aucune gestion d'échec |
| Confirmé | Ajoute relances et alertes | Prévoit ce qui se passe en cas d'échec | Insertion non idempotente (doublons) |
| Senior | Rend le pipeline idempotent | Rejoue proprement sans doublons | N'a jamais géré un incident réel |
| Lead | Pense monitoring et SLA | Conçoit une stratégie de reprise | « Je regarde le matin » |
Data Builder mène l'entretien technique et vous livre un rapport clair et détaillé sous 24h. Premier entretien offert.