SSIS 中的合并联接转换

SSIS 中的合并联接转换执行 SQL JOIN,例如内连接、左外连接全外连接 和右外连接(通过交换表间接实现),在 Integration Services 中。合并联接转换对于将数据加载到数据仓库的维度表中非常有用。

注意:SSIS 中的合并联接转换仅适用于排序后的数据。因此,在此之前必须使用排序转换。请参阅排序文章以了解如何在源数据上执行排序操作。

SSIS 中的合并联接转换示例

在本文中,我们将使用 SSIS 中的合并联接转换在两个 SQL 表上执行内连接。在创建包之前,请查看我们将执行内连接的两个源表。

此页面涵盖内连接,有关其余 SSIS 合并联接转换选项,请使用以下超链接。

  1. 使用合并联接进行左外连接
  2. 使用合并联接进行右外连接
  3. 完全外联接

数据库中的 Employees 表是

Left Table 1

数据库中的 Department 表是

Right Table

步骤 1:将数据流任务从工具箱拖放到控制流区域,并将其重命名为“使用合并联接转换执行 SSIS 内连接”。

Inner Join Using Merge Join Transformation in SSIS 1

双击合并联接转换数据流任务将带我们进入数据流区域。

步骤 2:从工具箱将两个 OLE DB 源拖放到数据流区域。然后双击数据流区域中的第一个 OLE DB 源,这将打开连接管理器设置并提供选择包含源数据的表的选项。有关更多转换 >> 点击此处

Select Database and Table 3

我们从上面的截图中的数据库选择了 [Employees] 表。

步骤 3:单击列选项卡以验证列。在此选项卡中,我们可以取消勾选不需要的列。

Check the Available Columns 4

步骤 4:双击第二个 OLE DB 源以配置第二个表,以使用合并转换执行 SSIS 内连接。在这里,我们从数据库中选择 [Department] 表。

Preview Query Result 5

步骤 5:重复步骤 3

OLE DB Source Editor 6

排序转换

步骤 6:将两个排序转换从工具箱拖放到数据流区域,并将 OLE DB 源的输出箭头连接到排序转换。我们需要在 SSIS 合并联接转换之前执行此操作。

Merge Join Transformation in SSIS 7

步骤 7:双击排序转换进行配置。选中要排序的列,并且不要忘记传递剩余的列。如果您未能选择传递,它们将不会出现在输出列中。

源数据显示 DepartID 是 Employees 和 Department 表之间的连接键。因此,我们按 DepartID 升序对 Employees 表进行排序。

Merge Join Transformation in SSIS 8

双击 Sort Transformation1 并按 id 列升序对 Department 表进行排序。

Merge Join Transformation in SSIS Inner 9

SSIS 合并联接转换配置

步骤 8:现在将合并联接转换拖放到数据流区域,以在排序后的表上执行内连接。

当您将排序转换的输出箭头拖到合并联接转换时,将出现一个输入输出选择窗口,用于选择它是合并左输入还是右输入,如下面的截图所示。

Inner using Merge Join Transformation in SSIS 10

这里我们为 Employees 表选择了 Merge Join Left Input。单击“确定”并拖放 Sort Transformation 1 的输出箭头。这里,右输入将由智能自动选择。

步骤 9:双击 SSIS 合并联接转换,这将打开编辑器进行配置。

Join Type 提供了一个下拉列表,用于选择要在源数据上执行的类型(例如 Inner、Left Outer 和 Full Outer)。在此示例中,我们执行的是内连接。这就是为什么我们从 Join Type 选项中选择了 Inner。

Inner Join Using Merge Join Transformation in SSIS 11

从源数据中可以看出,Employees 和 Department 表都使用 DepartID 和 id 列进行连接。通过拖动箭头选择它们作为键。

现在,通过勾选列名来选择要发送到目标表的列(传递列)。

Inner Join Using Merge Join Transformation in SSIS 12

从上面的截图可以看出,我们选择了 [First Name]、[Last Name] 和 [Department Name] 列作为输出列。这意味着 SSIS 内连接将生成 [First Name]、[Last Name] 和 [Department Name] 作为输出列,其中 DepartID 精确等于任何 id 列数据。

提示:您在此处选择的任何列都将仅传输到目标表。因此,如果您不想要任何列,请取消勾选该列。

步骤 10:将 OLE DB 目标拖放到数据流区域。接下来,双击它以配置目标服务器和存储输出的表。

Choose Destination Table

在这里,我们选择了数据库和 [Inner Join Using Merge Join Transformation] 作为目标表。

步骤 11:单击列选项卡以检查输入列是否与目标列匹配。如果不匹配,请将相应的列分配给目标列。

Mapping Inout and Destination Columns 12

我们已完成了在包中设计“使用合并联接转换执行内连接”。接下来,让我们执行包。

Inner Join Using Merge Join Transformation in SSIS 13

现在,让我们打开 Management Studio,并从表中的 SSIS Inner using Merge Join Transformation 中选择列。

Destination Table Output

评论已关闭。