PowerBI: Poder de Consulta: Lidando com a mudança de nomes de coluna devido aos pivôs

0

Pergunta

Para um relatório que eu estou fazendo. Eu tenho uma coluna de data. Eu extrair os meses de coluna e, em seguida, articule os meses.

Assim, por exemplo, eu poderia ter uma tabela como esta:

Parte# Mês Qty
1 1 10
1 2 10
1 3 10
1 4 10
1 5 10
1 6 10

Que quando eu pivô torna-se:

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

Eu, em seguida, mudar o nome das colunas, juntamente com a realização de algumas outras tarefas, como a criação de uma coluna de valores máximos. No entanto, uma vez que os dados que eu puxe é apenas para 6 meses de pena. Estas colunas de nomes vai mudar. No futuro, pode ser:

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

Então uma linha como:

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

vai criar um erro quando as colunas são 4,5,6,7,8,9. Existe uma maneira de lidar com este problema?

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

Melhor resposta

0

Você precisará manualmente o código de um passo para mudar o nome das colunas depois de sua dinâmica.

Este M código puxa uma tabela, como no exemplo da atual pasta de trabalho no Excel e, em seguida, gira como você descreve, em seguida, muda as colunas para a Parte#, 1ª, 2ª, 3ª, 4ª, 5ª, e 6ª. Sim, eu disse isso renomeia a Parte#, mesmo que ele não mudar, realmente, que o nome da coluna. Certifique-se de incluir Parte# na lista codificada no passo, mesmo que a Parte# nome não é realmente a mudar, porque você precisa de uma conta para todos os nomes de coluna extraídos por Tabela.ColumnNames. Substituir o 1º, 2º, 3º, 4º, 5º, e 6º, com a sua coluna desejada nomes.

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 entrelaça duas listas. Aqui, ele entrelaça Parte# a partir do original nomes de coluna (aqueles em que o "Articulada Coluna" etapa da tabela) e, em seguida, Parte# da lista codificada no #"Renomeado Colunas e, em seguida, o próximo original nome da coluna (1 a partir do seu primeiro exemplo, ou 4 a partir de seu segundo exemplo) e, em seguida, o 1º da lista de colunas codificado no #"Renomeado Colunas e, em seguida, o próximo original nome da coluna (2 a partir de seu primeiro exemplo, ou 5 no segundo exemplo), em seguida, o 2º da lista de colunas codificado no #"Renomeado Colunas, e assim por diante. Isso configura a lista necessário para a Tabela.RenameColumns.

2021-11-22 21:03:52
0

Você pode usar TableColumNames para obter uma lista de nomes de coluna e, em seguida, você pode transformar essa lista. Assim, para o exemplo, você pode usar algo como:

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

Em outros idiomas

Esta página está em outros idiomas

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