OBIEE – 变量
在 OBIEE 中,有两种常用的变量类型 −
- 存储库变量
- 会话变量
除此之外,您还可以定义表示变量和请求变量。
存储库变量
存储库变量在任何时间点都只有一个值。存储库变量是使用 Oracle BI 管理工具定义的。在表达式生成器向导中,可以使用存储库变量代替常量。
有两种类型的存储库变量 −
- 静态存储库变量
- 动态存储库变量
静态存储库变量在变量对话框中定义,其值一直存在,直到管理员更改它们为止。
静态存储库变量包含数字或字符值的默认初始化程序。此外,您可以使用表达式生成器插入常量作为默认初始化程序,例如日期、时间等。您不能使用任何其他值或表达式作为静态存储库变量的默认初始化程序。
在较旧的 BI 版本中,管理员工具没有限制静态存储库变量的值。如果您的存储库已从旧版本升级,您可能会在一致性检查中收到警告。在这种情况下,请更新静态存储库变量,以便默认初始化程序具有常量值。
动态存储库变量与静态变量相同,但其值由查询返回的数据刷新。定义动态存储库变量时,您可以创建一个初始化块或使用包含 SQL 查询的现有块。您还可以设置 Oracle BI Server 将遵循的计划来定期执行查询并刷新变量的值。
当动态存储库变量的值发生变化时,与业务模型相关的所有缓存条目都会自动删除。
每个查询都可以刷新多个变量:查询中的每一列都有一个变量。您可以安排这些查询由 Oracle BI 服务器执行。
动态存储库变量对于定义逻辑表源的内容很有用。例如,假设您有两个有关订单的信息源。一个源包含当前订单,另一个包含历史数据。
创建存储库变量
在管理工具中 → 转到管理 → 选择变量 → 变量管理器 →转到操作 → 新建 → 存储库 → 变量。
在变量对话框中,输入变量的名称(所有变量的名称都应该是唯一的)→ 选择变量类型 - 静态或动态。
如果选择动态变量,请使用初始化块列表选择现有初始化块,该块将用于持续刷新值。
要创建新的初始化块,请单击新建。要添加默认初始化值,请在默认初始化框中键入值,或单击表达式生成器按钮以使用表达式生成器。
对于静态存储库变量,您在默认初始化窗口中指定的值将保持不变。除非您更改它,否则它不会更改。如果使用字符串初始化变量,请将字符串括在单引号中。静态存储库变量必须具有默认初始化值,这些默认初始化值是常量值,请单击确定关闭对话框。
会话变量
会话变量类似于动态存储库变量,它们从初始化块中获取值。当用户开始会话时,Oracle BI 服务器会创建会话变量的新实例并初始化它们。
会话变量的实例数与 Oracle BI 服务器上的活动会话数一样多。会话变量的每个实例都可以初始化为不同的值。
会话变量有两种类型 −
- 系统会话变量
- 非系统会话变量
Oracle BI 和 Presentation Server 使用系统会话变量来达到特定目的。它们具有预定义的保留名称,其他变量无法使用这些名称。
USER |
此变量保存用户使用登录名输入的值。此变量通常由用户的 LDAP 配置文件填充。 |
USERGUID |
此变量包含用户的全局唯一标识符 (GUID),由用户的 LDAP 配置文件填充。 |
GROUP |
它包含用户所属的组。当用户属于多个组时,请将组名放在同一列中,并用分号分隔(示例 - GroupA;GroupB;GroupC)。如果必须将分号作为组名的一部分,请在分号前面加上反斜杠字符 (\)。 |
ROLES |
此变量包含用户所属的应用程序角色。当用户属于多个角色时,请将角色名称包含在同一列中,并用分号分隔(示例 - RoleA;RoleB;RoleC)。如果必须将分号作为角色名称的一部分,请在分号前面加上反斜杠字符 (\)。 |
ROLEGUIDS |
它包含用户所属的应用程序角色的 GUID。应用程序角色的 GUID 与应用程序角色名称相同。 |
PERMISSIONS |
它包含用户拥有的权限。示例 - oracle.bi.server.manageRepositories。 |
非系统会话变量用于设置用户过滤器。例如,您可以定义一个名为 Sale_Region 的非系统变量,该变量将被初始化为用户的 sale_region 的名称。
创建会话变量
在管理工具中 → 转到管理 → 选择变量。
在变量管理器对话框中,单击操作 → 新建 → 会话 → 变量。
在会话变量对话框中,输入变量名称(所有变量的名称都应唯一,系统会话变量的名称是保留的,不能用于其他类型的变量)。
对于会话变量,您可以选择以下选项 −
允许任何用户设置值 − 此选项用于在初始化块填充值后设置会话变量。示例 - 此选项允许非管理员设置此变量以进行抽样。
安全敏感 − 这用于在使用行级数据库安全策略(例如虚拟专用数据库 (VPD))时将变量标识为对安全敏感。
您可以使用初始化块列表选项来选择将用于定期刷新值的初始化块。您还可以创建一个新的初始化块。
要添加默认初始化器值,请在默认初始化器框中输入值或单击表达式生成器按钮以使用表达式生成器。单击"确定"关闭对话框。
管理员可以使用 Oracle BI 管理工具创建非系统会话变量。
演示变量
演示变量是通过创建仪表板提示创建的。有两种类型的仪表板提示可供使用 −
列提示
使用列提示创建的演示变量与列相关联,它可以采用的值来自列值。
要创建演示变量,请转到"新建提示"对话框或"编辑提示"对话框 → 在变量集字段中选择"演示变量"→ 输入变量的名称。
变量提示
作为变量提示创建的表示变量不与任何列关联,您需要定义其值。
要将表示变量创建为变量提示的一部分,请在"新建提示"对话框或"编辑提示"对话框中 → 在"提示"字段中选择"表示变量" → 输入变量的名称。
表示变量的值由创建它的列或变量提示填充。每次用户在列或变量提示中选择一个值时,表示变量的值都会设置为用户选择的值。
初始化块
初始化块用于初始化 OBIEE 变量:动态存储库变量、系统会话变量和非系统会话变量。
它包含执行以初始化或刷新与该块关联的变量的 SQL 语句。执行的 SQL 语句指向可使用连接池访问的物理表。连接池在初始化块对话框中定义。
如果您希望初始化块的查询具有特定于数据库的 SQL,则可以为该查询选择数据库类型。
使用初始化块初始化动态存储库变量
初始化块的默认启动字符串字段用于设置动态存储库变量的值。您还可以定义一个计划,Oracle BI 服务器将遵循该计划来执行查询并刷新变量的值。如果将日志记录级别设置为 2 或更高,则为检索变量值而执行的所有 SQL 查询的日志信息都将保存在 nqquery.log 文件中。
此文件在 BI Server 上的位置 −
ORACLE_INSTANCE\diagnostics\logs\OracleBIServerComponent\coreapplication_obisn
使用初始化块初始化会话变量
会话变量也从初始化块中获取其值,但其值不会随时间间隔而改变。当用户开始新会话时,Oracle BI 服务器会创建一个新的会话变量实例。
如果 Identity Manager 用户对象中的日志记录级别设置为 2 或更高,或者变量管理器中的 LOGLEVEL 系统会话变量设置为 2 或更高,则 BI 服务器执行的所有 SQL 查询(用于检索会话变量信息)都保存在 nqquery.log 文件中。
此文件在 BI 服务器上的位置 −
ORACLE_INSTANCE\diagnostics\logs\OracleBIServerComponent\coreapplication_obisn
在管理员工具中创建初始化块
转到管理器 → 变量 → 出现变量管理器对话框。转到操作菜单 → 单击新建 → 存储库 → 初始化块 → 输入初始化块的名称。
转到计划选项卡 → 选择开始日期和时间以及刷新间隔。
您可以为初始化块选择以下选项 −
禁用 − 如果选择此选项,初始化块将被禁用。要启用初始化块,请右键单击变量管理器中的现有初始化块并选择启用。此选项使您无需打开初始化块对话框即可更改此属性。
允许延迟执行 −这允许您推迟执行初始化块,直到在会话期间首次访问关联的会话变量。
身份验证所需 − 如果选择此选项,则必须执行初始化块才能让用户登录。如果初始化块未执行,则用户将被拒绝访问 Oracle BI。