我们在Jython脚本中设置ODI变量时遇到了问题。对以下问题的任何帮助都很棒。
问题陈述:我们必须从当前的操作系统获取操作系统名称,并且基于操作系统,我们必须执行ODIOSCommand(Linux或Windows)。
但是我们无法在变量中设置操作系统名称(即使用Jython变量OR ODI变量)。它似乎只取第一个值(默认值)而不是动态设置值。
问题: - 我们无法通过jython脚本设置ODI变量并获得动态值。
我们正在尝试通过Jython脚本设置ODI变量,此变量值用于运行ODIOS命令以在相应的操作系统上创建文本文件。
请在下面找到详细信息。 •创建运行jython脚本的过程。 •运行命令“os.get_os_type()”并获取操作系统类型。 •如果操作系统类型为Windows或NT,则将ODI变量(#IsWindows)设置为“是”。 •如果操作系统类型为Linux,则将ODI变量(#IsWindows)设置为“NO”。 •如果值为YES,则评估ODI变量(#IsWindows)然后运行windows命令创建文本文件,否则运行Linux命令在Linux机器上创建文本文件。
11g版本中的现有代码: -
导入os
如果os.get_os_type()==' nt':
cmd = 'dir "#ProcessingFolder*.xml" /s /b /a:-d > "#CurrFileName"'
使用os.system(CMD)
其他:
os.system("ls -d #ProcessingFolder*.[x,X][m,M][l,L] > #CurrFileName")
在jython代码下面,我们试图在ODI 12.2.1中设置ODI变量,因为上面的代码在ODI 12.2.1中没有工作: -
导入os
如果os.get_os_type()==' nt':
其他:
#POG_IMPORT_3.IsWindows ='否'
执行上述程序后,我们使用“刷新”变量来获取变量中的最新值,即SELECT' #IsWindows'来自双重。
并评估变量以检查它是否为“是”或“否”。
但"#IsWindows"变量未设置/保持在运行时设置的值。
注意:这是一个从11.1.1.7迁移到12.2.1的项目,我们是第一次在12.2.1中创建变量。
在12.2.1版本中,12.2.1变量创建/使用是否不同?
有关如何将运行时值存储到ODI变量的任何提示都非常有用吗?
答案 0 :(得分:1)
我发现变量是强烈的类型。这意味着如果你的变量#isWindows应该以"#BIAPPS.IsWindows"为前缀。这在11g中没有发生,但12c需要所有权,所以不要输入变量,而是从存储局部变量的下面的窗格中使用它。