PowerBI: Puissance Requête: Traiter avec l'évolution des noms de colonne en raison de pivots

0

La question

Pour un rapport que je fais. J'ai une colonne de date. J'ai extrait les mois à partir de cette colonne, puis faites pivoter le mois.

Ainsi, par exemple, je peux avoir une table:

Partie# Mois Qté
1 1 10
1 2 10
1 3 10
1 4 10
1 5 10
1 6 10

Qui quand j'ai croisé dynamique, il devient:

Partie# 1 2 3 4 5 6
1 10 10 10 10 10 10

J'ai ensuite renommer les colonnes avec quelques autres tâches, comme la création d'une colonne de maximums. Toutefois, étant donné que les données que je tire est que pour 6 mois. Ces colonnes les noms de changement. Dans l'avenir, il peut être:

Partie# 4 5 6 7 8 9
1 10 10 10 10 10 10

Donc une ligne comme:

Table.ReplaceValue(#"Pivoted Column",null,0,Replacer.ReplaceValue,{"1", "2", "3", "4", "5", "6"})

va créer un message d'erreur lorsque les colonnes sont 4,5,6,7,8,9. Est-il un moyen de traiter ce problème?

pivot powerbi powerquery
2021-11-22 19:02:59
2

La meilleure réponse

0

Vous devez coder manuellement une étape de renommer les colonnes après votre pivot.

Ce code M tire un tableau semblable à celui dans votre exemple, à partir de l'actuel classeur dans Excel, puis pivote comme vous le décrivez, puis renomme les colonnes de la Partie#, 1er, 2e, 3e, 4e, 5e et 6e. Oui, j'ai dit qu'il renomme pour numéro de la Pièce, même si elle n'a pas vraiment changé de nom de colonne. Assurez-vous d'inclure le numéro de la Pièce dans la liste codée de l'étape, même si la Pièce n ° nom n'est pas vraiment changer, parce que vous devez tenir compte de tous les noms de colonnes extraites de la Table.ColumnNames. Remplacer la 1ère, 2ème, 3ème, 4ème, 5ème, et 6ème avec votre colonne désirée noms.

let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    #"Pivoted Column" = Table.Pivot(Table.TransformColumnTypes(Source, {{"Month", type text}}, "en-US"), List.Distinct(Table.TransformColumnTypes(Source, {{"Month", type text}}, "en-US")[Month]), "Month", "Qty"),
    #"Renamed Columns" = Table.RenameColumns(#"Pivoted Column", List.Zip({Table.ColumnNames(#"Pivoted Column"),{"Part#", "1st", "2nd", "3rd", "4th", "5th", "6th"}}))
in
    #"Renamed Columns"

List.Zip entrelace deux listes ensemble. Ici, il mêle de la Partie# à partir de l'origine des noms de colonne (ceux de la "Pivoter la Colonne" étape de la table), puis le numéro de la Pièce à partir de la liste de codées dans #"Renommé Colonnes, alors la prochaine origine nom de la colonne (1 à partir de votre premier exemple ou 4 à partir de votre deuxième exemple), puis 1ère à partir de la colonne de la liste de codées dans #"Renommé Colonnes, alors la prochaine origine nom de la colonne (2 à partir de votre premier exemple ou 5 à partir de votre deuxième exemple), puis 2ème à partir de la colonne de la liste de codées dans #"Renommé Colonnes, et ainsi de suite. Ceci définit la liste nécessaire pour la Table.RenameColumns.

2021-11-22 21:03:52
0

Vous pouvez utiliser TableColumNames pour obtenir une liste de noms de colonnes, ensuite, vous pouvez transformer cette liste. Donc, pour votre exemple, vous pouvez utiliser quelque chose comme:

= Table.ReplaceValue(#"Pivoted Column",null,0,Replacer.ReplaceValue,List.Skip(Table.ColumnNames(#"Pivoted Column"),1))
2021-11-22 20:52:23

Dans d'autres langues

Cette page est dans d'autres langues

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................