首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Power Query -可变列数的表组

Power Query -可变列数的表组
EN

Stack Overflow用户
提问于 2020-11-25 16:05:57
回答 2查看 169关注 0票数 0

我需要在Table中使用参数化键。power查询中的Group函数,因为我需要分组的列数因情况而异。示例:表中有5列可用于Group by。对于一种情况,我可能需要1列作为分组依据,对于另一种情况,我可能需要3列。在excel中,我为此设置了一个包含5行的表,其中将包含所需的列标题(1或2或3或4或5)。如何使用excel表(具有所需的列标题数)参数化键引用,以便更新它将成功更新group by子句。

EN

回答 2

Stack Overflow用户

发布于 2020-11-25 16:56:16

此函数用于按指定的列数对指定表进行分组:

代码语言:javascript
复制
(MyTable as table, MyColumns as number) =>
let
    #"Grouped Rows" = Table.Group(MyTable, List.FirstN(Table.ColumnNames(MyTable),MyColumns), {})
in
    #"Grouped Rows"
票数 0
EN

Stack Overflow用户

发布于 2020-11-25 18:16:26

您需要在每行中构造一个具有所需列数的记录列,然后按该列进行分组。

代码语言:javascript
复制
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]]这样的显式记录构造

有这个源码

代码语言:javascript
复制
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

你会得到这样的结果

代码语言:javascript
复制
Col2 | Col3 | Col4 | Summed
-----+------+------+--------
A    |      |      | 10
A    | W    |      | 90
B    |      | 4    | 110
C    | E    | 4    | 40
     | E    | 4    | 50
E    | R    |      | 60

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65000662

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档