Je suis en train de refondre un petit outil interne pour mon équipe, et je me retrouve avec deux ensembles de données très similaires mais pas identiques, provenant de sources différentes. J’ai toujours utilisé des jointures SQL assez basiques, mais là, pour fusionner proprement ces infos sans doublons bizarres, j’ai l’impression qu’il me faudrait quelque chose de plus robuste. Est-ce que quelqu’un a déjà été confronté à ce genre de cas où une jointure externe complète (full outer join) serait la solution la plus propre ? J’ai peur que ce soit un peu overkill pour mon besoin, mais en même temps, les essais avec des LEFT JOIN me laissent des trous dans les résultats.
|
Quand faut-il utiliser une full outer join pour fusionner deux jeux de données ?
|
|
Pour moi la jointure externe complète est la solution robuste quand on veut voir ce qui manque des deux sources. C est vrai que c est lourd et que cela peut générer des doublons si les clés ne s alignent pas parfaitement. Une approche pratique consiste a faire une union des résultats d un left join et d un right join puis à dédupliquer les lignes avec COALESCE sur les colonnes de clé et en normalisant les autres champs. Cela permet de garder les lignes uniques tout en montrant les trous.
Oui c est tentant de crier au full outer join mais parfois ce n est pas nécessaire. Le plus souvent un union entre les résultats d un left et d un right join avec un peu de dedup peut suffire et rester lisible. Le risque de perte de valeur quand on passe par une solution trop générale c est d introduire des incohérences si les sources ne décrivent pas les mêmes champs. Donc parfois on peut commencer par une étape de normalisation et d harmonisation des noms de colonnes puis tester une solution plus légère.
Le vrai souci c est souvent les doublons et les valeurs non matching. Si tu n as pas de clé stable il faut penser a une clé de substitution ou a un hash pour aligner les lignes. Dans ce cas la jointure externe complète peut aider mais il faut aussi un step de nettoyage.
J imagine que certains lecteurs veulent un rendu clair qui montre les trous et d autres veulent une liste propre sans ambiguite. Dans ce genre de refonte je cherche a documenter les règles de correspondance et a commenter ce que chaque colonne signifie pour les utilisateurs et pourquoi on voit telle ligne apparaître ou non.
Et toi tu t appuies sur une clé unique ou sur une combinaison de colonnes pour l alignement et combien de colonnes tu gardes comme base de comparaison ?
Peut etre qu on se pose le mauvais probleme ici et que le vrai enjeu n est pas la technique mais l harmonisation des donnees. On peut imaginer que le sujet pousse a utiliser une jointure externe complète alors que le besoin est de comprendre les ecarts de provenance et de redonner un sens a chaque ligne sans fusionner trop strictement.
|
|
« Sujet précédent | Sujet suivant »
|

