SSIS 中的合并联接转换执行 SQL JOIN,例如内连接、左外连接、全外连接 和右外连接(通过交换表间接实现),在 Integration Services 中。合并联接转换对于将数据加载到数据仓库的维度表中非常有用。
注意:SSIS 中的合并联接转换仅适用于排序后的数据。因此,在此之前必须使用排序转换。请参阅排序文章以了解如何在源数据上执行排序操作。
SSIS 中的合并联接转换示例
在本文中,我们将使用 SSIS 中的合并联接转换在两个 SQL 表上执行内连接。在创建包之前,请查看我们将执行内连接的两个源表。
此页面涵盖内连接,有关其余 SSIS 合并联接转换选项,请使用以下超链接。
数据库中的 Employees 表是

数据库中的 Department 表是

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

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

我们从上面的截图中的数据库选择了 [Employees] 表。
步骤 3:单击列选项卡以验证列。在此选项卡中,我们可以取消勾选不需要的列。

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

步骤 5:重复步骤 3

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

步骤 7:双击排序转换进行配置。选中要排序的列,并且不要忘记传递剩余的列。如果您未能选择传递,它们将不会出现在输出列中。
源数据显示 DepartID 是 Employees 和 Department 表之间的连接键。因此,我们按 DepartID 升序对 Employees 表进行排序。

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

SSIS 合并联接转换配置
步骤 8:现在将合并联接转换拖放到数据流区域,以在排序后的表上执行内连接。
当您将排序转换的输出箭头拖到合并联接转换时,将出现一个输入输出选择窗口,用于选择它是合并左输入还是右输入,如下面的截图所示。

这里我们为 Employees 表选择了 Merge Join Left Input。单击“确定”并拖放 Sort Transformation 1 的输出箭头。这里,右输入将由智能自动选择。
步骤 9:双击 SSIS 合并联接转换,这将打开编辑器进行配置。
Join Type 提供了一个下拉列表,用于选择要在源数据上执行的类型(例如 Inner、Left Outer 和 Full Outer)。在此示例中,我们执行的是内连接。这就是为什么我们从 Join Type 选项中选择了 Inner。

从源数据中可以看出,Employees 和 Department 表都使用 DepartID 和 id 列进行连接。通过拖动箭头选择它们作为键。
现在,通过勾选列名来选择要发送到目标表的列(传递列)。

从上面的截图可以看出,我们选择了 [First Name]、[Last Name] 和 [Department Name] 列作为输出列。这意味着 SSIS 内连接将生成 [First Name]、[Last Name] 和 [Department Name] 作为输出列,其中 DepartID 精确等于任何 id 列数据。
提示:您在此处选择的任何列都将仅传输到目标表。因此,如果您不想要任何列,请取消勾选该列。
步骤 10:将 OLE DB 目标拖放到数据流区域。接下来,双击它以配置目标服务器和存储输出的表。

在这里,我们选择了数据库和 [Inner Join Using Merge Join Transformation] 作为目标表。
步骤 11:单击列选项卡以检查输入列是否与目标列匹配。如果不匹配,请将相应的列分配给目标列。

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

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

评论已关闭。