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

问题描述 投票:0回答:3

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

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

以下是截图: -

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

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

Informatica_Debugger

Informatica详细模式日志: -

Verbose_Mode Logs

查询表数据: - Lookup_Table

我在SQL中使用join时的结果: - SQL Join Result

似乎我需要做一些微小的改变,但我无法弄清楚它会是什么。

lookup informatica informatica-powercenter
3个回答
0
投票

检查查找中的onerosity端口的查找覆盖查询/数据类型。


0
投票

该问题已解决,如果是因为其中一个LKP值是LKP表中的CHAR属性而不是VARCHAR。

我从社区成员那里得到以下评论来解决这个问题。

“差异很微妙但意味着:

CHAR值始终用空格填充到其定义的最大长度。

现在,当您运行SQL查询时(如您的示例中所示),那么(在您的情况下)SQL Server的SQL解释器将自动“填充”太短到正确定义长度的值,这意味着手动运行的SQL查询将返回你要找的东西。

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

如果您现在喂食,例如LKP转换中的查找值'123',底层查找表具有此属性的CHAR(5),然后LKP缓存将在其索引缓存中包含字符串'123'。但是你要求查找值为'123'。显然'123'和'123'不匹配,这意味着你没有得到任何结果。 “


0
投票

2种方法来解决这个问题:

  1. 修剪--ltrim(rtrim(value_here))工作流和数据库中的值,以便它们匹配
  2. 您必须将空间填充到映射值和查找值,以便它可以匹配。
© www.soinside.com 2019 - 2024. All rights reserved.