ODI 12如何存储值到变量/过程选项并跨步骤传递
ODI过程步骤间传递Jython变量的解决方案
方法一:通过过程选项(Procedure Options)传递(推荐同过程内步骤传递)
第一步:给当前ODI过程添加过程选项
- 打开你的ODI过程,切换到「选项」标签页
- 添加一个选项,命名为
P_VERSION,类型选择「String」,方向设为「OUT」(对应Version_working_0_0步骤的输出) - 同样的选项,在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全局变量
- 在ODI的「变量」模块下,新建全局变量,命名为
G_VERSION,类型选「String」,存储类型选「内存」(无需持久化)或「数据库」(需要持久化到ODI仓库)
- 在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
相关产品推荐
相关产品推荐

