使用 DAX 的 SSAS RLS 实现

SSAS RLS implementation with DAX

我有一个 SSAS 表格多维数据集,其中包含一个名为 Projects 的 table,其中包含 Project_Managers、Special_Projects 等列以及其他列。

Special_Projects 是一个布尔值列,值为 1 或 0,表示项目是否标记为特殊项目。

我正在这个 SSAS 表格多维数据集中实施基本 RLS,我创建了一个角色 - 'PMs with access to Special projects'。现在,我正在尝试使用 DAX 来 select 仅来自项目 table 的那些行,其中 Special_Projects=1

我尝试了一些 DAX 公式,例如 CALCULATETABLE()EVALUATE(),但它们没有用。

项目 table 上的行级安全过滤器应该是:

=Projects[Special_Project]

这些过滤器应该 return 一个布尔值,并且表达式为真的行对用户可见。

以上假定该列是您所说的布尔类型。如果是 1 或 0 则尝试:

=Projects[Special_Project]=1

如果您需要检查另一个 table 并过滤当前 table 中的列,请尝试:

=IF(CONTAINS('vwUser',vwUser[Login],USERNAME()) ,Projects[Special_Project]=TRUE() ,Projects[Special_Project]=FALSE())

应该向 vwUser table 中的用户显示特殊项目,向不在 table 中的用户显示其他项目。