取消透视列

在 Power Query 中,可以将列转换为属性值对,其中列成为行。

逆透视列关系图。

图形显示左侧表,其中空白列和空白行,以及属性值 A1、A2 和 A3 作为列的标题。 在此表中,A1 列包含值 V1、V4 和 V7。 A2 列包含值 V2、V5 和 V8。 A3 列包含值 V3、V6 和 V9。 取消透视操作后,图表的右侧表格包含空白列和行。 Attributes 列还包含9行,其中A1、A2和A3各重复三次。 最后,值列包含值 V1 到 V9 的值。

例如,给定如下表,其中国家/地区行和日期列创建了值矩阵,因此很难以可缩放的方式分析数据。

逆透视列示例初始表。

包含文本数据类型中设置的国家/地区列的表的屏幕截图,以及日期为 2023 年 6 月 1 日、2023 年 7 月 1 日和 2023 年 8 月 1 日设置为整数数据类型的三列。 Country 列包含第 1 行中的美国、第 2 行中的加拿大和第 3 行中的巴拿马。

相反,可以将表转换为包含无透视列的表,如下图所示。 在转换后的表中,使用日期作为要筛选的属性更容易。

逆透视列示例目标表。

屏幕截图显示一个表格,其中“国家/地区”列的类型设置为“文本”,“属性”列的类型设置为“文本”,“值”列的类型设置为“整数”。 “国家/地区”列包含前三行中的美国、接下来的三行中的加拿大和最后三行中的巴拿马。 “属性”列包含第一行、第四行和第七行中的 2023 年 6 月 1 日日期。 2023 年 7 月 1 日日期显示在第二行、第五行和第八行中。 最后,2023 年 8 月 1 日日期在第三行、第六行和第九行中找到。

此转换中的键是表中有一组日期,这些日期应全部是单个列的一部分。 每个日期和国家/地区的相应值应位于不同的列中,从而有效地创建属性值对。

Power Query 始终使用两列创建属性值对:

  • 属性:未旋转的列标题的名称。
  • :未进行逆透视操作的列标题下方的值。

用户界面中有多个位置,可在其中找到 逆透视列。 可以右键单击要取消透视的列,也可以从功能区中的 “转换 ”选项卡中选择该命令。

反透视列的右键单击操作的屏幕截图。

“转换”选项卡上的“逆透视列”命令的屏幕截图。

可通过三种方式从表中撤消列:

  • 逆透视列
  • 取消透视其他列
  • 仅透视所选列

逆透视列

对于前面所述的方案,首先需要选择要取消透视的列。 你可以根据需要选择任意数量的列时选择 Ctrl 。 对于此方案,需要选择除名为 Country 以外的所有列。 选择列后,右键点击任一所选列,然后选择“逆透视列”。

演示如何对表中的日期列进行逆透视。

表的屏幕截图,其中选择了 2023 年 6 月 1 日、2023 年 7 月 1 日和 2023 年 8 月 1 日这几列,同时在快捷菜单中选择了“逆透视列”命令。

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

逆透视列最终表。

特殊注意事项

从前面的步骤创建查询后,假设初始表已更新,如下所示的屏幕截图。

逆透视列更新了源表。

具有相同原始国家/地区的表的屏幕截图,2023 年 6 月 1 日、2023 年 7 月 1 日和 2023 年 8 月 1 日日期列,并添加了 2023 年 9 月 1 日日期列。 国家/地区列仍包含美国、加拿大和巴拿马的值,但英国也增加了第四行,墨西哥也增加了第五行。

请注意,你要为 2023 年 9 月 1 日(2023 年 9 月 1 日)添加新列,并为英国和墨西哥国家/地区添加新行。

如果刷新查询,请注意操作是在更新的列上完成的,但不会影响最初未选择的列(本示例中的国家)。 此行为意味着你添加到源表的任何新列也将被取消透视。

下图显示了使用新更新的源表刷新后查询的外观。

逆透视列最终更新表。

包含 Country、Attribute 和 Value 列的表的屏幕截图。 Country 列的前四行包含美国,第二四行包含加拿大,第三四行包含巴拿马,第四行包含英国,第五四行包含墨西哥。 “属性”列的前四行包含 2023 年 6 月 1 日、2023 年 7 月 1 日和 2023 年 8 月的日期,这些日期对每个国家/地区重复。

取消透视其他列

还可以选择不想撤消的列,并取消透视表中其余列。 此操作是取消透视其他列发挥作用的地方。

表格的屏幕截图,其中选中了“国家/地区”列的快捷菜单,并强调了“取消透视其他列”的命令。

该操作的结果与从逆透视列获取的结果完全相同。

取消透视其他列示例目标表。

表格的屏幕截图,其中“国家”列设置为“文本”数据类型,“属性”列设置为“文本”数据类型,“值”列设置为“整数”数据类型。 “国家/地区”列包含前三行中的美国、接下来的三行中的加拿大和最后三行中的巴拿马。 “属性”列包含第一行、第四行和第七行中的 2023 年 6 月 1 日日期。 2023 年 7 月 1 日日期在第二行、第五行和第八行中。 2023 年 8 月 1 日日期显示在第三行、第六行和第九行中。

注释

此转换对于具有未知列数的查询至关重要。 此操作将取消透视除您所选列以外的所有表列。 如果方案的数据源在刷新中获得了新的日期列,则这种类型的转换是理想的解决方案,因为这些新列被选取和取消显示。

特殊注意事项

“逆透视列” 操作类似,如果刷新查询并从数据源选取了更多数据,则除之前选择的列外,所有列都将被逆透视。

为了说明此过程,假设有一个新表,如下图所示。

示例逆透视源表。

包含 Country、2023 年 6 月 1 日、2023 年 7 月 1 日、2023 年 8 月 1 日和 2023 年 9 月 1 日列的表的屏幕截图,其中所有列都设置为“文本”数据类型。 国家/地区列包含从上到下、美国、加拿大、巴拿马、英国和墨西哥。

可以选择“ 国家/地区 ”列,然后选择“ 取消透视其他列”,这将生成以下结果。

示例取消透视其他列更新了最终表。

包含 Country、Attribute 和 Value 列的表的屏幕截图。 “国家/地区”和“属性”列设置为“文本”数据类型。 “值”列设置为“整数”数据类型。 Country 列的前四行包含美国,第二四行包含加拿大,第三四行包含巴拿马,第四行包含英国,第五四行包含墨西哥。 “属性”列包含 2023 年 6 月 1 日、2023 年 7 月 1 日、2023 年 8 月 1 日和 2023 年 9 月 1 日,这四行在每个国家/地区重复。

仅对所选列进行反透视

最后一个选项的目的是仅从表中逆透视特定列。 对于处理数据源中未知数量的列的情况,此选项非常重要。 它允许您仅逆透视所选列。

若要执行此操作,请选择要取消透视的列。本示例中,选择除 Country 列之外的所有列。 然后右键单击所选的任何列,然后选择 “仅透视所选列”。

表的屏幕截图,其中选择了日期列,并且突出显示了“取消透视”选定的列。

请注意此作如何生成与前面的示例相同的输出。

仅对选定的列取消透视以形成最终表。

包含“国家/地区”列设为“文本”数据类型的表的屏幕截图,“属性”列设为“文本”数据类型,“值”列设为“完全数”数据类型。 “国家/地区”列包含前三行中的美国、接下来的三行中的加拿大和最后三行中的巴拿马。 “属性”列包含第一行、第四行和第七行中的 2023 年 6 月 1 日日期。 2023 年 7 月 1 日日期在第二行、第五行和第八行中。 2023 年 8 月 1 日日期显示在第三行、第六行和第九行中。

特殊注意事项

刷新后,如果源表更改为具有新的 9/1/2020 列以及英国和墨西哥的新行,则查询的输出与前面的示例不同。 假设源表在刷新后对下图中的表进行了更改。

仅透视所选列的未透视更新源表的屏幕截图。

查询的输出如下图所示。

“仅透视”所选列更新了最终表的屏幕截图。

如下所示,因为非透视操作只应用于 2020 年 6 月 1 日2020 年 7 月 1 日2020 年 8 月 1 日 列,所以标题为 2020 年 9 月 1 日 的列保持不变。