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

ODI 12如何存储值到变量/过程选项并跨步骤传递

ODI过程步骤间传递Jython变量的解决方案

方法一:通过过程选项(Procedure Options)传递(推荐同过程内步骤传递)

  • 第一步:给当前ODI过程添加过程选项

    1. 打开你的ODI过程,切换到「选项」标签页
    2. 添加一个选项,命名为P_VERSION,类型选择「String」,方向设为「OUT」(对应Version_working_0_0步骤的输出)
    3. 同样的选项,在test_version_0_0步骤的选项配置里,方向设为「IN」(作为输入)
  • 第二步:在Version_working_0_0步骤的Jython脚本中设置选项值
    假设你已经从目标表查询得到VERSION变量,直接调用odiRef.setOption传递值:

    # 示例:从目标表查询VERSION的逻辑(替换成你的实际代码)
    # 这里省略数据库连接和查询逻辑,直接赋值示例值
    VERSION = "1.2.3"
    
    # 传递值到过程选项
    odiRef.setOption("P_VERSION", VERSION)
    
  • 第三步:在test_version_0_0步骤的Jython脚本中获取选项值

    # 获取前一步传递的VERSION值
    VERSION_FROM_PREV = odiRef.getOption("P_VERSION")
    
    # 后续复杂逻辑示例
    if VERSION_FROM_PREV.startswith("1."):
        print("执行版本1.x的逻辑")
    else:
        print("执行其他版本逻辑")
    

方法二:通过ODI全局变量传递(适合跨过程/场景传递)

如果需要将值传递到其他过程或场景,可使用全局变量:

  • 第一步:创建ODI全局变量

    1. 在ODI的「变量」模块下,新建全局变量,命名为G_VERSION,类型选「String」,存储类型选「内存」(无需持久化)或「数据库」(需要持久化到ODI仓库)
  • 第二步:在Version_working_0_0步骤的Jython脚本中设置全局变量

    VERSION = "1.2.3"  # 替换成你的查询结果
    odiRef.setGlobalVariable("G_VERSION", VERSION)
    
  • 第三步:在test_version_0_0步骤的Jython脚本中获取全局变量

    VERSION_FROM_GLOBAL = odiRef.getGlobalVariable("G_VERSION")
    # 后续逻辑处理
    

你之前代码的错误原因

<@ Test = "testvalue">是ODI的静态替换语法,用于在SQL/脚本中预替换固定值,不能和Jython的odiRef.setOption API混用,直接调用odiRef的方法即可,无需添加该前缀。

内容的提问来源于stack exchange,提问作者MaskNu11

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 23:52:20