我需要在Table中使用参数化键。power查询中的Group函数,因为我需要分组的列数因情况而异。示例:表中有5列可用于Group by。对于一种情况,我可能需要1列作为分组依据,对于另一种情况,我可能需要3列。在excel中,我为此设置了一个包含5行的表,其中将包含所需的列标题(1或2或3或4或5)。如何使用excel表(具有所需的列标题数)参数化键引用,以便更新它将成功更新group by子句。
发布于 2020-11-25 16:56:16
此函数用于按指定的列数对指定表进行分组:
(MyTable as table, MyColumns as number) =>
let
#"Grouped Rows" = Table.Group(MyTable, List.FirstN(Table.ColumnNames(MyTable),MyColumns), {})
in
#"Grouped Rows"发布于 2020-11-25 18:16:26
您需要在每行中构造一个具有所需列数的记录列,然后按该列进行分组。
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]&[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

https://stackoverflow.com/questions/65000662
复制相似问题