我有一个包来组合来自多个数据库的数据。我试图将两个数据集放在一起,以便将它们写入一个表。
有一个 commonSSIS_ID (DT_I4)
用于匹配行和我想引入同一数据集的其他列也是DT_I4
.
这是流程中出现问题的部分;正如您所看到的,来自两个路径的数据SSIS_ID
在进入合并之前已排序:
这是 Merge 组件的配置。目的是将相同的CRO_CompanyID
和放在一行中:Sponsor_CompanyID
SSIS_ID
然而,合并的输出就像一个UNION
; 有 1,532 行从左侧进入,4,303 行从右侧进入,在输出端产生 5,835 行。
输出上的数据查看器显示了问题:
我可以通过以不同的方式处理数据来解决这个问题,但我真的很烦我不能让它工作。
关于我做错了什么或没有做些什么以便能够以这种方式组合数据有什么建议吗?
我正在为 SQL Server 2008 使用 SSIS,但没有那个版本的标签。
问题是您使用了错误的转换。
“合并转换类似于联合所有转换。” - MSDN 合并转换
您可以使用Merge Join 转换并指定您的联接类型,然后选择用于每个输出的输入列。
然后你可以得到你想要的输出:
如果您的源是 RDBMS 系统,则最好
ORDER BY
使用排序任务而不是使用排序任务,因为它是一个阻塞组件并且数据库可能会更快地执行排序。