SSIS 不存在于一个数据流中

SSIS Not Exists In One Data Flow

我正在尝试在 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 等在所有查询中都相同。

我想 return 数据集 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 插入 table,然后在后续的 NOT EXISTS 或类似查询中使用此 table 来获取丢失的信息,然后将它们联合在一起。理想情况下,尽管我想使用双组播在一次扫描中完成此操作,其中一侧进入查找不匹配,另一侧直接进入目的地 table。

不幸的是,查找和不匹配输出 returns 'wrong' 缺失数据,即它 returns

5
6
7
8

而不是

10
11
12

这是因为查找(数据集 B)和源数据(数据集 A)在 'wrong way' 左右。我不想将数据集 A 重写为查找查询,那么是否有另一种方法可以使用不同的转换或其他方法来解决这个问题?

我已经尝试过缓存转换,但它似乎无法在与查找转换相同的数据流中工作,因为存在 read/write 争用。

谢谢, 有钱

听起来您想要一个 "Fuller Outer Join" 类型的 "Merge" 组件,然后在事后手动合并。如果我误解了你,你总是可以在合并之后添加一个条件拆分,以过滤 A 是否为 null,如果 B 是否为 null 等

"Merge Columns" 的示例是使用以下表达式创建重复的 "Id":"ISNULL(Id_A) ? Id_B : Id_A"

"Full Outer Join - Merge" 的示例: