Magazine Informatique

Power Query: Créer des joints entre des tables

Publié le 11 septembre 2015 par Sopmar01 @mon_cher_watson

L’équipe de développement de Power Query rend disponibles de nouvelles version de cet add-in Excel, mensuellement. Dans une version récente, plusieurs options de jointures ont été ajoutées, rendant ainsi l’option de fusion de tables (merge queries) encore plus intéressante. Cet article vise à présenter les différentes options de jointures disponibles dans Power Query.

Tables de données

Pour illustrer les différentes options de jointures disponibles dans Power Query, nous allons utiliser deux tables, soit la table de ventes A et la table de ventes B, que vous pouvez apercevoir ci-bas.

Tables de vente
Pour comprendre comment fusionner deux tables ensemble dans Power Query, vous devriez d’abord lire l’article suivant: Power Query: Importer, transformer et fusionner des tables de données dans Excel.

1. Left Outer (all from first, matching from second)

De A vers B

Reprend tous les enregistrements de la première table, soit les produits A et les ventes A, et renvoie seulement les données correspondantes de la deuxième table, soit les ventes B.

LeftOuterAB

De B vers A

Reprend tous les enregistrements de la deuxième table, soit les produits B et les ventes B, et renvoie seulement les données correspondantes de la première table, soit les ventes A.

LeftOuterBA

2. Right Outer (all from second, matching from first)

De A vers B

Reprend tous les enregistrements de la deuxième table, soit les ventes B, et renvoie seulement les données correspondantes de la première table, soit les ventes A. Voyez toutefois que nous perdons les étiquettes de produits lorsque nous procédons ainsi. Une alternative, pour obtenir toutes les étiquettes de produits des ventes B, serait d’utiliser un LeftOuter de B vers A.

RightOuterAB

Une autre alternative serait d’ajouter la colonne de produits B lors de l’expansion de la table de ventes B et d’ensuite supprimer la première colonne.

RightOuterABFull

De B vers A

Reprend tous les enregistrements de la deuxième table, soit les ventes A, et renvoie seulement les données correspondantes de la première table, soit les ventes B.

RightOuterBA

3. Full Outer (All rows from both)

De A vers B

Reprend toutes les lignes des deux tables, mais les étiquettes de lignes ne sont que ceux de la première table, soit la table de ventes A.

FullOuterAB

De B vers A

Reprend toutes les lignes des deux tables, mais les étiquettes de lignes ne sont que ceux de la première table, soit la table de ventes A.

FullOuterBA

Manipulations supplémentaires

Afin de rendre un joint Full Outer plus intéressant, vous voudrez peut-être effectuer quelques étapes de transformation. D’abord, vous voudrez sans doute ajouter la colonne de produits de la table de ventes B, en plus de celle de la table de ventes A, en sélectionnant les produits dans le menu d’expansion.

Full Outer

Ensuite, vous voudrez sans doute ajouter une colonne personnalisée qui comprendra tous les noms de produits. Vous pourrez le faire à l’aide d’une fonction If, tel qu’illustré ci-bas.

FullOuter colonne personnalisée

Vous obtiendrez alors la table résultante suivante.

FullOuter ajout colonne

Et vous pourrez alors supprimer les colonnes ProduitsA et  ProduitsB, pour ne retenir que la colonne avec tous les noms de produits.

FullOuter

4. Inner (only matching rows)

De A vers B

Reprend les produits communs entre les deux tables, soit les produits A et B, et présente d’abord les ventes de A et ensuite les ventes de B.

InnerAB

De B vers A

Reprend les produits communs entre les deux tables, soit les produits A et B, et présente d’abord les ventes de B et ensuite les ventes de A.

InnerBA

5. Left Anti (rows only in first)

De A vers B

Reprend seulement les lignes de la première table qui ne correspondent pas à la deuxième table. On retrouve donc les ventes de la table A pour les produits qui n’existent pas dans la table de ventes B.

LeftAntiAB

De B vers A

Reprend seulement les lignes de la première table qui ne correspondent pas à la deuxième table. On retrouve donc les ventes de la table B pour les produits qui n’existent pas dans la table de ventes A.

LeftAntiBA

6. Right Anti (rows only in second)

De A vers B

Reprend seulement les lignes de la deuxième table qui ne correspondent pas à la première table. On retrouve donc les ventes de la table B pour les produits qui n’existent pas dans la table de ventes A. Par contre, pour obtenir le nom des produits, il faut les inclure dans le menu d’expansion. Et finalement, il serait sans doute préférable, à la toute fin, de supprimer les colonnes ProduitsA et VentesA.

RightAntiAB

De B vers A

Reprend seulement les lignes de la deuxième table qui ne correspondent pas à la première table. On retrouve donc les ventes de la table A pour les produits qui n’existent pas dans la table de ventes B. Par contre, pour obtenir le nom des produits, il faut les inclure dans le menu d’expansion. Et finalement, il serait sans doute préférable, à la toute fin, de supprimer les colonnes ProduitsB et VentesB.

RightAntiBA

À retenir

L’ordre dans lequel vous effectuez vos fusions importe. Avant d’aller de l’avant avec une fusion, posez-vous des questions sur vos sources de données et sur les résultats que vous désirez obtenir via cette fusion. De plus, remarquez qu’il existe plusieurs alternatives pour obtenir les mêmes résultats, comme c’est souvent le cas avec ce type d’outils. Assurez-vous de bien en saisir toutes les subtilités.


NOTRE OFFRE DE FORMATIONS


Microsoft Most Valuable Professional

Le CFO masqué vous offre 13 formations, réparties dans 4 catégories: Tableaux de bord, Modélisation financière, Finance corporative et Analyse et modélisation de données. Ces formations sont offertes en classe, en entreprise et en ligne. Nos formateurs sont des experts dans leur domaine et sont accrédités par Emploi-Québec et vous remettent un certificat, à la fin de chaque formation, que vous pouvez notamment utiliser pour faire reconnaître des heures de formation continue auprès de votre ordre professionnel.

Consulter la liste des formations offertes

Pour info: 514-605-7112 ou [email protected]


Retour à La Une de Logo Paperblog

A propos de l’auteur


Sopmar01 3934 partages Voir son profil
Voir son blog

l'auteur n'a pas encore renseigné son compte