Un pipeline idempotent produit le même résultat que vous le lanciez une fois ou cinq fois sur la même fenêtre d'entrée. Construisez-le en faisant en sorte que chaque exécution possède une tranche de données déterministe, puis en remplaçant cette tranche au lieu d'y ajouter. Utilisez l'écrasement de partition ou un merge sur une clé stable, dérivez la fenêtre de l'intervalle planifié plutôt que de l'horloge, et évitez les effets de bord non rejouables.
Pourquoi les recruteurs posent cette question
L'idempotence est la propriété qui rend les reprises, les rejeux d'historique et la récupération d'incident sûrs : cette question demande donc en réalité si vous avez déjà exploité des pipelines à 3h du matin. Les recruteurs veulent le motif delete puis insert ou merge, l'usage de l'intervalle de données planifié plutôt que de now(), et la conscience des effets de bord non rejouables comme les e-mails ou les écritures vers une API externe.
Comment structurer votre réponse
- Définissez-la comme : une exécution ou plusieurs, même état final.
- Donnez le mécanisme : écraser une partition ou merger sur une clé.
- Insistez sur le fait que la fenêtre temporelle vient de la planification, pas de l'horloge.
- Signalez les effets de bord qui cassent l'idempotence.
- Expliquez pourquoi cela rend les rejeux d'historique triviaux.
Exemple de réponse
Cela veut dire que je peux relancer le job d'hier maintenant et obtenir exactement la même table que s'il s'était exécuté proprement une seule fois. Le motif que j'utilise : chaque exécution possède une partition, et l'écriture remplace cette partition au lieu d'y ajouter. Donc le job du 2026-08-25 supprime et réécrit la partition de cette date, ou merge sur une clé unique, et le lancer quatre fois ne change rien après la première. Le détail qui piège les gens, c'est le temps. Si votre job filtre sur maintenant moins un jour, alors une relance trois jours plus tard traite la mauvaise fenêtre : l'intervalle doit venir de l'intervalle de données de l'orchestrateur, pas de l'horloge à l'intérieur de la tâche. Je surveille aussi les effets de bord, parce que nous avions un pipeline qui envoyait un e-mail de synthèse à la fin, et une reprise a fait que la finance a reçu deux fois le même rapport. Nous avons déplacé la notification dans une tâche séparée, avec sa propre clé de déduplication. Une fois que tout est idempotent, rejouer l'historique revient simplement à exécuter une plage de dates.
Vous passez cet entretien bientôt ? GhostPilot écoute votre appel en direct, repère la question dès qu'elle est posée et affiche une réponse structurée à l'écran en temps réel. Essayez-le lors de votre prochain entretien blanc, ou prenez un Session Pass à $29, sans abonnement, pour le jour J.
Voir comment ça marcheQuestions de relance à prévoir
- Comment rendriez-vous idempotent un pipeline qui écrit vers une API externe ?
- Quelle est la différence entre idempotent et déterministe ici ?
- Comment gérez-vous une source qui modifie l'historique rétroactivement ?
Autres questions pour ingénieur data
Votre recruteur posera sa propre version de celle-ci. Collez votre véritable fiche de poste dans le Question Predictor gratuit et obtenez les 20 questions que ce poste a le plus de chances de poser, avec ce que chacune cherche vraiment à sonder.
Prédire mes questions