在我的软件包中,当我基于FULL Cache Mode查找一个值时,即使查询表和源中的数据类型和值相同,它也不会出现匹配输出。也没有重复的行。 当我把'没有缓存'模式,它正确匹配。有什么建议为什么会这样?
答案 0 :(得分:1)
完整缓存
查找的默认缓存模式是完全缓存。在这种模式下, 在数据的预执行阶段期间查询数据库一次 流。整个参考集被拉入内存。 [...] 一件事 要注意的是,查找不会将内存交换到磁盘,所以你的 如果内存不足,数据流将会失败。
(source)
这意味着所有比较操作都由SSIS引擎完成,该引擎区分大小写且对尾随空格敏感。这意味着'abc' <> 'Abc' | 'ABC'
,这也意味着'abc' <> 'abc '
(abs加上字符串末尾的一个空格)。
由于上述原因,如果源值为'abc'
且参考数据为'ABC' or 'ABC '
=&gt; No Match
。
无缓存
顾名思义,在此模式下,查找转换不会 维护查找缓存(实际上,不完全正确 - 我们保留最后一个 匹配,因为已经分配了内存)。多数情况 在这种情况下,这意味着您将每次都在访问数据库 行。
(source)
'abc' = 'Abc' | 'ABC'
)并且'abc' = 'abc ' | 'Abc ' | 'Abc '
)由于上述原因,如果源值为'abc'
且参考数据为'ABC' or 'ABC '
=&gt; Match
。
答案 1 :(得分:0)
如果在大小写或数据类型或数据长度不匹配时,Lookup会匹配精确值,它会告诉不匹配。
检查输入和查找数据的数据类型,长度,大小写。