原文地址:http://xee123.blog.163.com/blog/static/277119942012612104438332/

Obiee 版本 11.1.1.5

库变量

库变量在同一时刻只有单一值。可以分为静态变量和动态变量。

静态变量和动态变量的调用方式是相同的。

静态变量

定义

后台与前台字段中调用

VALUEOF(“DATE”)

前台文本中调用

选择包含 HTML 标记来转义引号类的字符

@{biServer.variables['BI_EE_HOME']}

初始化块

初始化块用于创建 动态库变量 和 session 变量

可选择 3 种类型的数据源 :

1.         数据库 : 为库变量 /session 变量

2.         LDAP: 仅为 session 变量

3.         定制验证程序 : 仅为 session 变量

必须为以下类型初始化块创建一个 专用的连接池(数据源类型选择 Obiee 服务器例外)

1.         All authentication and login-specific initialization blocks such as language,externalized strings, and group assignments.

2.         All initialization blocks that set session variables.

3.         All initialization blocks that set repository variables. These initialization blocks should always be run using credentials with administrator privileges.

选择延迟执行选项(仅 session 变量可用)

此选项会延迟执行该初始化块直到首次访问相关联的 session 变量,以此提高性能。

若不选此项,则在用户登录时,将执行所有初始化块来初始化全部 session 变量,登录用时将变长。

但下列情况下,无法开启此选项

1.       使用了 行范围初始化

2.       使用了 验证所需 选项

3.       数据源类型非 数据库型

4.       与系统变量 USER 或 POXY 关联

5.       关联的 session 变量使用了 安全相关 选项

6.       调用了与其他不允许 延迟执行 的初始化块相关联的 session 变量

验证所需选项(仅 session 变量可用)

选择此项后, 若该初始化块执行失败,则用户被拒绝登录 Obiee

但不影响系统用户的登录

动态变量

定义

l  首先创建初始化块

l  指定连接池后写入相应数据库的 sql 语句

定义的变量值即为 Select 结果集,顺序与 select 语句中选择的字段顺序一致。

此时若 select 返回多行,只取第一行作为结果,其余行忽略。(只有在 session 变量中使用行范围初始化可以令变量包含整个结果集 , 详见 Example3 )

l  点击左下测试按钮来验证表达式(联机模式下使用了 :USER/:PASSWORD 变量的表达式不能测试 , 详见session 变量 Example1 )

l  指定刷新频率

分配到一个动态变量,可以设定默认初始化数值

调用

调用方法与库静态变量相同

Session 变量

session 变量在用户登录时被创建;它们可以分为 系统 session 变量 和 非系统 session 变量 。

session 变量不通过调度刷新。当用户启动一个 session 时, Oracle BI Server 创建一个新的 session 变量实例并将其初始化。

用户与 Session 变量交互的实质在于初始化块的 SQL 中引用的 ’:USER’, 详见之后的 Example

系统 session 变量和非系统 session 变量的定义与调用方法相同。

选择安全相关选项可以采用数据库行级别安全限制策略(如 VPD )

系统 session 变量

系统 session 变量的名称是预定义的关键字。

系统 session 变量列表

USER

用户名

PROXY

代理人

GROUP

权限组

WEBGROUPS

定义目录组 Presentation Services groups

USERGUID

 

ROLES

角色

ROLEGUIDS

角色 GUID

PERMISSIONS

权限

DISPLAYNAME

显示名

PORTALPATH

定义用户登录时所见默认 Dashboard

LOGLEVEL

0~5

REQUESTKEY

 

SKIN

皮肤

DESCRIPTION

说明

USERLOCALE

 

DISABLE_CACHE_HIT

 

DISABLE_CACHE_SEED

 

DISABLE_SUBREQUEST_CACHE

 

SELECT_PHYSICAL

 

DISABLE_PLAN_CACHE_HIT

 

DISABLE_PLAN_CACHE_SEED

 

TIMEZONE

时区

Example1- 使用 session 变量

本例通过建立系统 session 变量 USER 来使用外部权限表的用户登录 Obiee

l  首先创建外部权限表( FCT_PERMISSION )

l  新建初始化块,数据源选择 数据库 型

l  编写 SQL 语句:

select USER_NAME, USER_PASSWORD from FCT_PERMISSION

WHERE USER_NAME = ':USER' AND USER_PASSWORD = ':PASSWORD'

':USER' 和 ':PASSWORD' 是页面登录时键入的用户名、密码(在数据源选择 Obiee 服务器 时,无需加上引号)

若去掉该 where 子句,结果是任何用户名无需密码即可登录 Obiee

原因是此时系统 session 变量 USER 被成功的初始化了(即 select 结果集的第一个值),而页面键入的登录用户名只是作为了 DISPLAYNAME

l  将该初始化块分配给系统 session 变量 USER 和非系统 session 变量 PASSWORD

非系统 session 变量

通常使用非系统 session 变量来设定用户过滤器。

定义

参见前面 Example

后台与前台字段中调用

VALUEOF(NQ_SESSION.s_var)

前台文本中调用

@{biServer.variables['NQ_SESSION.s_var']}

Example2- 使用行范围初始化 Row-Wise Initialization

You can use the row-wise initialization option to create session variables dynamically and set their values when a session begins

本例使用数据库中的表数据来一次建立用户的 Session 变量列表,并设置其初始化值

本例中为 2 个用户定义了 1 个同名的 session 变量及各自独有的 session 变量

若令 Neednot 登录查看 Jane 独有的 session 变量 Status 将返回 Error ,故应用户屏蔽对其非法的 session 变量

l  数据库中建立 Session 变量对应的表 FCT_SESSION_LIST

Session_name 作为 Session 变量名, Session_value 作为变量值

l  建立初始化块 , 数据源选择 数据库型

l  编写 SQL 为

SELECT  SESSION_NAME, SESSION_VALUE FROM FCT_SESSION_LIST

WHERE USER_NAME = ':USER'

l  变量目标配置时选择行范围初始化

l  在前台中调用 VALUEOF(NQ_SESSION.Level) 查看效果

l  Neednot 登录时为 4 , Jane 登录时为 5

Example3- 使 session 变量包含一个值列表

本例创建一个名为 LIST_OF_USERS 的 session 变量,包含符合特定条件的 USER 列表。

l  仍使用前例的表 FCT_SESSION_LIST

l  建立初始化块 , 数据源选择 数据库型

l  编写 SQL 为

SELECT  ‘LIST_OF_USERS’, USER_NAME FROM FCT_SESSION_LIST

WHERE SESSION_NAME = ‘Level’

l  变量目标配置时选择行范围初始化

l  将此变量用于 WHERE 字句作为过滤条件

WHERE Yourtable .USER_NAME = valueof(NQ_SESSION.LIST_OF_USERS)

等价于

WHERE Yourtable .USER_NAME IN (‘Neednot’,’Jane’)

表示变量

是与 仪表盘提示 绑定的变量

可以创建 列提示 或 变量提示 来绑定一个表示变量

定义

在仪表盘提示中进行定义

列提示

变量提示

公式与文本中调用

@{variables.P_var}[Format}{Default}     Format 用方括号包围

@{scope .variables['P_var ']}

加上单引号可使其转换为文本型

scope identifies the qualifiers for the variable. You must specify the scope when a variable is used at multiple levels (analyses, dashboard pages, and dashboards) and you want to access a specific

value. (If you do not specify the scope, then the order of precedence is analyses, dashboard pages, and dashboards.)

Example :   @{variables.SelectDate}[MM/DD/YYYY]{'Unkown'}

请求变量

请求变量同样与 仪表盘提示绑定 , 与 session 变量设置为同名用来更新 session 变量的值 。

Obiee11g变量的更多相关文章

  1. 6 小时 Python 入门

    6 小时 Python 入门 以下操作均在 Windows 环境下进行操作,先说明一下哈 一.安装 Python 1.官网下载 Python 进入官网(https://www.python.org), ...

  2. In-Memory:在内存中创建临时表和表变量

    在Disk-Base数据库中,由于临时表和表变量的数据存储在tempdb中,如果系统频繁地创建和更新临时表和表变量,大量的IO操作集中在tempdb中,tempdb很可能成为系统性能的瓶颈.在SQL ...

  3. 探究javascript对象和数组的异同,及函数变量缓存技巧

    javascript中最经典也最受非议的一句话就是:javascript中一切皆是对象.这篇重点要提到的,就是任何jser都不陌生的Object和Array. 有段时间曾经很诧异,到底两种数据类型用来 ...

  4. Shell特殊变量

    $ 表示当前Shell进程的ID,即pid $echo $$ 运行结果 特殊变量列表 变量 含义 $0 当前脚本的文件名 $n 传递给脚本或函数的参数.n 是一个数字,表示第几个参数.例如,第一个参数 ...

  5. Java多线程基础——对象及变量并发访问

    在开发多线程程序时,如果每个多线程处理的事情都不一样,每个线程都互不相关,这样开发的过程就非常轻松.但是很多时候,多线程程序是需要同时访问同一个对象,或者变量的.这样,一个对象同时被多个线程访问,会出 ...

  6. Js 变量声明提升和函数声明提升

    Js代码分为两个阶段:编译阶段和执行阶段 Js代码的编译阶段会找到所有的声明,并用合适的作用域将它们关联起来,这是词法作用域的核心内容 包括变量声明(var a)和函数声明(function a(){ ...

  7. PHP源码分析-变量

    1. 变量的三要素变量名称,变量类型,变量值 那么在PHP用户态下变量类型都有哪些,如下: // Zend/zend.h #define IS_NULL 0 #define IS_LONG 1 #de ...

  8. JavaScript var关键字、变量的状态、异常处理、命名规范等介绍

    本篇主要介绍var关键字.变量的undefined和null状态.异常处理.命名规范. 目录 1. var 关键字:介绍var关键字的使用. 2. 变量的状态:介绍变量的未定义.已定义未赋值.已定义已 ...

  9. shell变量

    定义变量 定义变量时,变量名不加美元符号($),如: variableName="value" 注意,变量名和等号之间不能有空格,这可能和你熟悉的所有编程语言都不一样.同时,变量名 ...

随机推荐

  1. canvas 的一些效果

    <html> <head> <style> *{ margin: 0; padding: 0; } body{ background:green; } #div{ ...

  2. Yii 多个子目录同步登录

    ---恢复内容开始--- 配置文件中:  1 'components'=>array( 'user'=>array( 'class'=>'CWebUser', 'identityCo ...

  3. python 中的高级函数sorted()

    Python内置的 sorted()函数可对list进行排序: >>>sorted([36, 5, 12, 9, 21]) [5, 9, 12, 21, 36] 但 sorted() ...

  4. z变换

    ---恢复内容开始--- z变换作用很大 将离散信号从时间域转到频率域 网址 ---恢复内容结束--- z变换作用很大 将离散信号从时间域转到频率域 网址 http://stackoverflow.c ...

  5. 柏克EPS应急电源签约联达大厦保安全

    近日,柏克EPS应急电源成功签约佛山市联达大厦,保障大厦电力安全. 佛山市联达大厦占地6674㎡,总建筑面积约4.6万㎡,设有两层地下室,提供201个停车位,地面29层.大厦大楼分为主楼和副楼,主楼地 ...

  6. 关于ajax跨域请求(cross Domain)

    Cross Domain AJAX主要就是A.com网站的页面发出一个XMLHttpRequest,这个Request的url是B.com,这样的请求是被禁止的,浏览器处于安全考虑不允许进行跨域访问, ...

  7. 为什么 input 元素能用 width 属性

    前几天在是写网页的时候发现input可以设置宽高,很疑惑,上网查了之后发现: 简单的认为 input 就是 inline 元素是片面的.元素默认以何种 display 属性值显示出来,这个其实更多的时 ...

  8. Spark的Straggler深入学习(1):如何在本地图形监控远程Spark的GC情况——使用java自带的jvisualvm

    一.本文的目的       Straggler是目前研究的热点,Spark中也存在Straggler的问题.GC问题是总所周知的导致Straggler的重要因素之一,为了了解GC导致的Straggle ...

  9. PKU 1003解题

    首先庆祝一下,今天连A了3题.感觉后面这题太简单了.. 由于英文不好 ,找了个翻译: 若将一叠卡片放在一张桌子的边缘,你能放多远?如果你有一张卡片,你最远能达到卡片长度的一半.(我们假定卡片都正放在桌 ...

  10. NSOperationQueue的其他方法

    1.设置最大并发数 什么是并发数 同时执行的任务数 比如,同时开3个线程执行3个任务,并发数就是3   最大并发数的相关方法 - (NSInteger)maxConcurrentOperationCo ...