SSAS中的维度安全

SSAS中的维度安全,ssas,olap,cube,Ssas,Olap,Cube,我有一个包含销售数据的SSAS多维数据集。一个维度称为部门,如下所示: 第一级:部门 第2级:成本中心 另一个维度如下所示: 第1级:客户 第二级:会计编号 第三级:发票 有些用户应该只能看到特定的成本中心。我通过为维度部门创建一个角色并限制对维度数据的访问来解决这个问题。到目前为止,这种方法效果良好 现在,我的经理说,不应允许访问受限的用户查看未与受限用户成本中心开展业务的客户的名称 所以我需要限制对维度客户端的访问。但这并不是一件容易的事,因为有成千上万的客户,而且一个客户有一天可以从另一个

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

第2级:成本中心

另一个维度如下所示: 第1级:客户

第二级:会计编号

第三级:发票

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

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

所以我需要限制对维度客户端的访问。但这并不是一件容易的事,因为有成千上万的客户,而且一个客户有一天可以从另一个客户那里与一个新的成本中心做生意。客户也可能有多个属于不同成本中心的账户

我需要一些关于我的选项的信息。 某种类型的子多维数据集是一种选择,还是一个新的多维数据集(听起来有点过头)?另一个选项是在客户维度中创建另一个层次结构,该层次结构使用成本中心、科目和发票。这必须消除客户级别,因为一个客户可以有多个属于不同成本中心的帐户


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

好消息是,您可以在维度安全性中实现这一点

您必须为这些用户设置了角色。在VS中角色的维度数据选项卡中,有一个高级选项卡。在这里,您可以输入MDX,它返回一组用户可以看到的维度成员

维度安全性有很多令人讨厌的问题:

  • 确保在多维数据集维度而不是数据库维度中设置安全性(它们都将列在顶部的下拉列表中,因此很容易选择错误的实例)
  • 在MDX表达式中,仅使用属性层次结构,而不使用“用户”层次结构。否则会出现奇怪的错误
  • 客户端维度的“允许的成员集”表达式应如下所示:

    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")