将不匹配的查找行插入表后如何继续该过程?

Posted

技术标签:

【中文标题】将不匹配的查找行插入表后如何继续该过程?【英文标题】:How do I continue the process after inserting non-matching lookup rows into a table? 【发布时间】:2012-10-27 06:40:54 【问题描述】:

在数据流中,是否可以进行查找、插入不匹配的行、重新查找,然后继续使用完整(原始)数据集?

在插入的行转到 OLE DB Destination 后,我看不到您如何获取/重新使用它们,我也看不到 Multicast 可以等到查找插入分支完成(然后联合他们都回来了)。

如果不能在数据流中完成,我是否必须在之前的数据流任务中重复所有过滤逻辑,只是为了先进行查找插入?

这可能是一个明显的/已经回答的问题,但搜索后我找不到太多。

【问题讨论】:

我不明白。您有第一个查询的数据,也有要插入的数据。为什么不将它们组合起来单独使用呢?将插入数据多播到 OLEDB 目标和联合目标。将原始数据发送到这个联合(并将它们多播到您想要的任何其他地方),现在您就拥有了整个数据集。 我不需要等到插入完成后才能重新运行查找然后恢复正常路径吗? 【参考方案1】:

这在单个数据流中是不可能的。如果你用谷歌搜索得够多,周围有各种各样的“解决方案”,但它们忽略了行在缓冲区/批处理中沿着数据流传输并并行处理的架构现实。

因此,您有多个“新”行到达 2 个相邻缓冲区。无法确保在缓冲区 2 命中上游查找之前,您对缓冲区 1 的“新”行的下游处理已经完成。这将导致多个“新”行被插入到相同键的查找目标表中。

您需要有一个上游数据流任务来执行所有必需的查找插入。这将是一个在运行时整体上更有效的解决方案,因为您的查找插入可以使用快速加载和表锁定,并且您的下游查找可以是完整缓存。

【讨论】:

谢谢。因此,也许现在的问题需要关注上游数据流和下游数据流中的“我如何在查找之前重用相同的逻辑”。也许是一个执行相同步骤的可重用包,但我还没有看到可行的路径。 是的,“重用逻辑”会很好但很现实——这就是 SSIS。也许您可以将 SQL 代码移动到变量中,并将查找移动到构建查找缓存的前面的数据流任务中,但这可能是为了重用。

以上是关于将不匹配的查找行插入表后如何继续该过程?的主要内容,如果未能解决你的问题,请参考以下文章

Pandas - 查找和索引与行序列模式匹配的行

如果任何列与另一个表中的匹配行不同,如何插入行

mysql 如何查找同一表中两行之间的差异并列出不匹配的记录? mysql在表中查找不匹配的行

查找具有部分匹配的行

如果匹配已经存在,如何将行号附加到行插入?

如何在两个excel表中查找相同数据