You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ODI 12C中比较数值变量触发NumberFormatException错误求助

ODI 12C中比较数值变量触发NumberFormatException错误求助

看起来你在ODI 12C里使用Evaluate Variables功能比较两个数值变量时碰到了麻烦,这个NumberFormatException: Infinite or NaN错误大概率是因为变量里的取值出现了非有效数值的情况,咱们来一步步排查和解决:

  • 先核实变量的实际取值
    首要任务是确认COM.val1和COM.val2这两个变量的具体值,有没有可能其中一个(或者两个)的值是NaN(非数字)、无穷大,甚至是空值/无法转成数值的字符串?比如变量可能被赋值了除以0这类错误计算的结果,或者没有从数据源正确获取到数值,导致变成了非法数字。你可以在ODI里查看变量的历史取值记录,或者在执行比较逻辑前先打印输出变量的具体内容,确认数值的合法性。

  • 检查变量的数据类型配置
    确认这两个变量在ODI中的数据类型是不是确实设置为数值类型(比如NUMBER、INTEGER这类)。有时候如果变量类型被误设为字符串,当尝试做数值比较时,ODI在自动转换过程中就可能抛出这个错误,尤其是字符串内容无法转成有效数字的时候。

  • 调整表达式的写法,增加异常判断
    你当前用的表达式是COM.val1 <= #COM.val2,可以试试在表达式里提前过滤掉非有效数值的情况,用ODI的内置函数做检查:

    CASE WHEN IS_NUMBER(COM.val1) AND IS_NUMBER(COM.val2) AND COM.val1 IS NOT NULL AND COM.val2 IS NOT NULL THEN COM.val1 <= #COM.val2 ELSE FALSE END
    

    这样能避免因为变量值非法导致的转换错误。另外也注意下变量引用的语法是否正确,有些场景下可能需要用正确的占位符格式,确保ODI能正确解析变量值。

  • 排查变量的赋值逻辑
    看看这两个变量是怎么被赋值的,如果是通过SQL查询或者计算得到的,检查赋值的SQL语句有没有可能产生NaN或者无穷大的结果。比如有没有除法运算中除数为0的情况,或者聚合函数返回了异常值,这些都会导致变量拿到非有效数值,进而在比较时报错。

备注:内容来源于stack exchange,提问作者Yaser

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 13:53:14