跳转到内容

用于将长而窄的数据表转换为短而宽的数据表。所选列会被转置,列名称转换为跨多列的值。

最容易理解的例子也许是将月份作为行列出的数据表:

对该数据表进行透视,会将所有月份行转换为列。

长表(之前)ProductMonthValueWidgetJan10WidgetFeb20GadgetJan5GadgetFeb8透视宽表(之后)ProductJanFebWidget1020Gadget58
透视将长表变为宽表:Month 的值变为 Jan/Feb 列,与逆透视相反。

通过指定要转置的列和保持不变的列,这成为一个强大的工具。在其他 ETL 工具中完成这种转换可能需要多出十几个步骤。

Table Pivot Source Target

要建立源和目标,请先使用下拉菜单选择要提取的数据表。

目标表

表目标

要设置目标表,可以通过目标表下拉列表选择现有表作为目标表,也可以单击绿色的 “+” 号新建一个表作为目标。

创建表

新建表时,您可以选择将其创建为视图或表。

视图:

视图的优点是步骤的执行时间明显短于使用表的情况。缺点是视图在表的详细信息模式下不便于探索数据。

表:

使用表作为目标时,步骤的执行时间会更长,但在详细信息模式下探索数据比使用视图快得多。

要转换为列标题的类别列 用于指定源表中要透视为行的列。 要透视为列值的值列 是包含源表中值的列。 值聚合选项 用于指定数据的聚合方式。

这两列都必须是 表数据选择 选项卡上步骤的输出列之一。否则保存会被拒绝,例如提示 The category column ‘month’ isn’t one of the step’s output columns.

表单还包含以下字段:

  • 保存各类别位置的列(column_order):保存各类别位置的源列。透视后的列按其升序排列,而不是按名称排序。该列既不用于分组,也不会写入。
  • 透视列名称模板(column_name_template):用此文本为每个透视列命名,其中 {value} 会替换为类别值,例如 {value}+Sum。

Table Pivot Data Selection

表数据选择选项卡用于将源数据表中的列映射到目标数据表。窗口左侧的所有源列会自动映射到窗口右侧所示的目标数据表。使用 检查源 菜单按钮,还有几种将列从源映射到目标的方式:

  • 填充两个映射表:将源数据表中的所有值传播到目标数据表。这是默认设置。
  • 仅填充源映射表:仅映射源数据表中的所有值。当源列结构发生变化而需要修改现有工作流时,这很有用。
  • 仅填充目标映射表:仅将所有值传播到目标数据表。

除了这些选项之外,每个选项还提供预览源数据的功能。

选择了源表但没有源列或目标列就保存时,会从源表填充空的一侧,效果与 填充两个映射表 相同。

如果源和目标列选项还不够,还可以通过几种不同的方式将其他列添加到目标数据表中:

  • 全部传播 会将所有源列插入目标数据表,无论它们是否已存在。
  • 传播所选项 仅插入所选的源列。
  • 在目标一侧右键单击并选择 插入行,可在当前所选行的正上方插入一行。
  • 在目标一侧右键单击并选择 追加行,可在目标数据表的底部(最右侧)插入一行。

要从目标数据表中删除列,请选择所需的列,然后右键单击并选择 删除。

要重新排列目标数据表中的列,请选择所需的列,然后右键单击并选择 移到顶部、上移、下移 或 移到底部。

要仅返回非重复的选项,请选择 非重复 菜单选项。这会为源中的每一列切换出一组复选框。只需选中相应列旁边的任意复选框,即可仅返回非重复的结果。

要聚合结果,请选择 汇总 菜单选项。这会为目标数据表中的每一列切换出一组下拉框。可使用以下汇总选项:

  • 分组依据(默认设置)
  • 求和
  • 最小值
  • 最大值
  • 第一个
  • 最后一个
  • 计数
  • 平均值
  • 中位数
  • 众数
  • 标准差
  • 方差
  • 乘积
  • 绝对值
  • 分位数
  • 偏度
  • 峰度
  • 平均绝对偏差
  • 累计求和
  • 累计最小值
  • 累计最大值
  • 累计乘积

为了获得最大的灵活性,源数据和目标数据都可以使用数据筛选器。对于较大的数据集,在源上筛选出行尤其有益,这样其余操作会在较小的数据集上执行。

可以使用任何有效的 Python 表达式来选取数据子集。更多详细信息和示例,请参阅表达式。

可以使用任何有效的 Python 表达式来选取数据子集。更多详细信息和示例,请参阅表达式。

要限制数据,只需选中 应用行切片器 框,然后指定以下内容:

  • 要跳过的起始行数: 要跳过的数据行数(计数不包括列标题行)
  • 结束行: 要包含的最后一行数据。这与直接计算末尾要丢弃的行数不同