#group-by #powerbi #parameter-passing #powerquery #m
#группировка по #powerbi #передача параметров #powerquery #m
Вопрос:
Мне нужно использовать параметризованный ключ в таблице. Группируйте функцию в power query по мере того, как количество столбцов, по которым мне нужно сгруппировать, варьируется в каждом конкретном случае. Пример: у меня есть 5 столбцов, которые можно использовать для группировки по в таблице. Для одного случая мне может понадобиться 1 столбец для группировки, для другого 3. В Excel я настроил для этого таблицу с 5 строками, в которых будут обязательные заголовки столбцов (1 или 2 или 3 или 4 или 5) Мне нужно для рассматриваемого случая. Как я могу параметризовать ссылку на ключ в таблице Excel (с требуемым количеством заголовков столбцов), чтобы ее обновление успешно обновило предложение group by.
Ответ №1:
Эта функция группирует указанную таблицу по указанному количеству столбцов:
(MyTable as table, MyColumns as number) =>
let
#"Grouped Rows" = Table.Group(MyTable, List.FirstN(Table.ColumnNames(MyTable),MyColumns), {})
in
#"Grouped Rows"
Ответ №2:
Вам нужно создать столбец записи с желаемым количеством столбцов в каждой строке, а затем сгруппировать по этому столбцу.
let
Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
ChType = Table.TransformColumnTypes(Source,{{"GrpBy", type text}}),
CreateGroupBy = Table.AddColumn(ChType, "RecordCol", (row) => Record.SelectFields(row, Text.Split(row[GrpBy], ",")) ),
Grouped = Table.Group(CreateGroupBy, {"RecordCol"}, {{"Summed", each List.Sum([Value]), type number}, {"Data", each _, type table}}),
Expand = Table.ExpandRecordColumn(Grouped, "RecordCol", {"Col2", "Col3", "Col4"}, {"Col2", "Col3", "Col4"})
in
Expand
Вам нужно будет заменить часть построения записей вашими условными обозначениями и, возможно, явным построением записи, например if [Col1] = "1" then [f1 = [Col1], f2 = ""] else [f1 = "", f2 = [Col1]amp;[Col2]]
Имея этот источник
GrpBy | Col2 | Col3 | Col4 | Value
--------------- ------ ------ ------ ------
Col2 | A | Q | 1 | 10
Col2,Col3 | A | W | 2 | 20
Col2,Col4 | B | W | 4 | 30
Col2,Col3,Col4 | C | E | 4 | 40
Col3,Col4 | D | E | 4 | 50
Col2,Col3 | E | R | 4 | 60
Col2,Col3 | A | W | 2 | 70
Col2,Col4 | B | X | 4 | 80
вы получите этот результат
Col2 | Col3 | Col4 | Summed
----- ------ ------ --------
A | | | 10
A | W | | 90
B | | 4 | 110
C | E | 4 | 40
| E | 4 | 50
E | R | | 60