Comprendre les jointures lors de la fusion de requêtes

Si vous avez l’habitude de faire des requêtes sous Power Query, vous avez surement rencontré le cas où vous deviez effectuer une fusion entre deux requêtes. Si vous ne savez pas pourquoi ou comment utiliser la fusion de requêtes, allez donc jeter un coup d’œil à nos articles sur le sujet…

Au premier abord, le vocabulaire utilisé à cette étape peut sembler obscur. D’autant plus si vous n’avez jamais rencontré de jointure auparavant, éventuellement dans d’autres langages. Nous allons donc tenter ici de faire la lumière sur tout cela.

Pour recaler le sujet, la fusion se fait entre deux requêtes afin de modifier le contenu par ajout et/ou suppression de colonnes et/ou de lignes. La fenêtre à votre disposition au moment de régler l’étape est la suivante :

Comprendre les jointures lors de la fusion de requêtes

La première subtilité est la suivante : l’aperçu des deux tables fusionnées nous les présentes l’une sous l’autre. Cependant, le vocabulaire utilisé dans la liste déroulante sur le type de jointure vous parle de gauche et droite. Même si cela peut sembler trivial, il est nécessaire de clarifier noir sur blanc que la « gauche » fera référence à la première table (donc celle du haut) tandis que la droite fera référence à la seconde table (donc celle du … bas ! Bravo vous avez compris l’idée). Dans l’exemple utilisé, nous avons un total de 163 401 lignes dans la table n°1 (deux ans de données) et 87 026 dans la table n°2 (une seule des deux années de la n°1). Nous essayerons de suivre le nombre de correspondance pour chaque cas. 

Maintenant, quel est le résultat des différents types de jointure ? Nous en avons six à disposition : 

  • Externe gauche
  • Externe droite
  • Externe entière
  • Interne
  • Gauche opposée
  • Droite opposée

N.B. : il est à garder en tête que lorsque des lignes sont rapatriées sans relation avec l’autre table, des éléments null seront automatiquement intégrés sur les lignes ou colonnes concernées. 

La jointure « Externe gauche » sera probablement celle que vous utiliserez le plus souvent. L’idée est de compléter les lignes de la première table avec des éléments trouvés dans la seconde, sans rapatrier d’information n’ayant pas de correspondance, et sans rien supprimer de la table initiale. Si une petite représentation graphique peut schématiser l’idée, je vous propose ceci sur une idée de monsieur Joël Crest.

Comprendre les jointures lors de la fusion de requêtes

Dans notre exemple, 83 672 lignes sur les 163 401 seront complétées et la table en sortie aura toujours 163 401 lignes, avec 79 729 lignes contenant des éléments null dans les colonnes rapatriées de la table n°2.

Pour la jointure « Externe droite », le comportement sera inverse à la précédente et gardera donc l’ensemble des lignes de la seconde table ainsi que les lignes de la première ayant un élément commun via la colonne choisie pour la jointure. La représentation sera donc la suivante :

Comprendre les jointures lors de la fusion de requêtes

Dans notre exemple, 83 672 lignes de la table 1 ont une correspondance avec les 87 026 lignes de la table 2. La table en sortie aura donc 87 026 lignes, soit 3 354 lignes avec des éléments null pour les colonnes de la table n°1.

L’explication proposée pour le type de jointure « Externe entière » est plutôt explicite. Le résultat correspondra donc à l’ensemble des lignes des deux tables.

Comprendre les jointures lors de la fusion de requêtes

Dans notre exemple, la table en sortie aura donc 163 401 dont 83 672 lignes complétées par des éléments de la table n°2 et 79 729 lignes avec des éléments null pour les colonnes rapatriées de la table n°2.

La jointure « Interne » quant à elle aura l’effet inverse et ne conservera que les lignes ayant un élément commun dans les deux tables concernées. Nous représenterons le résultat comme suit :

Comprendre les jointures lors de la fusion de requêtes

La correspondance est toujours la même, soit 83 672 lignes sur les 163 401 lignes initiales. Mais la table en sortie n’aura cette fois que 83 672 lignes. Aucun élément null ne sera présent (en lien à l’étape de fusion).

La jointure « Gauche opposée » vous fera perdre de l’information de la première table. Ne resteront que les lignes n’ayant pas de correspondance dans la seconde table.

Comprendre les jointures lors de la fusion de requêtes

Ainsi, dans l’exemple utilisé, avec la même correspondance de 83 672 lignes sur les 163 401 lignes initiales, les lignes restantes seront au nombre de 79 729.

Enfin, pour une jointure « Droite opposée », ne resteront que les lignes de la seconde table sans correspondance avec la table n°1.

Comprendre les jointures lors de la fusion de requêtes

Ainsi la fusion dans ce cas exclura 83 672 lignes des 87 026 de la seconde table. Le résultat contiendra donc un total de 3 354 lignes, avec des éléments null sur l’ensemble des colonnes de la table n°1.

Et voilà pour ce petit voyage dans le monde des jointures. J’espère que vous aurez l’esprit au clair avec ces quelques exemples. Si ce n’est pas le cas, notre équipe reste à votre disposition !