ODI---->Variables
一、变量简介
变量存储的是一个单一的值,既可以是数字,也可以是字符或者日期。不能为数组。
ODI的变量分为两种,全局变量和项目变量。 顾名思义,项目变量定义的变量只可以在本项目中使用,其它项目无法调用此变量。而全局变量定义的变量可被任何项目所引用。
变量可设置为一个单一的缺省值,或者由SQL赋值,在每次调用的时候刷新,生成最新的值。
二、变量的创建
先创建一个项目(ODI),打开后可看见”变量”标签。

在上面右键选择新建后,弹出窗口如下:

定义页中填入变量的名字,数值类型 ,保留历史记录有三种选项:缺省是最新值,还有所有值、无历史记录
- 最新值表示ODI将变量的最新值存入ODI元数据管理库中。
- 所与值表示ODI将变量的所有值变化存入元数据管理库中,可用于跟踪和调试。
- 无历史记录表示变量的最新值只存在与内存中,ODI不进行存储。
安全值:选中时,变量不会被记录。对于包含密码或者敏感数据的变量,选中时保留历史记录自动变为无历史记录

默认值定义了变量的缺省值。
切换到刷新页,可定义变量的刷新语句,从而在每次调用时,可获取不同的数值。

如上所示,在刷新页,首先要选择取变量的查询语句的数据源,例如ODI_TAG
然后编写select语句,
SELECT MAX(LAST_UPDATE_TIME) FROM "ODI_TAG"."DEPT"
完成后应用、保存。
点击验证按钮

点击刷新,会立即执行查询,历史记录标签页,根据保留历史记录2种选项不同,保存了最新值或者所有的历史记录。

这样,一个项目变量就已经创建完成。
三、变量使用
变量可用的地方很多,包括接口(Interface),程序(Procedure),包(Package)甚至模型(module)中的数据源等等。
3.1 变量作用域(scope)
使用变量MY_VAR的例子
· #MY_VAR: 必须在一个项目中
· #MY_PROJECT_CODE.MY_VAR: 明确指定项目名称前缀,避免有同名的全局变量
· #GLOBAL.MY_VAR: 参照全局变量.
· 使用 ":"代替"#"
You can use the variable as a SQL bind variable by prefixing it with a colon rather than a hash. However this syntax is subject to restrictions as it only applies to SQL DML statements, not for OS commands or ODI API calls and using the bind variable may result in performance loss. It is advised to use ODI variables prefixed with the '#'character to ensure optimal performance at runtime.
区别:
1. 冒号(:)只适用于SQL DML,不适用于OS命令 or ODI API,而使用#(井号)适用于OS commands, SQL, and ODI API calls.
2. 使用冒号(:)可能会损失性能。
3. 使用方法的不同:TOWN_NAME = :GLOBAL.VAR_TOWN_NAME,不需要引号括起来 TOWN = '#GLOBAL.VAR_TOWN' 需要引号括起来
When you reference an ODI Variable prefixed with the ':' character, the name of the Variable is NOT substituted when the RDBMS engine determines the execution plan. The variable is substituted when the RDBMS executes the request. This mechanism is called Binding. If using the binding mechanism, it is not necessary to enclose the variables which store strings between delimiters (such as quotes) because the RDBMS is expecting the same type of data as specified by the definition of the column for which the variable is used.
For example, if you use the variable TOWN_NAME=:GLOBAL.VAR_TOWN_NAME the VARCHAR type is expected.
When you reference an ODI variable prefixed with the "#" character, ODI substitutes the name of the variable by the value before the code is executed by the technology. The variable reference needs to be enclosed in single quote characters, for example TOWN = '#GLOBAL.VAR_TOWN'. This reference mode of the variable works for OS commands, SQL, and ODI API calls.
3.2、Using Variables in Packages

3.3、Using Variables in Mappings

3.4、Using Variables in Object Properties
3.5、Using Variables in Procedures
3.6、Using Variables within Variables
3.7、Using Variables in the Resource Name of a Datastore
3.8、Passing a Variable to a Scenario
3.9、Generating a Scenario for a Variable
3.10、Tracking Variables and Sequences
原文地址:
ODI---->Variables的更多相关文章
- Tcl internal variables
Tcl internal variables eryar@163.com 在Tcl中内置了一些变量,并赋予了一定的功能.内置变量列表如下: 变量名称 功能描述 argc 指命令行参数的个数. argv ...
- [Project Name] was compiled with optimization - stepping may behave oddly; variables may not be available.
控制台输出的时候显示一串这样的信息:[Project Name] was compiled with optimization - stepping may behave oddly; variabl ...
- Examples of MIB Variables - SNMP Tutorial
30.5 Examples of MIB Variables Versions 1 and 2 of SNMP each collected variables together in a singl ...
- foreach statement cannot operate on variables of type 'System.Web.UI.WebControls.Table' because 'System.Web.UI.WebControls.Table' does not contain a public definition for 'GetEnumerator'
错误:foreach statement cannot operate on variables of type 'System.Web.UI.WebControls.Table' because ' ...
- 已解决:Strict Standards: Only variables should be passed by reference in
今天安装ecshop的时候最上面出现了一个错误提示:Strict Standards: Only variables should be passed by reference in F:\www.x ...
- T-SQL Recipes之 Table Variables and Temporary Tables
Problem 许多时候, 我们想要Table Variables在动态SQL中执行,但现实是很骨感的.比如这个示例: DECLARE @sql_command NVARCHAR(MAX); DECL ...
- PHP 笔记一(systax/variables/echo/print/Data Type)
PHP stands for "Hypertext Preprocessor" ,it is a server scripting language. What Can PHP D ...
- odi 12.2.1.1新特性
ODI 12.2.1.1现在已经发布,也可以OTN上下载,主要变化: Hyperion Essbase and Hyperion Planning 知识模块 Hyperion Essbase and ...
- odi 12.2.1中访问excel文件
由于在odi 12.2.1中,必须使用jdk1.8,而jdk1.8中jdbc-odbc bridge已经不再支持,因此,可以使用Progress DataDirect SequeLink来充当jdbc ...
随机推荐
- Android之仿String的对象驻留
String a = "abc"; String b = "abc"; a == b true; 变量a和变量b是同一个值.这不只是说它俩的值是一样的, ...
- [rrdtool]监控和自己主动绘图,简单的监控.md
如今想要监控服务的流量和并发数,但是又没那么多时间来写系统.其它的运维系统又不熟悉,于是就用现有的rrdtool shell做了个简单的监控界面,暂时用下,也算是个小实验把. rrdtool也是刚接触 ...
- 开源项目MultiChoiceAdapter详解(一)——概要介绍
项目地址:https://github.com/ManuelPeinado/MultiChoiceAdapter 这个项目主要是提供了一个多选适配器,使用者可以用它来替换传统的适配器,用途还算比较广泛 ...
- 部署maven的一些要点、遇到的问题和心得体会
maven的部署.遇到的问题和心得体会 2013-10-24 | 阅: 转: | 分享 部署maven的一些要点.遇到的问题和心得体会 (图片看不了,可以下载doc文件) 一. ...
- 帕累托分布(Pareto distributions)、马太效应
什么是帕累托分布 帕累托分布是以意大利经济学家维弗雷多·帕雷托命名的. 是从大量真实世界的现象中发现的幂次定律分布.这个分布在经济学以外,也被称为布拉德福分布. 帕累托因对意大利20%的人口拥有80% ...
- window.parent window.top window.parent.location.pathname 没权限
跨域问题啊,如果只是测试的话,放到服务器去测试,本地的(http://localhost/)就算是在同一个文件下,都会被认为跨域的.如果不需要支持低版本IE浏览,可以使用postMessage处理这个 ...
- 阅读日志: 微信小程序的风口只有一天?
原文地址: 小程序的风口只有一天?难道我们用的是假的小程序 http://xudanei.baijia.baidu.com/article/755506 原文摘要: #,小程序的趋势,从1月10日至1 ...
- Valid Number leetcode java
题目: Validate if a given string is numeric. Some examples: "0" => true " 0.1 " ...
- js面向对象之继承-原型继承
//animal 父类 超类 var Animal = function(name) { this.name = name; this.sayhello = function() { alert(&q ...
- grunt-cmd-transport提取deps[]的BUG
该BUG已经在GitHub上提了issue,详见:#56 文件 // employee/static/adder.js define(function (require, exports) { exp ...