Oracle ODI KM选项-调用项目变量

Oracle ODI KM选项-调用项目变量,oracle,oracle-data-integrator,Oracle,Oracle Data Integrator,使用项目变量修改ODI知识模块(KM)以运行if条件。与直接在代码中使用全局变量不同,我希望将变量存储在Option中,并使用GetOption方法调用 我创建了一个选项“Option1”,并将值设置为变量#GLOBAL.VAR1 变量VAR1的值为1或0 <%for (int i=odiRef.getDataSetMin(); i <= odiRef.getDataSetMax(); i++){%> <%=odiRef.getDataSet(i, "Operator")

使用项目变量修改ODI知识模块(KM)以运行if条件。与直接在代码中使用全局变量不同,我希望将变量存储在Option中,并使用GetOption方法调用

我创建了一个选项“Option1”,并将值设置为变量#GLOBAL.VAR1

变量VAR1的值为1或0

<%for (int i=odiRef.getDataSetMin(); i <= odiRef.getDataSetMax(); i++){%>
<%=odiRef.getDataSet(i, "Operator")%>
select  <%=odiRef.getPop("DISTINCT_ROWS")%>
    <%=odiRef.getColList(i, ""," [EXPRESSION]\t[ALIAS_SEP] [CX_COL_NAME]", ",\n\t", "", "")%>
from    <%=odiRef.getFrom(i)%>
where
<%if (odiRef.getOption("Option1").equals("1"))  { %>
(1=2)
<%} else {%>
(1=1)
<% } %>
<%}%>

我认为问题在于您的if语句如下所示:

if("#PROJECT_VARIABLE.NAME".equals("1")) ...
<@ variable_name=<%=odiRef.getOption("Option1")%> @>
因此,您不是在计算值,而是在KM选项中输入的变量的名称

尝试将变量名存储到另一个替换变量中,以便在下一级进行替换,如下所示:

if("#PROJECT_VARIABLE.NAME".equals("1")) ...
<@ variable_name=<%=odiRef.getOption("Option1")%> @>


我需要更多的信息。变量的数据类型是什么?“保留历史”的价值是什么?如果使用日志级别6运行,该步骤的运算符中的变量值是多少?另外,我相信使用WHERE子句您的代码会更容易:
WHERE=0
变量的数据类型是带有最新值的数字。老实说,我粘贴的代码只是一个示例。而不是(1=1)和(1=2),我有一个基于列的更复杂的子句。所以以上的方法对我来说是不可能的。使用
替代#GLOBAL.VAR1但是如何在Hi-vinny中使用它,您说您不知道如何使用
。您可以这样使用它
;然后使用新的变量名。我这样做了,但仍然不起作用。我的if子句
(1=2)(1=1)
@vinny,在not.之间尝试。。似乎全局变量只能在标记中读取