Ce test couvre les trois piliers du métier de Data Engineer : requêter (SQL), traiter (Python), et concevoir un pipeline fiable. En version take-home (2h) ou live, il donne une image complète du niveau. Corrigés et grille inclus. Rappel : un take-home non supervisé est moins fiable qu'un live — privilégiez le live si possible.
Le fil rouge du métier — et de ce test — est la fiabilité. On ne cherche pas seulement du code qui marche, mais du code robuste, testé, et un pipeline pensé pour l'échec. C'est ce qui distingue un vrai Data Engineer.
Une requête d'agrégation non triviale + une optimisation.
On demande une requête analytique (ex. le dernier achat de chaque client via une fonction fenêtre) puis comment l'optimiser sur gros volume. On évalue la maîtrise du SQL avancé et la conscience de la performance.
-- Dernier achat de chaque client
SELECT * FROM (
SELECT o.*,
ROW_NUMBER() OVER (PARTITION BY client_id ORDER BY date_commande DESC) AS rn
FROM commandes o
) t
WHERE rn = 1;Écrire un traitement robuste et testé.
On fournit une source imparfaite (un CSV ou une API simulée) et on demande un script qui l'ingère, la fiabilise et gère les erreurs. On regarde surtout la robustesse et la présence de tests.
def nettoyer(df):
df = df.drop_duplicates()
df["montant"] = pd.to_numeric(df["montant"], errors="coerce")
return df.dropna(subset=["id", "montant"])
def test_nettoyer():
brut = pd.DataFrame({"id":[1,1,None], "montant":["10","10","x"]})
assert len(nettoyer(brut)) == 1 # doublon retire, ligne invalide retireeDécrire l'orchestration d'un pipeline quotidien fiable.
Sans forcément coder, le candidat décrit comment il orchestrerait le tout en production : ordre des tâches, relances, alertes, idempotence. C'est la partie la plus discriminante.
Signal d'alerte : ce que révèle ce test complet : le SQL et le Python peuvent être bons, mais c'est la partie 3 (fiabilité du pipeline) qui distingue un vrai Data Engineer d'un bon développeur. Un candidat qui néglige la gestion d'échec n'a pas le réflexe du métier.
| Niveau | Maîtrise attendue | Signal GO | NO-GO |
|---|---|---|---|
| Junior | Code qui fonctionne | Réussit SQL et Python de base | Aucune gestion d'erreur ni test |
| Confirmé | Code robuste et testé | Gère les erreurs, écrit des tests | Pipeline sans gestion d'échec |
| Senior | Pipeline fiable et idempotent | Pense reprise, alertes, monitoring | Bon code mais pipeline fragile |
| Lead | Architecture et standards | Conçoit pour l'échec et l'échelle | Néglige la fiabilité en production |
Data Builder mène l'entretien technique et vous livre un rapport clair et détaillé sous 24h. Premier entretien offert.