ODI 12c如何用Substitution API处理临时表变量用于IKM步骤
ODI 12c 临时表Schema与自定义表名变量提取方案
步骤1:添加变量声明步骤(Set Variable)
在你的IKM中新增两个Set Variable类型的步骤,按顺序配置:
第一个步骤提取Schema:
- 变量名:
xSchema - 变量类型:String
- 赋值表达式:
该表达式直接获取临时表所属的Schema(即你案例中的<%=odiRef.getTable("L", "SCHEMA", "A")%>ETL)。
- 变量名:
第二个步骤处理并提取自定义表名:
- 变量名:
xTableName - 变量类型:String
- 赋值表达式:
解析:<%=replace(odiRef.getTable("L", "INT_NAME", "A").substring(odiRef.getTable("L", "INT_NAME", "A").indexOf('.') + 1), "I$", "X$")%>odiRef.getTable("L", "INT_NAME", "A")获取完整临时表名(如ETL.I$_SRCAP6V4TE0SOLTP0UH7SHVGAD28D)substring(...)截取.之后的部分,得到I$_SRCAP6V4TE0SOLTP0UH7SHVGAD28Dreplace(...)将开头的I$替换为X$,最终得到X$_SRCAP6V4TE0SOLTP0UH7SHVGAD28D
- 变量名:
步骤2:在后续IKM步骤中使用变量
在需要引用该临时表的目标命令或其他步骤里,直接通过以下格式调用变量:
<%=xSchema%>.<%=xTableName%>
例如执行查询或DML操作时:
SELECT * FROM <%=xSchema%>.<%=xTableName%> WHERE update_flag = 'Y'
注意事项
- 确保两个Set Variable步骤的执行顺序在所有需要使用
xSchema和xTableName的步骤之前 - 变量默认作用域为当前映射执行周期,无需额外配置全局变量
内容的提问来源于stack exchange,提问作者ODI12cUser
相关产品推荐
相关产品推荐

