OBIEE – 变量


在 OBIEE 中,常用的变量有两种类型 -

  • 存储库变量
  • 会话变量

除此之外,您还可以定义Presentation 和Request 变量。

存储库变量

存储库变量在任何时间点都具有单个值。存储库变量是使用 Oracle BI 管理工具定义的。可以使用存储库变量代替表达式生成器向导中的常量。

存储库变量有两种类型 -

  • 静态存储库变量
  • 动态存储库变量

静态存储库变量在变量对话框中定义,它们的值一直存在,直到管理员更改它们为止。

静态存储库变量包含数字或字符值的默认初始值设定项。此外,您可以使用表达式生成器插入常量作为默认初始值设定项,例如日期、时间等。您不能使用任何其他值或表达式作为静态存储库变量的默认初始值设定项。

在旧版 BI 中,Administrator 工具不限制静态存储库变量的值。如果您的存储库已从旧版本升级,您可能会在一致性检查中收到警告。在这种情况下,请更新静态存储库变量,以便默认初始值设定项具有常量值。

动态存储库变量与静态变量相同,但值由查询返回的数据刷新。定义动态存储库变量时,您可以创建一个初始化块或使用包含 SQL 查询的预先存在的初始化块。您还可以设置 Oracle BI Server 将遵循的计划来执行查询并定期刷新变量的值。

当动态存储库变量的值发生更改时,与业务模型关联的所有缓存条目都会自动删除。

每个查询可以刷新多个变量:查询中的每一列一个变量。您安排这些查询由 Oracle BI 服务器执行。

动态存储库变量对于定义逻辑表源的内容非常有用。例如,假设您有两个有关订单的信息源。一个源包含当前订单,另一个源包含历史数据。

创建存储库变量

在管理工具中→转到管理→选择变量→变量管理器→转到操作→新建→存储库>变量。

在“变量”对话框中,输入变量的名称(所有变量的名称应该是唯一的)→ 选择变量的类型 - 静态或动态。

如果选择动态变量,请使用初始化块列表来选择将用于持续刷新值的现有初始化块。

要创建新的初始化块 → 单击新建。要添加默认初始值设定项值,请在默认初始值设定项框中键入该值,或单击“表达式生成器”按钮以使用“表达式生成器”。

对于静态存储库变量,您在默认初始化程序窗口中指定的值将保留。除非你改变它,否则它不会改变。如果使用字符串初始化变量,请将字符串括在单引号中。静态存储库变量必须具有常量值的默认初始值设定项 → 单击“确定”关闭对话框。

会话变量

会话变量与动态存储库变量类似,它们从初始化块获取它们的值。当用户开始会话时,Oracle BI 服务器会创建会话变量的新实例并初始化它们。

Oracle BI 服务器上有多少个活动会话,就有多少个会话变量实例。会话变量的每个实例都可以初始化为不同的值。

有两种类型的会话变量 -

  • 系统会话变量
  • 非系统会话变量

Oracle BI 和演示服务器将系统会话变量用于特定目的。它们具有预定义的保留名称,其他变量不能使用这些名称。

用户

该变量保存用户使用登录名输入的值。该变量通常由用户的 LDAP 配置文件填充。

用户指南

此变量包含用户的全局唯一标识符 (GUID),并从用户的 LDAP 配置文件填充。

团体

它包含用户所属的组。当用户属于多个组时,请将组名称包含在同一列中,并用分号分隔(示例 - GroupA;GroupB;GroupC)。如果必须包含分号作为组名称的一部分,请在分号前面添加反斜杠字符 (\)。

角色

该变量包含用户所属的应用程序角色。当用户属于多个角色时,请将角色名称包含在同一列中,并用分号分隔(示例 - RoleA;RoleB;RoleC)。如果必须包含分号作为角色名称的一部分,请在分号前面添加反斜杠字符 (\)。

角色指南

它包含用户所属的应用程序角色的 GUID。应用程序角色的 GUID 与应用程序角色名称相同。

权限

它包含用户拥有的权限。示例 - oracle.bi.server.manageRepositories。

非系统会话变量用于设置用户过滤器。例如,您可以定义一个名为 Sale_Region 的非系统变量,该变量将初始化为用户的 sale_region 的名称。

创建会话变量

在管理工具中 → 转到管理 → 选择变量。

在变量管理器对话框中,单击操作 → 新建 → 会话 → 变量。

在“会话变量”对话框中,输入变量名称(所有变量的名称应该是唯一的,系统会话变量的名称是保留的,不能用于其他类型的变量)。

对于会话变量,您可以选择以下选项 -

  • 允许任何用户设置值- 此选项用于在初始化块填充值后设置会话变量。示例 - 此选项允许非管理员设置此变量以进行采样。

  • 安全敏感- 这用于在使用行级数据库安全策略(例如虚拟专用数据库(VPD))时将变量标识为对安全敏感。

您可以使用初始化块列表选项来选择将用于定期刷新值的初始化块。您还可以创建一个新的初始化块。

要添加默认初始值设定项值,请在默认初始值设定项框中输入值,或单击“表达式生成器”按钮以使用“表达式生成器”。单击“确定”关闭对话框。

管理员可以使用 Oracle BI 管理工具创建非系统会话变量。

表示变量

演示变量是通过创建仪表板提示来创建的。有两种类型的仪表板提示可以使用 -

列提示

使用列提示创建的表示变量与列关联,并且它可以取的值来自列值。

要创建演示变量,请转到“新建提示”对话框或“编辑提示”对话框 → 在“变量集”字段中选择“演示变量”→ 输入变量的名称。

变量提示

作为变量提示创建的表示变量不与任何列关联,您需要定义其值。

要创建表示变量作为变量提示的一部分,请在“新建提示”对话框或“编辑提示”对话框中 → 在“提示”字段中选择“表示变量”→ 输入变量的名称。

表示变量的值由创建该变量所用的列或变量提示填充。每次用户在列或变量提示中选择一个值时,呈现变量的值都会设置为用户选择的值。

初始化块

初始化块用于初始化 OBIEE 变量:动态存储库变量、系统会话变量和非系统会话变量。

它包含执行初始化或刷新与该块关联的变量的 SQL 语句。执行的SQL语句指向可以使用连接池访问的物理表。连接池是在初始化块对话框中定义的。

如果您希望初始化块的查询具有特定于数据库的 SQL,您可以为该查询选择数据库类型。

使用初始化块初始化动态存储库变量

初始化块的默认启动字符串字段用于设置动态存储库变量的值。您还可以定义一个计划,Oracle BI 服务器将遵循该计划来执行查询并刷新变量的值。如果将日志记录级别设置为 2 或更高,则为检索变量值而执行的所有 SQL 查询的日志信息将保存在 nqquery.log 文件中。

该文件在 BI 服务器上的位置 -

ORACLE_INSTANCE\诊断\日志\OracleBIServerComponent\coreapplication_obisn

使用初始化块初始化会话变量

会话变量也从初始化块获取它们的值,但它们的值永远不会随着时间间隔而改变。当用户开始新会话时,Oracle BI 服务器会创建会话变量的新实例。

如果在 Identity Manager 用户对象中将日志记录级别设置为 2 或更高,或者在变量管理器中将 LOGLEVEL 系统会话变量设置为 2 或更高,则 BI 服务器为检索会话变量信息而执行的所有 SQL 查询均保存在 nqquery.log 中文件。

该文件在 BI 服务器上的位置 -

ORACLE_INSTANCE\诊断\日志\OracleBIServerComponent\coreapplication_obisn

在管理员工具中创建初始化块

转至管理器 → 变量 → 出现变量管理器对话框。转到“操作”菜单→单击“新建”→“存储库”→“初始化块”→输入初始化块的名称。

转到“计划”选项卡 → 选择开始日期和时间以及刷新间隔。

您可以为初始化块选择以下选项 -

  • 禁用- 如果选择此选项,则禁用初始化块。要启用初始化块,请右键单击变量管理器中的现有初始化块,然后选择启用。通过此选项,您可以在不打开初始化块对话框的情况下更改此属性。

  • 允许延迟执行- 这允许您推迟初始化块的执行,直到在会话期间第一次访问关联的会话变量。

  • 身份验证所需- 如果选择此选项,则必须执行初始化块才能让用户登录。如果初始化块不执行,则用户将被拒绝访问 Oracle BI。