如何管理SSAS表格模型的属性权限

时间:2016-02-07 12:25:17

标签: ssas dax ssas-tabular

我们有一个带有几个Fact表和几个Dim表的Tabular模型。 我们希望管理角色,以便特定角色无法在维度中看到某个属性的成员。

因此,在具有“工作时间”度量的HR多维数据集中 - 我希望阻止特定角色查看“员工姓名”属性,但仍显示总工作人员的“工作时间”总和。

在使用多维时,我只是使用了一个MDX表达式,它过滤了维度的“全部”成员,从而显示了属性的总数而不是成员。 不知道如何在表格模型中这样做。

有人遇到类似的请求吗? 谢谢!

1 个答案:

答案 0 :(得分:0)

是的,表格模型没有为您提供禁用“视觉总计”的选项。所以这并不容易。但是,如果你有创意,你可以做到。如果您还记得计算列是在没有安全性的处理时计算的,那么您可以提前存储所需的汇总。将这些汇总存储在某个位置,即使安全性有效,用户也可以将其读取。在这种情况下,您可能需要将汇总放在一个单独的表中,与员工分开,因为该表中的所有行都将被隐藏。这是一个完整的写作: http://cathydumas.com/2012/05/19/row-security-and-hierarchiespart-1/

但是在您的情况下,因为您要隐藏所有会导致所有相关事实表行由于安全性而消失的Employee表行。所以这就是我的建议。首先,禁用与Employee表的关系。其次,在这种模式之后模拟你的措施:

Work Hours := IF(
 COUNTROWS(Employee)>0,
 CALCULATE(
  SUM(FactHours[Work Hours]),
  USERELATIONSHIP(FactHours[EmployeeKey], Employee[EmployeeKey])
 ),
 SUM(FactHours[Work Hours])
)

这里的逻辑是,如果您的用户看不到任何员工,则不启用该关系。如果您的用户可以看到员工,则启用该关系。