PowerQuery:如何连接分组值?

Gif*_*guy 11 excel group-by m powerquery excel-2016

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

可输入

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

所以期望的结果将是:

ResultsTable

Mar*_*nce 29

您可以使用GUI以这种方式执行此操作:

  1. 选择你的LetterColumn,然后选择Transform/GroupBy: 在此输入图像描述

  2. 选择添加列/自定义列: 在此输入图像描述

  3. 单击新AllData列右上角的相反箭头,从新AllData列中提取值:

    在此输入图像描述 在此输入图像描述

  4. 删除AllData列.

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

Ale*_*SFT 8

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

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

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

如果还需要周围的引号,则可以执行以下操作:

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

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