一、变量简介

变量存储的是一个单一的值,既可以是数字,也可以是字符或者日期。不能为数组。

ODI的变量分为两种,全局变量和项目变量。 顾名思义,项目变量定义的变量只可以在本项目中使用,其它项目无法调用此变量。而全局变量定义的变量可被任何项目所引用。

变量可设置为一个单一的缺省值,或者由SQL赋值,在每次调用的时候刷新,生成最新的值。

二、变量的创建

先创建一个项目(ODI),打开后可看见”变量”标签。

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

定义页中填入变量的名字,数值类型 ,保留历史记录有三种选项:缺省是最新值,还有所有值、无历史记录

  1. 最新值表示ODI将变量的最新值存入ODI元数据管理库中。
  2. 所与值表示ODI将变量的所有值变化存入元数据管理库中,可用于跟踪和调试。
  3. 无历史记录表示变量的最新值只存在与内存中,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

 

原文地址:

Working with Variables

ODI---->Variables的更多相关文章

  1. Tcl internal variables

    Tcl internal variables eryar@163.com 在Tcl中内置了一些变量,并赋予了一定的功能.内置变量列表如下: 变量名称 功能描述 argc 指命令行参数的个数. argv ...

  2. [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 ...

  3. 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 ...

  4. 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 ' ...

  5. 已解决:Strict Standards: Only variables should be passed by reference in

    今天安装ecshop的时候最上面出现了一个错误提示:Strict Standards: Only variables should be passed by reference in F:\www.x ...

  6. T-SQL Recipes之 Table Variables and Temporary Tables

    Problem 许多时候, 我们想要Table Variables在动态SQL中执行,但现实是很骨感的.比如这个示例: DECLARE @sql_command NVARCHAR(MAX); DECL ...

  7. PHP 笔记一(systax/variables/echo/print/Data Type)

    PHP stands for "Hypertext Preprocessor" ,it is a server scripting language. What Can PHP D ...

  8. odi 12.2.1.1新特性

    ODI 12.2.1.1现在已经发布,也可以OTN上下载,主要变化: Hyperion Essbase and Hyperion Planning 知识模块 Hyperion Essbase and ...

  9. odi 12.2.1中访问excel文件

    由于在odi 12.2.1中,必须使用jdk1.8,而jdk1.8中jdbc-odbc bridge已经不再支持,因此,可以使用Progress DataDirect SequeLink来充当jdbc ...

随机推荐

  1. 通过Gson解析Json数据

    Json是一种数据格式,便于数据传输.存储.交换:Gson是一种组件库,可以把java对象数据转换成json数据格式. gson.jar的下载地址:http://search.maven.org/#s ...

  2. 突发奇想之:源码及文档,文档包括源码---xml格式的源码,文档源码合并;注释文档化,文档代码化;

    目前源码和文档一般都是分开的,我在想为什么 源码不就是最好的文档么? 但是一般源码都是文本text的,格式化需要人为统一规范,所以源码中的文档在现实中不是那么的易于实践. 而且 源码 不能包括图片.附 ...

  3. ArcGIS Server 10 for java 注册SOE出现的问题

    一个SOE 需要register,但是报错 Manage Extensions Refresh Unable to register extension. com.esri.arcgis.intero ...

  4. 文本框只能输入数字(兼容IE火狐)

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  5. 构建-0 Gradle DSL 属性和方法【API】

    Android Plugin DSL Reference This is the DSL reference for Android Gradle Plugin. Start reading by f ...

  6. ul里不能直接嵌套div(在ie7以前版本)

    平时为了写某个js效果,从而忽略了标签的嵌套 从而导致了IE6-7混乱,在ul下,直接嵌套div,在ie7以前版本,会出现的状况是:div会被离它最近的li包裹住. 请看dome <ul cla ...

  7. C# 二种方法控制系统音量/麦克风大小

    场景:在做播放设备的时候需要控制音量的大小,下面几种方法将满足你的要求 方法一: 改变系统音量设置 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 ...

  8. C++模拟键盘消息

    实现功能:在现有DLL程序中向特定的EXE窗口中发送模拟键盘的消息 使用API根据窗口标题递归查找特定的窗口句柄,之后模拟调用. 注意:keybd_event函数不能在VS下使用,所以用SendInp ...

  9. Spring Boot集成MyBatis开发Web项目

    1.Maven构建Spring Boot 创建Maven Web工程,引入spring-boot-starter-parent依赖 <project xmlns="http://mav ...

  10. HDU 4548 美素数 素数题解

    本题就是能够直接打表的,推断能否够打表也须要技巧的: 1 推断最大的数值为1000000.百万下面的数打表都是能够的 2 能够线性预处理好.使用素数筛子法是能够接近线性预处理的. 故此能够打表了. 须 ...