关于筛选器

筛选器控制对多维数据集内数据值的安全访问权限。筛选器是粒度最小的可用安全形式。

创建筛选器即是为特定的多维数据集单元格或一系列单元格指定一组限制。随后可以将筛选器分配给用户或组。

您自己的安全角色可确定您是否可以创建、分配、编辑、复制、重命名或删除筛选器:

  • 如果您具有“应用程序管理者”角色,则可以管理任何用户或组的任何筛选器。筛选器不会影响您。
  • 如果您具有“数据库更新”角色,则可以管理您创建的应用程序的筛选器。
  • 如果您具有“数据库管理者”角色,则可以管理您的应用程序或多维数据集的筛选器。
  • 如果您具有“数据库访问”角色(默认角色),则可以对所有单元格中的数据值进行读取访问,除非筛选器对您的访问权限进行了进一步限制。

创建筛选器

可以为一个多维数据集创建多个筛选器。如果您编辑某个筛选器,则对该筛选器的定义进行的修改会自动由该筛选器的所有用户继承。

请参见 "Controlling Access to Database Cells Using Security Filters"。

  1. 导航到筛选器编辑器。

    Redwood 界面中:

    1. 应用程序页上,依次打开应用程序和数据库(多维数据集)。
    2. 依次单击定制筛选器

    经典 Web 界面中:

    1. 应用程序页上,展开应用程序。
    2. 从多维数据集名称右侧的“操作”菜单,启动检查器。
    3. 选择筛选器选项卡。
  2. 单击添加
  3. 筛选器名称文本框中输入筛选器名称。
  4. 在筛选器编辑器中,单击添加
  5. 访问下,单击并从下拉菜单中选择访问级别。
    • 无:无法检索或更新数据

    • 读取:可以检索数据,但无法更新数据

    • 写入:可以检索和更新数据

    • MetaRead:可以检索和更新元数据(维名称和成员名称)

      MetaRead 访问级别覆盖所有其他访问级别。其他数据筛选器是在现有的 MetaRead 筛选器中实施的。(使用 AND 关系)对成员组合的筛选不适用于 MetaRead。MetaRead 分别筛选每个成员(使用 OR 关系)。

  6. 选择成员规范下的行并输入成员名称,然后单击提交 Redwood 筛选器“提交”图标的图像。

    您可以单独筛选成员,也可以筛选成员组合。指定由函数或替代变量名称定义的维或成员名称、别名、成员组合、成员集合,函数或替代变量名称前面是一个与号 (&)。用逗号分隔多个条目。

  7. 根据需要为筛选器创建其他行。

    如果筛选器行重叠或冲突,则会应用更详细的多维数据集区域规范(而非不太详细的规范)和更宽松的访问权限(而非更严格的访问权限)。例如,如果您授予用户对 Actual 的 Read 访问权限,对 Jan 的 Write 访问权限,则用户将对 Jan Actual 具有 Write 访问权限。

  8. 单击验证以确保筛选器有效。
  9. 单击保存

要在 Redwood 界面中编辑筛选器,请通过依次选择多维数据集和“定制”页,找到“筛选器”选项卡。然后,在筛选器编辑器中通过单击筛选器名称并进行更改来编辑筛选器。要编辑现有行,请在相应行中双击。

要在经典 Web 界面中编辑筛选器,请转到检查器中的“筛选器”选项卡,然后在筛选器编辑器中通过单击筛选器名称并进行更改来编辑筛选器。

您可以单击筛选器名称旁的“操作”菜单并选择选项,用来复制、重命名或删除筛选器。

创建筛选器后,将其分配给用户或组。

创建高效的动态筛选器

您可以基于外部源数据创建动态筛选器,以减少所需的筛选器定义数量。

您可以根据成员和用户名筛选对外部源数据中多维数据集单元格的访问,而不是为多个用户管理一组硬编码的数据访问筛选器。
您将使用动态筛选器定义语法执行此操作,包括方法 @datasourceLookup 与变量 $LoginUser$LoginGroup。您的外部源数据是一个 csv 文件或关系表。对于关系源数据,您可以将 .csv 加载到关系表中。

动态筛选器语法

使用动态筛选器语法可创建可以分配给多个用户和组的灵活筛选器。

除了成员表达式之外,筛选器行还可以包含以下元素作为其定义的一部分。

$loginuser

此变量存储在运行时当前登录用户的值。可以将它与 @datasourcelookup 方法一起使用。

$logingroup

此变量存储当前已登录用户所属的所有组的值。它包括直接组和间接组。与 @datasourcelookup 方法一起使用时,将根据数据源分别查找每个组。

@datasourcelookup

此方法从数据源提取记录。

语法

@datasourcelookup (dataSourceName, columnName, columnValue, returnColumnName)
参数 说明
dataSourceName

Essbase 中定义的外部数据源的名称。对于应用程序级别的数据源,请以应用程序名称和一个句点作为名称的前缀。

columnName

要在其中搜索给定 columnValue 的数据源列的名称。

columnValue

要在 columnName 中搜索的值。

returnColumnName

要从中返回值列表的数据源列的名称。

说明

@datasourcelookup 调用等效于以下 SQL 查询:

select returnColumnName from dataSourceName where columnName=columnValue

@datasourcelookup 查找给定的数据源并搜索 columnName 包含 columnValue 的记录。如果您将 columnValue 指定为 $loginuser,则此方法将搜索 columnName 包含当前登录用户的名称的记录。

Essbase 通过将列表元素组合为逗号分隔的字符串来构成筛选器定义行。如果有任何记录包含特殊字符、空格或仅包含数字,则会将它们用引号括起来。

示例

用引号将参数括起来。

以下调用查找一个全局数据源,并返回 Mary 是店铺经理的店铺名称列表。

@datasourceLookup("StoreManagersDS","STOREMANAGER","Mary","STORE")

以下调用查找一个应用程序级别的数据源,并返回当前登录用户是店铺经理的店铺名称列表。

@datasourceLookup("Sample.StoreManagersDS","STOREMANAGER","$loginuser","STORE")

以下调用查找一个应用程序级别的数据源,并返回店铺部门与当前已登录用户所属的任意组匹配的店铺名称的列表。

@datasourceLookup("Sample.StoreManagersDS","STORE_DEPARTMENT","$logingroup","STORE")

如果已登录用户属于 3 个组,则上面的 @datasourcelookup 方法将返回每个组的所有匹配列值。

用于创建动态筛选器的工作流

使用以下一般工作流来创建动态筛选器。

此动态筛选器工作流假设您已具有多维数据集并且已预配了用户和组。

  1. 标识数据源,它是文件还是关系源。
  2. Essbase 中在全局或应用程序级别定义连接和数据源。
  3. 在多维数据集级别创建筛选器:
    • Redwood 界面中,导航到多维数据集,依次选择定制筛选器
    • 经典 Web 界面中,使用数据库检查器的筛选器部分。

  4. 根据需要使用动态筛选器语法通过 $loginuser 变量、$logingroup 变量和 @datasourcelookup 方法为每个筛选器定义筛选器行。
  5. 将筛选器分配给用户或组。
  6. 如果已将筛选器分配到组,则将该组分配到要筛选的应用程序:
    • Redwood 界面中,导航到应用程序,依次选择定制权限
    • 经典 Web 界面中,使用应用程序检查器的权限部分。

动态筛选器示例

以下动态筛选器用于处理名为 Efficient.UserFilters 的多维数据集。该多维数据集是库中提供的一个示例模板。


包含三行的动态筛选器,用于向登录用户授予 MetaRead 访问权限。

要了解如何创建和应用此动态筛选器,请从库的 "Technical" 部分下载工作簿模板 Efficient_Filters.xlsx,并根据此工作簿中的 README 说明进行操作。库在 Essbase Web 界面的文件部分中提供。