在 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 会根据表格最左侧的第一列中的值按升序对表进行排序。
旋转列
选择要透视的列。 在此示例中,选择 “日期 ”列。
在“任意列”组的“转换”选项卡上,选择“透视列”。
在“透视列”对话框中的“值列”列表中,选择“Value”。
默认情况下,Power Query 尝试将求和作为聚合,但可以选择 “高级 ”选项来查看其他可用的聚合。
可用选项包括:
- 不聚合
- 计数(全部)
- 计数(不为空)
- 最小值
- 最大值
- 中线
- 总和
- 平均值
透视无法聚合的列
在处理无法聚合的列时,或者所需操作不需要聚合时,可以不进行列聚合。 例如,假设一个如下图所示的表,其中包含 “国家/地区”、“ 位置”和 “产品 ”字段。
表的国家列中,前三行是美国,接下来的三行是加拿大,最后三行是巴拿马。 Position 列在第一行、第四行和第七行包含第一名,在第二行、第五行和第八行包含第二名,在第三行、第六行和第九行包含第三名。
假设要旋转此表中的位置列,以便将其值转换为新列。 对于这些新列的值,请使用 Product 列中的值。 选择 “位置 ”列,然后选择 “透视列 ”以透视该列。
在 “透视列 ”对话框中,选择“ 产品 ”列作为值列。 在“透视列”对话框中选择“高级”选项按钮,然后选择“不聚合”。
此作的结果将生成下图中所示的结果。
包含国家、第一名、第二名和第三名列的表格,第 1 行的国家为加拿大,第 2 行为巴拿马,第 3 行为美国。
使用“不聚合”选项时出错
不聚合选项的工作方式是,它在透视操作中获取单个值,并将其作为列和行对交集的值。 例如,假设你有一个类似于下图中的表。
包含国家列、日期列和值列的表格。 “国家/地区”列包含前三行中的美国、接下来的三行中的加拿大和最后三行中的巴拿马。 “日期”列包含所有行中的单个日期。 值列包含介于 20 和 785 之间的各种整数。
你想要通过使用 Date 列来透视该表,并且想要使用 “值 ”列中的值。 由于此透视表仅将 国家/地区 值放在行上,并将 日期 作为列,因此每个单元格值都会收到错误,因为每个 国家/地区 和 日期 的组合都有多行。 此 透视列 操作的结果如以下图所示。
请注意错误消息 Expression.Error: There were too many elements in the enumeration to complete the operation.。出现此错误是因为 “不聚合”操作 仅期待国家/地区和日期组合的单个值。