Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Earn a 50% discount on the DP-600 certification exam by completing the Fabric 30 Days to Learn It challenge.

Reply
Zoplie
Regular Visitor

Power query : Need help on math column/Header value

Hello,

I need your help on power query to retrieve data from a second table according to the header column and the value of the first column.
I have a table with country, city and population.
A second table, which is my final rendering with the countries in the header and the city in the header.
I need to import the values in the "nb" column into the right cells. However, if the value "KO" is present in the cell, I won't modify it.

 

If you can please help me and explain how to do this.

 

Zoplie_0-1690189791745.png

 

I've also tried transposing the table to make the two headings match, but I don't know what to do next.

Zoplie_1-1690189840885.png

 

 

Thank you

5 REPLIES 5
slorin
Super User
Super User

Regarde du coté des options avancées du pivot pour choisir "Nombre".

Table.Pivot(Source, List.Distinct(Source[Country]), "Country", "Nb", List.Count)

 Comme ça on obtient des 1 si la valeur existe et des 0 sinon.

 

Stéphane

slorin
Super User
Super User

Le problème n'est plus le même.

tu indiques au départ que tu veux des valeurs en diagonale et maintenant il peut y avoir plusieurs valeurs sur la même ligne.

il serait plus simple de fournir directement le fait que chaque élément de la colonne "City" peut avoir plusieurs "Country". 

ensuite au départ il y avait une valeur de 100000 ou 30000, et maintenant des 1.

 

donc montre nous le point de départ et le point d'arrivée, ce sera mieux.

Merci

Stéphane

slorin
Super User
Super User

Je complète car j'avais mal compris le KO pour Madrid

Plutot que de vouloir modifier la Table1, je prèfère partir de la table 2 pour reconstruire la table1

 

tout d'abord, dépivoter la table 1 pour conserver uniquement les KO

puis fusionner la table 2 avec la table 1 pour ramener les KO, 

retenir les KO ou sinon prendre le Nb (l'étape ajouter une colonne [Valeur]??[Nb])

puis pivoter le pays.

 

Pour la table 1

let
Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Supprimer le tableau croisé dynamique des autres colonnes" = Table.UnpivotOtherColumns(Source, {"Country"}, "Attribut", "Valeur")
in
#"Supprimer le tableau croisé dynamique des autres colonnes"

Pour la table 2

let
Source = Excel.CurrentWorkbook(){[Name="Table2"]}[Content],
#"Index ajouté" = Table.AddIndexColumn(Source, "Index", 0, 1, Int64.Type),
#"Requêtes fusionnées" = Table.NestedJoin(#"Index ajouté", {"City", "Country"}, Table1, {"Country", "Attribut"}, "Table1", JoinKind.LeftOuter),
#"Table1 développé" = Table.ExpandTableColumn(#"Requêtes fusionnées", "Table1", {"Valeur"}, {"Valeur"}),
#"Personnalisée ajoutée" = Table.AddColumn(#"Table1 développé", "Nb Retenu", each [Valeur]??[Nb]),
#"Colonne dynamique" = Table.Pivot(#"Personnalisée ajoutée", List.Distinct(#"Personnalisée ajoutée"[Country]), "Country", "Nb Retenu"),
#"Lignes triées" = Table.Sort(#"Colonne dynamique",{{"Index", Order.Ascending}}),
#"Colonnes supprimées" = Table.RemoveColumns(#"Lignes triées",{"Nb", "Index", "Valeur"})
in
#"Colonnes supprimées"

Stéphane

Bonjour Stéphane,

Merci pour ton aide la solution fonctionne, j'ai juste une dernière question stp.

 

Le rendu final: 

Zoplie_0-1690209506842.png

Dans la colonne1 on vois que j'ai plusieurs "Paris" je voudrais regrouper les valeurs de "Paris" sur une seule ligne en récupèrant les "1" associés.
J'ai essayé de passer par le "group by" de power query mais il ne permet que la sélection 1 par 1 des colonnes, dans mon cas j'ai plus de 400 colonnes et ce chiffre peut varié dans le futur.

J'ai essayé d'utiliser "for each Table.ColumnNames[MaTable]" pour boucler sur toute les colonnes sauf "country" mais ca n'a pas l'air de fonctionner...

 

le résultat voulu (le nom ded l'ent-etes sont fictifs)

Zoplie_2-1690209835194.png

 

 

slorin
Super User
Super User

Bonjour

Pour obtenir la table de gauche à partir de celle de droite il suffit de pivoter la colonne "Country" avec la colonne de valeur "Nb" et de choisir l'option avancée "ne pas agréger".

J'ajoute un index avant pour récupérer ensuite l'ordre initial par un tri

 

let
Source = Votre_Source,
#"Index ajouté" = Table.AddIndexColumn(Source, "Index", 0, 1, Int64.Type),
#"Colonne dynamique" = Table.Pivot(#"Index ajouté", List.Distinct(#"Index ajouté"[Country]), "Country", "Nb"),
#"Lignes triées" = Table.Sort(#"Colonne dynamique",{{"Index", Order.Ascending}})
in
#"Lignes triées"

Stéphane

Helpful resources

Announcements
LearnSurvey

Fabric certifications survey

Certification feedback opportunity for the community.

PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

Check out the April 2024 Power BI update to learn about new features.

April Fabric Community Update

Fabric Community Update - April 2024

Find out what's new and trending in the Fabric Community.

Top Solution Authors
Top Kudoed Authors