跳转到内容

Table Project to Project Copy 步骤

将表从一个项目复制到另一个项目。可用于在项目之间拉取共享的参考表、已发布的结果集或基于维度的查找表,而无需先导出为文件再导回。

两侧都需明确指定——源项目和源表,以及目标项目和目标表。目标项目默认为当前项目,但可以是任何项目,因此步骤可以复制到本项目、从本项目复制出去,或在另外两个项目之间复制。目标表如不存在则会创建,并且必须是表而不是视图。

一次复制最多需要两个数据共享:

  • 读取,从源项目到目标项目,这样源的数据只会落在源共享给的地方。打开源项目的主页选项卡,在数据共享管理下单击新建数据共享,选择目标项目,在允许的操作下勾选读取,然后单击添加数据共享。
  • 写入,从目标项目到本项目(即工作流所在的、负责写入的项目)——当目标是另一个项目时需要。打开目标项目的主页选项卡,在数据共享管理下单击新建数据共享,选择本项目,在允许的操作下勾选写入,然后单击添加数据共享。

因此,复制到本项目只需要读取共享,而在同一项目内复制则两者都不需要。请参阅在项目之间共享数据。

缺少所需的共享时,保存步骤会被拒绝,运行也会失败,并给出指明每个需要添加的共享的消息——例如 Project ‘Sales’ can’t write to project ‘Finance’: in project ‘Finance’, under Data Sharing Management, add a data share for ‘Sales’ that allows Write. 被拒绝的运行会保持目标项目原样,不会创建目标表。以变量形式给出的项目会在步骤运行时检查。

该步骤以本项目自身的身份运行,因此无论由谁启动,运行都通过这些共享进行。

  • 源项目——要从中复制的项目。
  • 源表——要复制的表,从源项目中选择。
  • 目标项目——要复制到的项目。默认为当前项目。
  • 目标表——要写入的表,从目标项目中选择。选择不同的目标项目会清除您从旧项目中选择的表;以名称或路径给出的表会被保留,并在新项目中查找。
  • 追加到现有数据——勾选后,将复制的行添加到目标表已有的内容之后。不勾选则用源的行替换该表的行。

已保存但您看不到或已被删除的项目会标记为 (missing) 显示,而不会被替换为其他项目。

数据映射器配置

Table Data Mapper

数据映射器用于将源数据中的列映射到目标数据表。

检查并填充映射器

使用 检查源 菜单按钮可以通过更多方式将源中的列映射到目标:

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

如果上述源列和目标列选项仍不够用,还可以通过以下几种方式向目标数据表添加其他列:

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

删除列

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

不再列出的源列

目标行可能指定了某个 源列,而源数据表已不再列出该列,例如在重新检查源之后。步骤绝不会自动移除这样的行,而是将列名显示为红色,并在前面加上 ⚠ 警告标志;将鼠标悬停在其上,会提示该列不在源列中。在包含多个表的步骤(如联合)中,每个表都会分别对照其自身的源列进行检查。

带有 常量、表达式 或 计数(含空值) 汇总的行不会被标记,因为步骤不会读取其源列。当源数据表没有列出任何列时(例如首次检查源之前),也不会标记任何内容。

保存仍含有已标记行的步骤时,会出现 发现过时列 对话框,按其所在的选项卡或表列出这些行,并提供三个选项:

  • 全部移除并保存 — 移除已标记的行,然后保存。
  • 仍然保存 — 按现状保存步骤。
  • 取消 — 返回步骤,不保存。

要保留某一行并清除其警告,请将该列重新添加到源数据表,或选择源数据表中列出的某一列。

列数据类型

每个目标列都带有一个 类型。从源传播而来的列沿用源列的类型;手动添加的行起初为 文本,需要设置 类型 来指明其实际类型 — 打算求和或排序的列需要使用数值或日期类型,因为文本会按文本方式排序和求和。

保存时没有任何类型的列,步骤仍可运行。类型会在步骤启动时根据该列所读取的源列确定。如果无处可读,则视为文本:提取 SQL 步骤的列来自您编写的查询,而不是映射的源;如果多个源中存在同名列但类型不一致,则使用文本,而不是随意选择其中一种 — 猜错会产生仓库可能拒绝的转换,而任何类型都可以转换为文本。

自行设置 类型 仍然是指明列应为何种类型的方式。不设置则意味着接受源列恰好具有的类型。

更改列顺序

要重新排列目标数据表中的列,请选择所需的列。可以使用以下任一方式:

  • 批量移动箭头:从右上角的箭头中选择所需的移动选项
  • 上下文菜单:右键单击并选择 移到顶部、上移、下移 或 移到底部。

仅返回非重复记录

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

视情况而定,您可能需要考虑改用汇总。

非重复处理会保留找到的第一条唯一记录,并丢弃其余记录。如果运行之间的一致性很重要,可能需要对数据进行排序。

聚合与分组

要聚合结果,请选择 汇总 菜单选项。这会为目标数据表中的每一列切换显示一组选择框。请为每一列选择合适的汇总方法。

当 检查源 填充列时,如果数值列的名称读起来像标识符(例如 id、customer_id、Order No 或 CustomerKey),或者其所在表将其设为键,或者联接将其用作键,则该列起初为 分组依据,而不是 求和。

  • 分组依据
  • 求和
  • 最小值
  • 最大值
  • 第一个
  • 最后一个
  • 计数
  • 计数(含空值)
  • 平均值
  • 标准差
  • 样本标准差
  • 总体标准差
  • 方差
  • 样本方差
  • 总体方差
  • 高级非分组

有关表达式、清理和常量等高级数据映射器用法,请参阅高级数据映射器用法