微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SSIS查找转换无匹配输出仅填充为空

如何解决SSIS查找转换无匹配输出仅填充为空

我正在尝试使用查找转换,但是似乎无法从中获得所需的功能我有两个结构完全相同的表

临时表(输入):较小的表,但可能具有其他表中不存在的条目 参考查找表:较大的表,可能没有与“临时表”相同的条目。

我正在尝试将“临时表”的条目与“参考查找表”的条目进行比较。临时表中存在的所有内容,但查找表中不存在的任何内容,都应输出到单独的表中(无匹配输出)。

enter image description here

这是一个非常简单的数据流,但似乎无法正确完成查找。它将找到“不匹配”行,但是“不匹配”表的每一列都填充有空值。我试图弄清楚为什么数据会丢失其值?

No Match Found

DB Nulls

如何设置查找:

Lookup

解决方法

临时表中的数据是驱动数据流的因素。流出了151行。

您的查找将根据您指定的任何条件进行匹配,并且您已经确定如果不匹配,我希望将不匹配的数据推送到表中。

由于查找任务无法将列添加到不匹配的输出路径,因此这意味着您的源(临时表)全面启动为NULL。

将数据查看器/ data tap拖放到查找和目标之间的数据流上,然后将该数据与源进行比较。我怀疑您会发现填充Temp表的进程有问题。

在“查找转换”中,在“列”选项卡中,您确定要使用参考表中的值替换源中的值。

在您无法与之匹敌之前,哪个作品都很棒。在这种情况下,无论组件是否匹配,该组件都会进行非直观的操作(即使对我来说,使用它已经有15年以上的经验)。

源查询

SELECT 21 AS tipID,NULL AS tipYear
UNION ALL SELECT 22,2020
UNION ALL SELECT 64263810,2020

这会将三行添加到我的数据流中,第一行没有tipYear,接下来的两行则是2020年。下图中的标记为1

查询查询

SELECT 
*
FROM
(
    values (20,1111),(21,2021),(22,2022)
)D(tipID,tipYear)

此参考数据将为所有比赛(21和22)提供年份。在匹配的路径中,我们将看到21个值,而22个将更新其年份。图片中的图章2

但是对于ID 64263810,将找不到匹配项,我们将看到2020的初始值被匹配的行NULL代替。邮票3

enter image description here

经验教训。如果您需要使用参考表中的数据但输出路径不匹配,请不要在查找转换中替换列(除非您打算清除数据)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。