【发布时间】:2015-11-26 02:28:04
【问题描述】:
我正在尝试在 SSIS 中实现以下目标:
联合所有 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 与数据集 B 联合(UNION ALL),其中数据集 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 或类似查询中使用该表来获取丢失的信息,然后将它们联合在一起。理想情况下,虽然我想在一次扫描中使用双组播进行此操作,一侧进入查找不匹配,另一侧直接进入目标表。
不幸的是,查找和无匹配输出返回“错误”的缺失数据,即它返回
5
6
7
8
而不是
10
11
12
这是因为查找(数据集 B)和源数据(数据集 A)是“错误的方式”。我不想将数据集 A 重写为 Lookup 查询,那么还有其他方法可以使用不同的转换或其他方法吗?
我已经尝试过缓存转换,但它似乎无法在与查找转换相同的数据流中工作,因为存在读/写争用。
谢谢, 丰富。
【问题讨论】:
标签: ssis match lookup not-exists