对行进行分组或汇总
在 Power Query 中,可以根据一列或多列中的值对行进行分组,从而将各行中的值分组为单个值。 有两种类型的分组操作可供选择:
列分组。
行分组。
对于本教程,将使用以下示例表。
表的屏幕截图,其列显示年份 (2020)、国家/地区(美国、巴拿马或加拿大)、产品(衬衫或短裤)、销售渠道(在线或经销商)和单位(从 55 到 7500 的各种值)
“分组依据”按钮位于何处
分组依据按钮位于三个位置:
在主页选项卡上的转换组中。
在“转换”选项卡上的“表”组中。
在快捷键菜单上,单击鼠标右键以选择列时。
使用聚合函数按一列或多列进行分组
在本示例中,目标是汇总国家/地区和销售渠道级别销售的总单位数。 使用“国家/地区”和“销售渠道”列执行分组依据操作。
- 在主页选项卡上选择分组依据。
- 选择高级选项,以便可以选择多列进行分组。
- 选择国家/地区列。
- 选择“添加分组”。
- 选择销售渠道列。
- 在新列名称中,输入总单元数;在操作中,选择 Sum;在列中,选择单位。
- 选择“确定”
此操作将显示如下表。
可用操作
使用分组依据功能,可通过两种方式对可用操作进行分类:
- 行级别操作
- 列级别操作
下表介绍这些操作中的每一项。
操作名称 | 类别 | 说明 |
---|---|---|
总和 | 列操作 | 对列中的所有值求和 |
平均值 | 列操作 | 计算列中值的平均值 |
中值 | 列操作 | 计算列的中值 |
Min | 列操作 | 计算列的最小值 |
最大值 | 列操作 | 计算列的最大值 |
Percentile | 列操作 | 使用从 0 到 100 的输入值计算列的百分位数 |
统计非重复值 | 列操作 | 计算列的非重复值数 |
统计行数 | 行操作 | 计算给定组的总行数 |
统计非重复行 | 行操作 | 计算给定组的不同行数 |
所有行 | 行操作 | 输出不带聚合的表值中的所有分组行 |
注意
统计非重复值和百分位操作仅在 Power Query Online 中可用。
执行按一列或多列分组的操作
从原始示例开始,在本示例中,将创建一个包含总单元数的列和另外两列,这两列分别列出表现最佳产品的名称和销售单位,并在国家/地区和销售渠道级别进行汇总。
将以下列用作分组依据列:
- 国家/地区
- 销售渠道
按照以下步骤创建两个新列:
- 使用 Sum 操作聚合单位列。 将此列命名为总单元数。
- 使用所有行操作添加新的产品列。
完成该操作后,请注意产品列在每个单元格中如何具有 [表] 值。 每个 [表] 值都包含按原始表中的国家/地区和销售渠道列分组的所有行。 可以选择单元格内的空白区域,以便在对话框底部查看表内容的预览。
注意
详细信息预览窗格可能不会显示分组依据操作所使用的所有行。 可以选择 [表] 值,查看与对应分组依据操作相关的所有行。
接下来,需要提取在 column of the tables inside the 新产品列内表的单位列中具有最大值的行,并调用该新列表现最佳产品。
提取表现最佳产品信息
使用具有 [表] 值的新产品列,可以通过转到功能区上的添加列选项卡,并选择常规组中的自定义列来创建新的自定义列。
将新列命名为表现最佳产品。 在自定义列公式下输入公式Table.Max([Products], "Units" )
。
该公式的结果将创建一个具有 [Record] 值的新列。 这些记录值本质上是一个只有一行的表。 这些记录包含具有产品列中每个 [表] 值的单位列的最大值的行。
使用此包含 [Record] 值的新表现最佳产品t列,可以选择展开图标,选择产品和单位字段,然后选择确定。
删除“产品”列并为两个新展开的列设置数据类型后,结果将类似于下图。
模糊分组
注意
以下功能仅在 Power Query Online 中可用。
为了演示如何执行“模糊分组”,请考虑下图所示的示例表。
模糊分组的目标是对文本字符串使用近似匹配算法执行分组依据操作。 Power Query 使用 Jaccard 相似性算法来度量实例对之间的相似性。 然后,它应用聚合分层聚类分析将实例分组在一起。 下图显示了预期的输出,其中表将按“人员”列进行分组。
若要执行模糊分组,请执行本文前面所述的相同步骤。 唯一的区别在于,这次在分组依据对话框中,选择使用模糊分组复选框。
对于每组行,Power Query 将选取最频繁的实例作为“规范”实例。 如果多个实例出现的频率相同,Power Query 将选取第一个实例。 在分组依据对话框中选择确定后,将获得预期的结果。
但是,通过展开模糊分组选项,可以更好地控制模糊分组操作。
以下选项可用于模糊分组:
- 相似性阈值(可选):此选项指示必须将两个值组合在一起的方式。 最小设置零 (0) 将导致将所有值分组在一起。 最大设置 1 仅允许将完全匹配的值分组在一起。 默认值为 0.8。
- 忽略大小写:比较文本字符串时,忽略大小写。 默认情况下该选项处于启用状态。
- 通过组合文本部分进行分组:该算法将尝试合并文本部分(如将 Micro 和 soft 合并为 Microsoft)来对值进行分组。
- 显示相似性分数:显示模糊分组后输入值与计算出的代表值之间的相似性分数。 需要添加操作(如所有行)以逐行显示该信息。
- 转换表(可选):可以选择一个转换表,该转换表将映射值(如将 MSFT 映射到 Microsoft)以将它们分组在一起。
对于本示例,使用转换表来演示如何映射值。 转换表有两列:
- 来源:要在表中查找的文本字符串。
- 目标:用于替换来源列中的文本字符串。
下图显示本示例中使用的转换表。
重要
重要的是,转换表具有与前一张图中所示相同的列和列名(它们必须标记为“来源”和“目标”)。 否则,Power Query 不会将该表识别为转换表。
返回到分组依据对话框,展开模糊分组选项,将操作从统计行数更改为所有行,启用显示相似性分数选项,然后选择转换表下拉菜单。
选择转换表后,选择确定。 该操作的结果提供以下信息:
在本示例中,已启用忽略大小写选项,因此转换表的来源列的值用于查找文本字符串,而不考虑字符串大小写。 首先进行此转换操作,然后进行模糊分组操作。
相似性分数也显示在人员列旁边的表值中,准确地反映了这些值的分组方式及其各自的相似性分数。 如果需要,可以展开此列,或者将新“频率”列中的值用于其他类型的转换。
注意
按多列分组时,如果替换值会增加相似性分数,则转换表将对所有列执行替换操作。
有关转换表工作原理的详细信息,请转到转换表规则。