连接器转换

2024 年 8 月 29 日 | 5 分钟阅读

Joiner 转换是一种活动且连接的转换。它提供了在 Informatica 中创建连接的选项。通过使用 Joiner 转换,创建的连接与数据库中的连接类似。

Joiner 转换用于连接两个异构源。Joiner 转换基于一个条件连接源,该条件匹配两个源之间的一个或多个列对。

两个输入管道包括一个主管道和一个明细管道。我们需要将 Joiner 转换的输出与另一个源连接起来,以连接两个以上的源。要在映射中连接 n 个源,我们需要 n-1 个 Joiner 转换。

在 Joiner 转换中,有两个用于连接的源,例如

  • 主源
  • 明细源

在 Joiner 转换的属性中,我们可以选择哪个数据源可以作为主源,哪个源可以作为明细源。

在执行期间,主源被缓存到内存中以供连接使用。因此,有必要选择记录较少的源作为主源。

配置 Joiner 转换

在 Informatica 中,我们配置 Joiner 转换的以下属性,例如

  • 区分大小写字符串比较: 当我们在字符串列上执行连接时,集成服务使用此选项。默认情况下,选中区分大小写字符串比较选项。
  • 缓存目录: 用于缓存主行或明细行的目录。默认目录路径是 $PMCacheDir。我们也可以覆盖此值。
  • 连接类型: 要执行的连接类型,例如主外部连接、明细外部连接、普通连接或全外部连接。
  • 跟踪级别: 用于跟踪会话日志文件中的跟踪级别。
  • Joiner 数据缓存大小: 它告诉数据缓存的大小。Auto 是数据缓存大小的默认值。
  • Joiner 索引缓存大小: 它告诉索引缓存的大小。Auto 是索引缓存大小的默认值。
  • 已排序输入: 当输入数据按排序顺序排列时,使用此选项。它提供了更好的性能。
  • 主排序顺序: 它给出了主源数据的排序顺序。如果主源数据按升序排序,则选择升序。如果我们选择升序,则必须启用“已排序输入”选项。Auto 是此选项的默认值。
  • 转换范围: 我们可以选择转换范围为“所有输入”或“行”。

连接类型

在 Informatica 中,可以使用 Joiner 转换创建以下连接,例如

  1. 主外部连接
    在主外部连接中,Joiner 会返回明细源中的所有记录,并且仅返回主源中匹配的行。
  2. 明细外部连接
    在明细外部连接中,Joiner 仅返回明细源中匹配的行,并返回主源中的所有行。
  3. 全外部连接。
    在全外部连接中,将返回来自两个源的所有记录。主外部连接和明细外部连接等效于 SQL 中的左外部连接。
  4. 普通连接
    在普通连接中,仅返回来自两个源的匹配行。

示例

在下面的示例中,我们将使用 Joiner 转换连接 emp 和 dept 表,步骤如下

步骤 1:使用以下脚本在数据库中创建一个新的目标表 EMP_DEPTNAME,并在 Informatica 目标中导入该表。

步骤 2:创建一个新的映射并导入源表“EMP”和“DEPT”以及上一步中创建的目标表。

步骤 3:从转换菜单中,选择创建选项,然后

  1. 选择 Joiner 转换
  2. 输入转换名称“jnr_emp_dept”
  3. 选择创建选项

步骤 4:将所有列从两个源限定符拖放到 Joiner 转换。

步骤 5:双击 Joiner 转换,然后在编辑转换窗口中

  1. 选择条件选项卡。
  2. 单击“添加新条件”图标。
  3. 在主列和明细列列表中选择 deptno。

步骤 6:然后在同一窗口中

  1. 选择属性选项卡。
  2. 选择普通连接作为连接类型。
  3. 单击“确定”按钮。

为了进行性能优化,我们将主源分配给记录较少的源表管道。要执行此任务

步骤 7:双击 Joiner 转换以打开编辑属性窗口,然后

  1. 选择端口选项卡。
  2. 选择要作为主源的特定源的任何列。
  3. 单击“确定”按钮。

步骤 8:将 Joiner 转换中的相关列链接到目标表。

现在保存映射并在为其创建会话和工作流后执行它。将使用 Informatica Joiner 创建连接,并将从这两个表中提取相关详细信息。

已排序输入

当主源和明细源都根据连接条件中指定的端口排序时,请在 Joiner 属性选项卡中使用已排序输入选项。

通过使用已排序输入选项,我们可以提高性能,因为集成服务通过最小化磁盘 IO 的数量来执行连接。当我们处理大型数据集时,它提供了出色的性能。

以下是配置已排序输入选项的几个步骤,例如

  • 使用源限定符转换或排序器转换对主源和明细源进行排序。
  • 按升序或降序对要用于连接条件的端口对两个源进行排序。
  • 在 Joiner 转换属性选项卡中指定已排序输入选项。

阻塞转换

Joiner 转换称为阻塞转换。集成服务会根据是否为 Joiner 转换配置了已排序输入来阻塞和取消阻塞源数据。

未排序 Joiner 转换

对于未排序的 Joiner 转换,集成服务首先读取所有主行,然后读取明细行。

集成服务会阻止明细源,同时缓存所有主行。读取所有主行后,它将取消阻止明细源并理解明细行。

已排序 Joiner 转换

对于已排序的 Joiner 转换,阻塞逻辑可能也可能不适用。如果集成服务可以在不阻塞目标加载顺序组中的所有源的情况下执行此操作,则它使用阻塞逻辑。否则,它不使用阻塞逻辑。

如何提高 Joiner 转换性能?

以下是提高 Joiner 转换性能的一些重要点,例如

  • 如果可能,请在数据库中执行连接。在数据库中执行连接比在会话中执行连接更快。
  • 我们可以通过在 Joiner 转换属性选项卡中配置“已排序输入”选项来提高会话性能。
  • 将行数较少且重复键较少的源指定为主源,并将其他源指定为明细源。

Joiner 转换的局限性

以下是 Joiner 转换的以下局限性,例如

  • 当输入管道包含更新策略转换时,我们不能使用 Joiner 转换。
  • 我们不能将序列生成器转换直接连接到 Joiner 转换。

下一节排名转换