Table Melt 步骤
用于将短而宽的数据表转换为长而窄的数据表。所选列会被转置,列名称转换为跨多行的值。
最容易理解的例子也许是将月份作为列标题列出的数据表:
对该数据表进行逆透视,会将所有月份列转换为行。
Jan/Feb 列折叠为 Month + Value 行,以您不改动的列为键。通过指定要转置的列和保持不变的列,这成为一个强大的工具。在其他 ETL 工具中完成这种转换可能需要多出十几个步骤。
源和目标参数
Section titled “源和目标参数”
要建立源和目标,请先从 源表 下拉菜单中选择要提取的数据表。
目标表

要设置目标表,可以通过目标表下拉列表选择现有表作为目标表,也可以单击绿色的 “+” 号新建一个表作为目标。
创建表
新建表时,您可以选择将其创建为视图或表。
视图:
视图的优点是步骤的执行时间明显短于使用表的情况。缺点是视图在表的详细信息模式下不便于探索数据。
表:
使用表作为目标时,步骤的执行时间会更长,但在详细信息模式下探索数据比使用视图快得多。
逆透视前的表数据选择
Section titled “逆透视前的表数据选择”
此部分与标准的表数据选择略有不同。它基本上用于指定逆透视操作要使用的列,包括 ID 列和变量/值列。
选择了源表但没有源列或目标列就保存时,会从源表填充空的一侧,效果与 填充两个映射表 相同。
为了获得最大的灵活性,源数据和目标数据都可以使用数据筛选器。对于较大的数据集,在源上筛选出行尤其有益,这样其余操作会在较小的数据集上执行。
选择源数据子集
Section titled “选择源数据子集”可以使用任何有效的 Python 表达式来选取数据子集。更多详细信息和示例,请参阅表达式。
对结果数据应用二级筛选器
Section titled “对结果数据应用二级筛选器”可以使用任何有效的 Python 表达式来选取数据子集。更多详细信息和示例,请参阅表达式。
最终数据表切片(限制)
Section titled “最终数据表切片(限制)”要限制数据,只需选中 应用行切片器 框,然后指定以下内容:
- 要跳过的起始行数: 要跳过的数据行数(计数不包括列标题行)
- 结束行: 要包含的最后一行数据。这与直接计算末尾要丢弃的行数不同

有一个 Guess Layout 按钮,可让 Analyze 先尝试指定 ID 列。默认情况下,所有文本(数据类型为 字符串)列都放在 键 部分。数值列默认不会放入 键,但可以根据模型的需要放在其中。
用作 ID(键)的列
Section titled “用作 ID(键)的列”ID 列是保持不变的列。这些列实际上会为变量/值组合的每个实例重复。对于月度表,这将导致 ID 列重复 12 次。
ID 列可以自动或手动添加。要自动添加列,请使用上述 Guess Layout 按钮。要手动添加其他列,请在该部分的任意位置右键单击,然后选择 插入行 或 追加行,分别在当前所选行之前添加一行或在末尾添加一行。然后,输入要用作 ID 的列名称。
要从 ID 中删除字段,只需右键单击并选择 删除。
逆透视结果列命名
Section titled “逆透视结果列命名”需要指定两个值。这两个值都将成为目标数据表中的列名称。
- 变量列名称: 如转换中所述,变量名称派生自当前的源列名称。实质上,就是指定一个列名称,用来表示最初由源数据表各列所表示的数据。
- 值列名称: 指定一个列名称,用来表示源数据表中所含的数据。通常这是一个数值单位:美元、磅、度、百分比等。
更多逆透视选项 包含以下字段:
- 同时逆透视步骤运行时表中的所有其他列(
melt_all_columns):同时逆透视步骤运行时源表拥有的、步骤未列出且不是 ID 列的每一列,顺序与表中的顺序一致。 - 位置列名称(
position_name):同时写入一个使用此名称的列,其中保存每行的值列在各值列中从 0 开始的位置。 - 类型列名称(
type_name):同时写入一个使用此名称的列,其中保存每行的值列的数据类型,例如integer、numeric、text、boolean、date或timestamp。
见上文。