DataStage Merge 阶段是否只是与多个其他源的左外连接?

Is DataStage Merge stage just a left outer join with multiple other sources?

DataStage Merge 阶段似乎只是一个左外连接,Master 是 "left" 端和驱动输入。其他输入尽可能与主输入连接。

仅此而已吗?我错过了什么?

存在差异 - 您不能真正将其与左外部联接进行比较。 这些是 MERGE 阶段的一些特征:

  • 它可以有一个拒绝 link - 准确地说它可以有一个每个次级 link 作为不匹配的次级 link 的数据被拒绝(这已经是一个巨大的差异加入)

  • 来自主控link的数据可以被删除(或忽略)

  • master 上的数据 link 需要重复免费,因为数据(来自次级 links)被消耗(破坏性读取)

请参阅 documentation 以获取更多详细信息 - 但我认为很明显存在重要差异。

合并阶段是一个处理阶段。它可以有任意数量的输入 links,单个输出 link,以及与更新输入 links 相同数量的拒绝 links。 Merge 阶段是根据键列的值连接表的三个阶段之一。另外两个是:

 加入舞台

 查找阶段

三个阶段的区别主要在于它们使用的内存、对具有不匹配键的行的处理以及它们对输入数据的要求(例如是否排序)。 合并阶段将主数据集与一个或多个更新数据集组合在一起。合并主数据集和更新数据集中记录的列,以便输出记录包含主记录中的所有列以及每个更新记录中所需的任何其他列。仅当主记录和更新记录都具有您指定的合并键列的相同值时,它们才会被合并。合并键列是存在于主记录和更新记录中的一个或多个列。与 Join 阶段和 Lookup 阶段不同,Merge 阶段允许您指定多个拒绝 links.

Merge Stage

merge 阶段有两个主要属性 1 .drop = 表示内部连接 ​​- 它将发送不匹配的记录以拒绝 link 和 2. keep = 表示左外连接它将不匹配的记录保留在目标