捕获拒绝内部联接

时间:2014-04-26 21:22:03

标签: ssis inner-join talend

我正在使用SSIS。如何在SSIS中使用MERGE JOIN捕获内部联接的拒绝,就像在Talend Open Studio中使用tMap查找内部联接拒绝一样?

2 个答案:

答案 0 :(得分:1)

这可以在没有临时表的情况下在SSIS中解决。

我会创建一个数据流任务。在其中我将在上面提出的SQL解决方案中添加一个Excel Source,相当于Table2。然后我会添加一个Cache Transform来将这些数据存储在一个新的Cache中。

然后我会添加第二个数据流任务。在我内部将添加一个Excel Source,相当于Table1。然后我会添加一个Lookup转换并将其指向之前创建的Cache。我将此配置为将不匹配的行重定向到无匹配输出,并在列页面上匹配Id。

然后我会添加一个Destination对象,以便随时随地提供输出。这将连接到查找的无匹配输出。

答案 1 :(得分:0)

我没有使用SSIS,但您应该能够通过以下SQL查询获得所需内容:

SELECT t1.Id
FROM Table1 t1
    LEFT JOIN Table2 t2 ON t1.Id = t2.Id
WHERE t2.Id IS NULL

这将在两个表之间执行左外连接,选择左表中的所有内容(第一个命名,因此这里是Table1)以及它可以与Table2匹配的位置,但也保留任何不匹配的左表条目。然后,WHERE只会选择无法匹配的行,只留下INNER JOIN次拒绝。