当所有条件都为真时,为什么Informatica查找返回NULL?

时间:2019-04-12 19:11:54

标签: lookup informatica informatica-powercenter

找到匹配条件时,我正在使用连接的查询来获取值。但是,当数据库中存在非NULL值时,查找将返回NULL值。

我已在Informatica Debugger和数据库中验证所有条件都匹配,并且存在相应的值。

以下是屏幕截图:-

调试器:-(我在查找端口上注意到一个红色的感叹号,我不确定它表示什么)

Onerosity标签是查找值。端口2到7中使用的查找条件

Informatica_Debugger

Informatica详细模式日志:-

Verbose_Mode Logs

查询表数据:- Lookup_Table

在SQL中使用联接时的结果:- SQL Join Result

似乎我需要进行一些细微的更改,但我无法弄清楚它会是什么。

3 个答案:

答案 0 :(得分:0)

检查查找中onerosity端口的查找替代查询/数据类型。

答案 1 :(得分:0)

此问题已解决,并且是否是因为LKP值之一是LKP表中的CHAR属性而不是VARCHAR。

我得到社区成员的以下评论,以解决此问题。

” 差异虽然微妙,但却意味着:

始终将CHAR值填充到其定义的最大长度,并带有空格。

现在,当您运行SQL查询时(如您的示例),则SQL Server(以您的情况为例)的SQL解释器将自动“填充”太短到正确定义长度的值,这意味着SQL查询手动运行将返回您要查找的内容。

但是,LKP转换运行SELECT查询以从数据库中获取所有查找记录。并且在这种情况下,所有CHAR属性都被填充为其定义的最大长度。

如果您现在要投放例如LKP转换中的查找值'123',并且基础查找表对此属性具有CHAR(5),则LKP高速缓存将在其索引高速缓存中包含字符串'123'。但是您要查询的值是“ 123”。显然'123'和'123'不匹配,这意味着您没有结果。 “

答案 2 :(得分:0)

解决此问题的两种方法:

  1. 修剪--ltrim(rtrim(value_here))您的工作流和数据库中的值,以便它们可以匹配
  2. 您必须在空间上同时填充映射值和查找值,以便它可以匹配。