OBIEE – 变量
OBIEE – 变量
在 OBIEE 中,有两种常用的变量 –
- 存储库变量
- 会话变量
除此之外,您还可以定义 Presentation 和 Request 变量。
存储库变量
Repository 变量在任何时间点都有一个值。存储库变量是使用 Oracle BI 管理工具定义的。存储库变量可用于代替表达式生成器向导中的常量。
有两种类型的存储库变量 –
- 静态存储库变量
- 动态存储库变量
静态存储库变量在变量对话框中定义,它们的值一直存在,直到管理员更改它们。
静态存储库变量包含数字或字符值的默认初始值设定项。此外,您可以使用 Expression Builder 插入常量作为默认初始值设定项,例如日期、时间等。您不能使用任何其他值或表达式作为静态存储库变量的默认初始值设定项。
在较旧的 BI 版本中,Administrator 工具不限制静态存储库变量的值。如果您的存储库已从旧版本升级,您可能会在一致性检查中收到警告。在这种情况下,更新静态存储库变量,以便默认初始值设定项具有常量值。
动态存储库变量与静态变量相同,但值由查询返回的数据刷新。定义动态存储库变量时,您可以创建一个初始化块或使用包含 SQL 查询的预先存在的块。您还可以设置 Oracle BI Server 将遵循的计划来执行查询并定期刷新变量的值。
当动态存储库变量的值更改时,与业务模型关联的所有缓存条目都会自动删除。
每个查询可以刷新多个变量:查询中的每一列对应一个变量。您安排这些查询由 Oracle BI 服务器执行。
动态存储库变量对于定义逻辑表源的内容很有用。例如,假设您有两个有关订单的信息来源。一个来源包含当前订单,另一个来源包含历史数据。
创建存储库变量
在管理工具→转到管理→选择变量→变量管理器→转到操作→新建→存储库>变量。
在变量对话框中,输入变量的名称(所有变量的名称应该是唯一的)→ 选择变量类型 – 静态或动态。
如果选择动态变量,请使用初始化块列表来选择将用于持续刷新值的现有初始化块。
创建新的初始化块 → 单击新建。要添加默认初始值设定项,请在默认初始值设定项框中键入该值,或单击 Expression Builder 按钮以使用 Expression Builder。
对于静态存储库变量,您在默认初始值设定项窗口中指定的值仍然存在。除非你改变它,否则它不会改变。如果使用字符串初始化变量,请将字符串括在单引号中。静态存储库变量必须具有作为常量值的默认初始值设定项 → 单击确定关闭对话框。
会话变量
会话变量类似于动态存储库变量,它们从初始化块中获取它们的值。当用户开始会话时,Oracle BI 服务器会创建会话变量的新实例并对其进行初始化。
会话变量的实例数与 Oracle BI 服务器上的活动会话数一样多。会话变量的每个实例都可以初始化为不同的值。
有两种类型的会话变量 –
- 系统会话变量
- 非系统会话变量
Oracle BI 和演示服务器出于特定目的使用系统会话变量。它们具有其他变量不能使用的预定义保留名称。
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))时将变量标识为对安全敏感。
您可以使用初始化块列表选项来选择将用于定期刷新值的初始化块。您还可以创建一个新的初始化块。
要添加默认初始值设定项,请在默认初始值设定项框中输入该值或单击 Expression Builder 按钮以使用 Expression Builder。单击确定关闭对话框。
管理员可以使用 Oracle BI 管理工具创建非系统会话变量。
表示变量
演示变量是通过创建仪表板提示创建的。可以使用两种类型的仪表板提示 –
列提示
列提示创建的表示变量与列相关联,它可以取的值来自列值。
要创建演示变量,请转到“新建提示”对话框或“编辑提示”对话框 → 在变量集字段中选择演示变量 → 输入变量名称。
变量提示
创建为变量提示的表示变量不与任何列相关联,您需要定义其值。
要创建表示变量作为变量提示的一部分,请在“新建提示”对话框或“编辑提示”对话框中 → 在提示字段中选择表示变量 → 输入变量名称。
表示变量的值由创建它的列或变量提示填充。每次用户在列或变量提示中选择一个值时,表示变量的值将设置为用户选择的值。
初始化块
初始化块用于初始化 OBIEE 变量:动态存储库变量、系统会话变量和非系统会话变量。
它包含执行以初始化或刷新与该块关联的变量的 SQL 语句。执行的 SQL 语句指向可以使用连接池访问的物理表。连接池在初始化块对话框中定义。
如果希望初始化块的查询具有特定于数据库的 SQL,则可以为该查询选择数据库类型。
使用初始化块初始化动态存储库变量
初始化块的默认初始化字符串字段用于设置动态存储库变量的值。您还定义了一个计划,Oracle BI 服务器遵循该计划来执行查询并刷新变量的值。如果将日志记录级别设置为 2 或更高,则为检索变量值而执行的所有 SQL 查询的日志信息都保存在 nqquery.log 文件中。
此文件在 BI 服务器上的位置 –
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。