Établissez d'abord la granularité, puis quantifiez la duplication : groupez par la clé prévue et comptez les clés à plus d'une ligne. Déterminez si les doublons sont identiques (problème de chargement) ou diffèrent sur une colonne (éclatement de jointure ou doublon au niveau source). Remontez couche par couche jusqu'au premier endroit où la duplication apparaît, corrigez à cette couche, puis reconstruisez les partitions concernées et ajoutez un test d'unicité.
Pourquoi les recruteurs posent cette question
Le chiffre d'affaires dupliqué est le bug classique de l'entrepôt, et les recruteurs veulent une enquête méthodique plutôt qu'une intuition. Le vrai discriminant, c'est de vérifier l'origine couche par couche au lieu de coller un DISTINCT sur la requête finale, et de finir en ajoutant un test pour que le même défaut ne puisse pas revenir en silence.
Comment structurer votre réponse
- Définissez la granularité prévue et quantifiez combien de clés sont dupliquées.
- Comparez les lignes en double pour voir si elles sont identiques ou divergentes.
- Remontez les couches pour trouver où la duplication apparaît en premier.
- Corrigez à l'origine plutôt que de dédupliquer à la fin.
- Ajoutez un test d'unicité et reconstruisez l'historique concerné.
Exemple de réponse
Je commence par écrire ce que la granularité est censée être, une ligne par ligne de commande par exemple, puis je compte les clés à plus d'une ligne pour savoir s'il s'agit de douze lignes ou de douze pour cent. Ensuite je compare quelques groupes de doublons côte à côte, parce que cela donne la cause presque immédiatement. Si les lignes sont identiques octet pour octet, c'est un problème de chargement, en général un job relancé qui ajoute au lieu de remplacer. Si elles diffèrent sur une colonne, c'est un éclatement de jointure, et c'est exactement ce que c'était la dernière fois : une dimension était passée en type 2 et la jointure ne filtrait pas sur la version courante, donc chaque ligne de fait correspondait à trois lignes de dimension historiques et le chiffre d'affaires triplait pour les clients concernés. Je corrige à la couche où cela apparaît en premier, pas avec un DISTINCT dans le modèle final, parce que cela masque le problème et ralentit chaque requête. Puis un test d'unicité sur la granularité, et une reconstruction des partitions concernées pour que la finance obtienne des chiffres corrigés.
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 exactement une jointure vers une dimension de type 2 provoquerait-elle cela ?
- Pourquoi dédupliquer dans le modèle final est-il un mauvais correctif ?
- Comment annonceriez-vous à la finance que les chiffres historiques vont changer ?
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