列透视

在 Power Query 中,可以创建一个表,其中包含列中每个唯一值的聚合值。 Power Query 对每个唯一值进行分组,为每个值执行聚合计算,并将列透视到新表中。

显示透视列如何更改表的关系图。

显示左表的图表,其中包含空白列和行。 Attributes 列包含 9 行,其中 A1、A2 和 A3 各重复出现三次。 值列包含从上到下的值 V1 到 V9。 透视列后,右侧表包含空白列和行。 属性值 A1、A2 和 A3 是列标题。 A1 列包含 V1、V4 和 V7 值。 A2 列包含 V2、V5 和 V8 值。 最后,包含 V3、V6 和 V9 值的 A3 列。

想象一下下图中所示的表格。

用于对列进行数据透视的原始表的屏幕截图。

包含“国家/地区”列设为“文本”数据类型、“日期”列设为“日期”数据类型和“值”列设为“整数”数据类型的表。 “国家/地区”列包含前三行中的美国、接下来的三行中的加拿大和最后三行中的巴拿马。 Date 列包含第一行、四行和第七行中的日期、第二行、第五行和第八行中的第二个日期,以及第三行、第六行和第九行中的第三个日期。

此表以简单形式列出了按国家/地区和日期的值。 在此示例中,你想要将此表转换为日期列透视的情况,如下图所示。

通过透视列创建的最终表的屏幕截图。

包含 Text 数据类型中设置的国家/地区列的表,第一个、第二个和第三个日期列设置为整数数据类型。 Country 列包含第 1 行中的加拿大、第 2 行中的巴拿马和美国第 3 行。

注释

在透视列操作期间,Power Query 会根据表格最左侧的第一列中的值按升序对表进行排序。

旋转列

  1. 选择要透视的列。 在此示例中,选择 “日期 ”列。

  2. “任意列”组的“转换”选项卡上,选择“透视列”

    所选的“转换”选项卡的屏幕截图、所选表中的“日期”列和强调的“透视列”选项。

  3. “透视列”对话框中的“值列”列表中,选择“Value”

    “透视列”对话框的屏幕截图,其中选择了“基本”,“值”列设置为“值”。

    默认情况下,Power Query 尝试将求和作为聚合,但可以选择 “高级 ”选项来查看其他可用的聚合。

    “透视列”对话框的屏幕截图,其中已选中“高级”,并显示“聚合值”函数下拉列表。

可用选项包括:

  • 不聚合
  • 计数(全部)
  • 计数(不为空)
  • 最小值
  • 最大值
  • 中线
  • 总和
  • 平均值

透视无法聚合的列

在处理无法聚合的列时,或者所需操作不需要聚合时,可以不进行列聚合。 例如,假设一个如下图所示的表,其中包含 “国家/地区”、“ 位置”和 “产品 ”字段。

用于演示无聚合的数据透视列的初始表的屏幕截图。

表的国家列中,前三行是美国,接下来的三行是加拿大,最后三行是巴拿马。 Position 列在第一行、第四行和第七行包含第一名,在第二行、第五行和第八行包含第二名,在第三行、第六行和第九行包含第三名。

假设要旋转此表中的位置列,以便将其值转换为新列。 对于这些新列的值,请使用 Product 列中的值。 选择 “位置 ”列,然后选择 “透视列 ”以透视该列。

表格的屏幕截图,其中“位置”列已被选中,并且在“转换”选项卡中突出显示了“数据透视列”命令。

“透视列 ”对话框中,选择“ 产品 ”列作为值列。 在“透视列”对话框中选择“高级”选项按钮,然后选择“不聚合”。

“透视列”对话框的屏幕截图,其中“聚合值”函数设置为“不聚合”。

此作的结果将生成下图中所示的结果。

透视列不会汇总结果。

包含国家、第一名、第二名和第三名列的表格,第 1 行的国家为加拿大,第 2 行为巴拿马,第 3 行为美国。

使用“不聚合”选项时出错

不聚合选项的工作方式是,它在透视操作中获取单个值,并将其作为列和行对交集的值。 例如,假设你有一个类似于下图中的表。

包含 Pivot 列的初始表的屏幕截图不会聚合错误示例。

包含国家列、日期列和值列的表格。 “国家/地区”列包含前三行中的美国、接下来的三行中的加拿大和最后三行中的巴拿马。 “日期”列包含所有行中的单个日期。 值列包含介于 20 和 785 之间的各种整数。

你想要通过使用 Date 列来透视该表,并且想要使用 “值 ”列中的值。 由于此透视表仅将 国家/地区 值放在行上,并将 日期 作为列,因此每个单元格值都会收到错误,因为每个 国家/地区日期 的组合都有多行。 此 透视列 操作的结果如以下图所示。

“透视”列的屏幕截图不会聚合错误示例最终表。

请注意错误消息 Expression.Error: There were too many elements in the enumeration to complete the operation.。出现此错误是因为 “不聚合”操作 仅期待国家/地区和日期组合的单个值。