我正在尝试在SSIS中实现以下目标:
Union所有6个单独的SQL查询(OLE DB源)(调用此数据集A) 数据集A包含
id Col A Col B......
1
2
3
4
5
6
7
8
我有另一个包含
的OLE DB源SQL查询(数据集B)id Col A Col B .......
1
2
3
4
10
11
12
所有查询中的所有列Col A,Col B等都相同。
我想返回数据集A联合(UNION ALL)与数据集B,其中数据集B中的ID与数据集A中的ID不匹配。即
id Col A Col B......
1
2
3
4
5
6
7
8
10
11
12
在执行UNION之前,还需要对数据集B进行一些额外的工作来填充列中的NULL值。
通过将数据集A插入到表中,然后在后续的NOT EXISTS或类似查询中使用此表来获取缺少的信息,然后将UNIONing放在一起,我可以非常轻松地实现此目的。理想情况下,虽然我想在一次扫描中使用双组播进行此操作,一方进入查找无匹配,另一方直接进入目标表。
不幸的是,Lookup和No Match输出返回'错误'的缺失数据,即返回
5
6
7
8
而不是
10
11
12
这是因为查找(数据集B)和源数据(数据集A)是“错误的方式”。我不想将数据集A重写为Lookup查询,那么使用不同的转换或其他方法是否有另一种解决方法?
我已尝试使用缓存转换,但它似乎与查找转换在同一数据流中工作,因为存在读/写争用。
谢谢, 丰富。