【问题标题】:PowerQuery: How can I concatenate grouped values?PowerQuery:如何连接分组值?
【发布时间】:2017-10-18 21:26:58
【问题描述】:

如果我有下表(如下图所示),我如何编写一个将分组结果连接起来的分组查询?

对于这个例子,我想按LetterColumn 分组并连接NumberColumn

所以想要的结果是:

【问题讨论】:

    标签: excel group-by powerquery excel-2016 m


    【解决方案1】:

    您可以使用 GUI 执行此操作:

    1. 选择您的 LetterColumn,然后选择 Transform / GroupBy:

    2. 选择添加列/自定义列:

    3. 单击新自定义列右上角的反向箭头以从新自定义列中提取值:

    1. 删除 AllData 列。

    【讨论】:

    • 天才!您是如何找到 [AllData][NumberColumn] 语法的?我已经使用这个工具 4 年了,以前从未见过。
    • 老实说,我不记得 @MikeHoney,但我可能在过去 marcelbeug 的回复中看到过。我从他身上学到了很多东西。要么......或者我只是尝试过它并且它有效。 ;0)
    • 天哪,这是天才
    • 1.这绝对是天才! 2. WTF Excel不是只有简单的join功能吗?
    • @MarcPincince,我也成功地使用了您的方法一年多,但在 O365 中看到了与 @PE 相同的问题。我相信 PQ 正在生成不正确的列表扩展。我看到了这个:each Text.Combine(List.Transform(_, Text.From), ...) - 字面意思是点点点,尽管选择了逗号。如果我把...改成",",世界秩序就恢复了……
    【解决方案2】:

    如果您的表是 Source,并且 NumberColumn 具有数字类型,那么这将起作用:

    = Table.Group(Source, {"LetterColumn"}, {{"Column", each Text.Combine(List.Transform(_[NumberColumn], (x) => Number.ToText(x)), ","), type text}})

    Table.Group 执行 group by 操作,该操作创建一个表,该表由 LetterColumn 中具有相同值的所有行组成。 _[NumberColumn] 给出了这个新表中 NumberColumn 列中的值列表。 List.Transform 部分将数字转换为文本值,Text.Combine 将这些数字连接在一起,用逗号分隔每个值。

    如果你也需要周围的引号,你可以这样做:

    = Table.Group(Source, {"LetterColumn"}, {{"Column", each """" & Text.Combine(List.Transform(_[NumberColumn], (x) => Number.ToText(x)), ",") & """", type text}})

    """"代表"字符,&组合两个文本值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-27
      • 1970-01-01
      相关资源
      最近更新 更多