Informatica中Unconnected Lookup执行成功但无数据读取问题咨询
非关联Lookup(Unconnected Lookup)无返回数据问题根因
根据你提供的会话日志信息,Lookup缓存分配正常、源限定符无报错、上游排序组件输出79行数据,下游Joiner未执行,说明问题出在Lookup无返回值导致数据流截断,具体可能原因如下:
- Lookup源过滤条件无匹配数据
Lookup配置的源过滤是作用在缓存加载阶段的,若过滤条件本身就把Lookup源表的所有数据全部筛除,缓存内无任何有效数据,无论传入的查找参数是什么都无法匹配到结果。可临时移除Lookup的源过滤条件重跑测试,若能正常返回即可定位该问题。 - 查找键数据类型隐式转换不匹配
你提到传入参数为bigint类型,需确认Lookup侧对应的查找键数据类型完全一致:- 若Lookup侧查找键为字符串类型,即使内容均为数字,bigint转字符串时可能出现前导零、首尾空格不匹配的问题
- 若Lookup侧查找键为短数值类型(如int),传入的bigint数值超出int上限时会被截断,导致匹配失败
可在Lookup调用前新增表达式转换,将传入参数强制转换为和Lookup查找键完全一致的数据类型后再传入。
- 非关联Lookup调用规则错误
非关联Lookup必须通过表达式调用才会触发执行,若未在其他转换中编写:LKP.lkp_D_CUST(输入参数)格式的调用语句,或调用时传入的参数顺序、数量和Lookup定义的输入端口不匹配,都会导致Lookup实际未执行,无任何输出。需核对调用表达式的参数配置和Lookup输入端口完全一致。 - NULL值匹配规则失效
Informatica Lookup默认不开启NULL=NULL匹配,若上游79行数据传入Lookup的参数全为NULL,会全部查找失败。可临时开启Lookup属性中的「NULL值匹配」选项重跑测试。 - 持久化缓存过期
若Lookup配置了持久化缓存,之前生成的旧缓存文件已经为空,Lookup不会重新拉取源表数据生成新缓存,会一直查找不到结果。可删除对应持久化缓存文件,或修改缓存配置为非持久化后重跑测试。
内容的提问来源于stack exchange,提问作者Jimbo
相关产品推荐
相关产品推荐

