SSAS 中的维度安全性

Dimension security in SSAS

我有一个包含销售数据的 SSAS 多维数据集。一个维度称为部门,如下所示: 等级1:Department

水平2:Cost中心

另一个维度是这样的: 级别 1:客户

二级:账号

3 级:发票

有些用户应该只能看到特定的成本中心。我通过为维度部门创建角色和对维度数据的有限访问来解决这个问题。到目前为止效果很好。

现在我的经理说,不应允许具有受限访问权限的用户查看未与受限用户成本中心开展业务的客户的名称。

所以我需要限制对维度Client的访问。但这并非易事,因为有数以千计的客户,并且某天某个客户可能会与另一个客户在新的成本中心开展业务。一个客户也可能有多个账户,属于不同的成本中心。

我需要对此处的选项进行一些输入。 某种子多维数据集是一个选项,还是一个新的多维数据集(听起来有点夸张)?另一种选择是在使用成本中心、帐户和发票的客户维度中创建另一个层次结构。这将不得不消除客户级别,因为客户可以拥有属于不同成本中心的多个帐户。

欢迎任何输入,我不需要确切的解决方案,但需要指导...

好消息是您可以在 Dimension Security 中执行此操作。

您必须为这些用户设置角色。在 VS 中 Role 的 Dimension Data 选项卡中,有一个 Advanced 选项卡。在这里可以输入MDX,returns用户可以看到的一组维度成员。

维度安全有很多令人讨厌的陷阱:

  1. 确保在 cube 维度中设置安全性,而不是 database 维度(它们都将列在下拉列表中在顶部,所以很容易 select 错误的实例)。
  2. 在您的 MDX 表达式中,仅使用属性层次结构,而不是 "user" 层次结构。否则你会得到奇怪的错误。

客户维度的 "Allowed member set" 表达式应该是这样的:

EXISTS([Client].[An attribute hierarchy].Members,
{A set of cost centers the user is allowed to see},
"Name of a measure group that will have a non-NULL value if the client has 
 had dealings with the cost centre")

例如,我想出的用于检查我正在处理的多维数据集的表达式(将客户限制为购买特定品牌的人)是:

EXISTS([Customer].[Customer Key].Members,[Product].[Brand].&[MH],"OrderItems")