Ma Minute M : Création d'1 table par fusion de 2 tables avec colonnes différentes et même clé multicolonnes
par
, 14/04/2025 à 08h35 (567 Affichages)
Objectif
Création d'une table qui combine les colonnes de 2 tables i.e. ajoute pour PK(A,B,C) les colonnes [R1...R8] avec Table1 (A,B,C, R1,R2, R3,R4) et Table2 (A,B,C, R5,R6, R7,R8)
A B C R1 R2 R3 R4 id R5 R6 R7 R8 id2 1 asd 0.6 0.23 0.51 0.33 0.B56 1asd0.6 0.45 0.25 0.11 0.36 1asd0.6 2 asd 0.6 ACF BCA FGI LMN 2asd0.6 DSA FDG RER LUN 2asd0.6 3 asd 0.6 1 1 null 1 3asd0.6 1 null null 1 3asd0.6 1 ghi 0.1 0.11 0.21 0.43 0.96 1ghi0.1 0.91 0.43 0.13 0.94 1ghi0.1 2 ghi 0.1 DCM DHJ TRO PQR 2ghi0.1 WED QYT SAO LAP 2ghi0.1 3 ghi 0.1 1 1 null 1 3ghi0.1 1 1 1 null 3ghi0.1 1 hkl 0.2 0.23 0.51 0.33 0.56 1hkl0.2 0.49 0.78 0.61 0.56 1hkl0.2 2 hkl 0.2 ARP VBA GFI WQE 2hkl0.2 MAG ROR KAL OLS 2hkl0.2 3 hkl 0.2 1 1 null 1 3hkl0.2 1 null null 1 3hkl0.2
Source
Fichier Excel avec 2 onglets DataTest _MergeCol.xlsx
- Chaque onglet correspondant à une table.
- Chaque table a une clé primaire (CP) multi-colonnes = PK(A,B,C)
- Il y a correspondance des CP dans les 2 tables PKt1(A,B,C) inner join Kt2(A,B,C)
A B C R1 R2 R3 R4 id 1 asd 0.6 0.23 0.51 0.33 0.56 1asd0.6 2 asd 0.6 ACF BCA FGI LMN 2asd0.6 3 asd 0.6 1 1 null 1 3asd0.6 1 ghi 0.1 0.11 0.21 0.43 0.96 1ghi0.1 2 ghi 0.1 DCM DHJ TRO PQR 2ghi0.1 3 ghi 0.1 1 1 null 1 3ghi0.1 1 hkl 0.2 0.23 0.51 0.33 0.56 1hkl0.2 2 hkl 0.2 ARP VBA GFI WQE 2hkl0.2 3 hkl 0.2 1 1 null 1 3hkl0.2
A B C R5 R6 R7 R8 id 1 asd 0.6 0.45 0.25 0.11 0.36 1asd0.6 2 asd 0.6 DSA FDG RER LUN 2asd0.6 3 asd 0.6 1 null null 1 3asd0.6 1 ghi 0.1 0.91 0.43 0.13 0.94 1ghi0.1 2 ghi 0.1 WED QYT SAO LAP 2ghi0.1 3 ghi 0.1 1 1 1 null 3ghi0.1 1 hkl 0.2 0.49 0.78 0.61 0.56 1hkl0.2 2 hkl 0.2 MAG ROR KAL OLS 2hkl0.2 3 hkl 0.2 1 null null 1 3hkl0.2
Contexte
Chargement des 2 tables dans PWBI
Ouverture de PWQY
Opérations
Sélectionner Home -> Merge Quries -> Merge Queries As New (Création d'une nouvelle table)
Ouverture d'une 2ième fenêtre intitulée MERGE avec la 1ère liste déroulante initialisée avec le Table1
Sélectionner dans la 2ième liste déroulante Table2
On remarque
- des indexes de 1 à 3 sur les colonnes A,B, C => A1, B2 , C3
- La sélection de l'option = Inner (Only matching Rows) dans Join Kind
Les indexes
indiquent les colonnes composant la clé primaire. Pour ajouter un champ dans la clé primaire, Cliquer sur la colonne en appuyant sur CTRL.
Effectuer la sélection dans le même ordre sur les 2 tables => Table1 ( A1, B2 , C3) & Table2 ( A1, B2 , C3)
Join Kind
L'option choisie indique le type de jointure. Ici Inner (Only matching Rows) car il faut une correspondance stricte entre les clés sur Table1 & Table2L'option sélectionnée est déterminante, donc la maîtrise du concept de jointure est essentielle pour obtenir le résultat escompté
On obtient la nouvelle table qui a été renommée DataMerge via le champ Nam
Puis cliquer sur l'icône![]()
Les Colonnes de table2 sont préfixées de AddCol2
Il faut supprimer le préfixe AddCol2 dans le code généré et pour le champ id ajouté 2 par exemple
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 let Source = Table.NestedJoin(Table1, {"A", "B","C"}, Table2, {"A", "B","C"}, "AddCol2", JoinKind.Inner), #"Expanded AddCol2" = Table.ExpandTableColumn(Source, "AddCol2", {"R5", "R6", "R7", "R8", "id"}, {"AddCol2.R5", "AddCol2.R6", "AddCol2.R7", "AddCol2.R8", "AddCol2.id"}) in #"Expanded AddCol2"
Ce qui donne
Code : Sélectionner tout - Visualiser dans une fenêtre à part #"Expanded AddCol2" = Table.ExpandTableColumn(Source, "AddCol2", {"R5", "R6", "R7", "R8", "id"}, {"R5", "R6", "R7", "R8", "id2"})
C'est maintenant Ta Minute M