Merge组件的作用和Union All很相似,就是把两个输入源的结果集合并成一个。但是不同之处在于:
1)Merge输入的结果集需要先经过排序(这点表示怀疑)
2)Merge对于输入的两个结果集的数据类型有明确是要求,必须是相同,比如A结果集的某个字段是int,那B结果集的对应字段也必须是int。但是对于数据长度,例如varchar,到时没有要求必须都是一样的长度。但是就是不可以一个是varchar,一个是nvarchar。
3)Union all支持超过两个的输入结果集而Merge只支持两个。
这样看的话,似乎用union all就行了。
上面提到的第一点说数据集必须先记过排序,经过实验发现其实不然。两张表作为输入,虽然Merge要求你要把IsSorted改成True,然后设置Output Columns中的某个或者某些栏位的SortKeyPosition值,但是它本身又不是说设置了这两个值就等于在run-time的时候帮我进行数据集排序,因为观察了输入表中的数据插入顺序,还是A表+B表的那种顺序,而我在SortKeyPosition值的设置是对另外的栏位进行排序设置,如果说真的帮我排了序不会出现说A表+B表的这样插入顺序。而结果是package跑成功了。所以说Merge输入的结果集需要先经过排序这点前提其实不然。
时间: 2024-12-18 04:43:16