PowerBI: Запрос мощности: Работа с изменением имен столбцов из-за поворотов

0

Вопрос

Для отчета, который я делаю. У меня есть колонка с датами. Я извлекаю месяцы из этого столбца, а затем поворачиваю месяцы.

Так, например, у меня может быть таблица, подобная:

Часть# Месяц Кол-во
1 1 10
1 2 10
1 3 10
1 4 10
1 5 10
1 6 10

Который, когда я поворачиваюсь, становится:

Часть# 1 2 3 4 5 6
1 10 10 10 10 10 10

Затем я переименовываю столбцы вместе с выполнением нескольких других задач, таких как создание столбца максимумов. Однако, поскольку данные, которые я получаю, рассчитаны только на 6 месяцев. Имена этих столбцов изменятся. В будущем это может быть:

Часть# 4 5 6 7 8 9
1 10 10 10 10 10 10

Так что строчка вроде:

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

собирается создать ошибку, когда столбцы будут 4,5,6,7,8,9. Есть ли способ решить эту проблему?

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

Лучший ответ

0

Вам нужно будет вручную закодировать шаг для переименования столбцов после вашей сводки.

Этот код M извлекает таблицу, подобную приведенной в вашем примере, из текущей книги в Excel, затем поворачивает, как вы описываете, затем переименовывает столбцы в Часть№, 1-ю, 2-ю, 3-ю, 4-ю, 5-ю и 6-ю. Да, я сказал, что он переименовывается в Часть#, хотя на самом деле это не меняет название столбца. Обязательно включите часть# в список, закодированный на шаге, даже если имя части# на самом деле не меняется, потому что вам нужно учитывать все имена столбцов, извлеченные по таблице.Имена столбцов. Замените 1-й, 2-й, 3-й, 4-й, 5-й и 6-й желаемыми именами столбцов.

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 переплетает два списка вместе. Здесь он переплетает Часть# из исходных имен столбцов (из таблицы шага "Сводный столбец"), затем Часть# из списка, закодированного в #"Переименованные столбцы, затем следующее исходное имя столбца (1 из вашего первого примера или 4 из вашего второго примера), затем 1-е из списка столбцов, закодированного в #"Переименованные столбцы, затем следующее исходное имя столбца (2 из вашего первого примера или 5 из вашего второго примера), затем 2-е из списка столбцов, закодированного в #"Переименованные столбцы и т. Д. Это создает список, необходимый для таблицы.Переименуйте колумны.

2021-11-22 21:03:52
0

Вы можете использовать TableColumNames чтобы получить список имен столбцов, затем вы можете преобразовать этот список. Поэтому для вашего примера вы могли бы использовать что-то вроде:

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

На других языках

Эта страница на других языках

Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................