BIEE 变量小结
Biee 11g 变量总结
一、在oracle bi管理工具中--------资料档案库变量和会话变量
Administrator tool -Manage-Variable 下图~
这里是模型RPD定义变量的地方,也就是所定义的变量名都是保存在RPD模型中,Variable 所定义的变量类型分为两大类,一种是Repository(库变量),另外一种是Session(会话变量)。
其中Repository分两种变量的类型:Dynamic(动态变量)和Static(静态变量)
Session也分两种变量类型:System(系统变量)和Non-System(非系统变量)
1.资料档案库变量:
库变量的Static(静态变量)经常是作为项目需求中经常用的固定值做为这个静态变量值的,这种资料档案库变量的值将予以保存,除非管理员决定更改,否则不会发生更改举个例子:如果一个项目中有10个Dashboard,每个Dashboard有10个page,每个page的下标都需要带上公司的版权注释,当公司被收购了版权需要更改的话怎么办,改一百次版权信息?这里如果用静态变量的话就方便多了,只需修改变量对应的缺省值就可以了。
用法如图:
建立一个Static的Repository
Variable
变量名为SRV缺省值为222050000,其中要注意一下类型Type,因为是静态的,所以不需要初始化块。
在前端直接就可以调用了
输入变量名即可
查看结果 说明调用静态的库变量成功。
这里需要注意一下,表达式和筛选调用库变量的时候是可以VALUEOF('SRV')来引用,而其他地方调用的话例如文本:需要这么写@{biServer.variables['SRV']} 。
再看一下动态(Dynamic)的库变量的用途,这种资料档案库变量的值将由从查询返回的数据进行刷新 例如:一个项目中,要求当用户登录的时候看到的数据是当天(当月)的数据,这时候我们需要用到动态的库变量(也有其他方法,不做介绍了)。
所谓的“当前”,就是此刻所在的月,所以这些需要设置初始化块来设置时间的更新设置。 如图:
Edit Data Source是编辑查询的地方,会返回若干行值;
Edit Data Target是指定查询返回的数据用于初始化哪个变量的。返回值的顺序和需要初始化的变量顺序需要严格对称;
可以在Edit Data Target中新建动态变量
也可以先创建好变量之后 在分配初始化快。
Schedule的地方就是制定查询执行的频率,即多久更新一次变量。
前端的调用方法可以静态的库变量相同;
这里需要提醒一下。库变量无论是静态的或是动态的,在前端都是无法对其变量值进行更改的,当然如果是库变量的取的关系库表中的值,通过回写数据库的数据来改动态的库变量也是一种方法哦~
2.会话变量:
再看一下Session会话变量,会话变量是在每个用户登录时进行初始化的变量。当用户开始会话时,Oracle BI Server 会创建会话变量的新实例并进行初始化。会话变量的设置方法和库变量类似,也是可以直接设置Variables,当然也可以定义初始化块来定义更复杂的会话变量,其中会话变量分系统变量和非系统变量。
系统会话变量:系统会话变量具有保留名称,这些名称不能用于其他类型的变量 (例如静态变量、动态资料档案库变量和非系统会话变量) 这里常用到的就USER,GROUP,ROLES,DISPLAYNAME,其他变量的含义请参考 Business
Intelligence Server Administration Guide。非系统会话变量名称可以自定义,但不要和系统变量同名即可,这里不再说步骤了,和库变量定义相同,这里定义了一个非系统会话变量SessionTest如下:
其中 执行优先级 是加载其他的应用程序定义的变量(例如:LDAP定义的用户变量)。
测试 按钮可以测试查看到变量名称和其缺省值
再前端调用一下
注意调用会话变量的时候是VALUEOF(NQ_SESSION.变量名)而调用库变量的时候是VALUEOF(“变量名”)
OK~调用成功。
二、在前端定义的变量~
前端可以定义的变量分为表示变量和请求变量 都是创建提示中设置
1. 表示变量 表示变量是把提示中(也可叫筛选器)的所选项作为变量的Value值进行使用 .表示变量的值由创建该变量时所使用的列提示或变量提示填充。也就是说,每次用户在列提示或变量提示中选择值时,表示变量的值就会设置为用户选择的这个值。
创建方法:1.在仪表盘提示中 新建变量提示
或者在新建列提示的下面设置表示变量. 作为列提示一部分创建的表示变量与某个列相关联,它可采用的值来自于列值。
用@{变量名}的结果来引用 同时可以设置赋予变量一个默认值
结果如下
2. 请求变量
通过请求变量可以覆盖会话变量的值,但这只在从列提示启动的数据库请求期间有效。可以在创建列提示的过程中创建请求变量。作为列提示一部分创建的请求变量与某个列相关联,它可采用的值来自于列值。请求变量的值由创建该变量时所使用的列提示填充。也就是说,每次用户在列提示中选择值时,请求变量的值就会设置为用户选择的这个值。不过,只有在从用户按提示的开始按钮到分析结果返回到仪表盘这一段时间内,该值才有效。
请求变量是重新定义会话变量的Value值的变量,其新定义的值来自提示所选项。
设置请求变量名的时候必须要和将修改的会话变量名称相同,上边已经定义了一个非系统会话变量SessionTest,Value值为222010000,下面以这个为例,来修改会话变量SessionTest的Value值。
在新建列提示中定义一个请求变量,名为SessionTest
在做一个会话变量的表
这里无需加筛选器,因为调节列是来自会话变量,我们实验的目的就是用提示的请求变量来修改这个会话变量的列~
OK~添加到仪表盘里看一下结果~
为了试验明显提示的缺省值没有进行设置,这里的缺省值是来自会话变量的222010000。
操作一下提示来改变会话变量的Value值~
OK~~!
变量用法总结:
库变量在Answers列的编辑公式中调用方法是VALUEOF("变量名")
会话变量在在Answers列的编辑公式中调用方法是VALUEOF(NQ_SESSION.变量名)
库变量和会话变量在其他地方调用(例如文本中)是@{biServer.variables[‘变量名’]}
表示变量的调用方法是@{变量名}
系统自带了一些会话变量如下:
Delivers:@{currentMonth}。
currentTime => @{system.currentTime} = 2010-5-14 2:21:30
system.productVersion => @{system.productVersion} = 10.1.3.4 (Build 080726.1900)
session.locale => @{session.locale} =zh-cn
session.language => @{session.language} = zh
rtl =>@{session.rtl} = false
session.loginTime => @{session.loginTime} = 2010-5-14 1:42:36
session.logoutTime =>@{session.logoutTime } = 2010-5-14 1:42:31
session.lastAccessTime =>@{session.lastAccessTime} = 2010-5-14 2:21:29
session.currentUser => @{session.currentUser.id} = administrator
user.homeDirectory => @{user.homeDirectory} = /users/administrator
user.id => @{user.id} = administrator
user.displayName => @{user.displayName} = administrator