Logic 维度安全OLAP。阿盖恩

Logic 维度安全OLAP。阿盖恩,logic,ssas,Logic,Ssas,有一个事实表。此事实表由两种类型的用户查看。每个角色都可以访问不同的维度:允许角色A查看特定客户集(c1、c2)的值。允许角色B查看特定事务类型集(t1、t2)的值。实际上,这是动态安全性,但这与此无关,它对确定的集合也同样有效 用户u1属于两个角色,其权限u1(x,y) 所以 因为SSAS安全性是可添加的(角色A或角色B),所以我看到了一切 如果我使用 Role A: x ∈ {c1, c2} AND y ∉ T Role B: x ∉ C AND y ∈ {t1, t2} 那么我只看到 x

有一个事实表。此事实表由两种类型的用户查看。每个角色都可以访问不同的维度:允许角色A查看特定客户集(c1、c2)的值。允许角色B查看特定事务类型集(t1、t2)的值。实际上,这是动态安全性,但这与此无关,它对确定的集合也同样有效

用户u1属于两个角色,其权限u1(x,y) 所以

因为SSAS安全性是可添加的(角色A或角色B),所以我看到了一切

如果我使用

Role A: x ∈ {c1, c2} AND y ∉ T
Role B: x ∉ C AND y ∈ {t1, t2}
那么我只看到

x ∈ {c1, c2} AND y ∈ {t1, t2}
我想要

x ∈ {c1, c2} OR y ∈ {t1, t2}
最好不要装配和/或创建包含所有客户事务排列的维度

是否可以仅使用角色(逻辑)解决此问题


编辑:至少可以说,我的集合代数已经生锈了。我在工作中通常不使用数学(虽然写下一些逻辑比加载数据快得多),请随意更正我的涂鸦。

我认为您应该能够在“角色单元格数据”选项卡中完成此操作。我用一个来自多个维度的成员对此进行了测试

我勾选了“启用读取权限”,并将其放在“允许读取多维数据集内容”框中:

您可以根据需要添加更多的ORs。您必须删除或至少认真考虑维度安全性,以及它将如何与单元安全性交互

请注意,与维度安全MDX框不同,在此框中,MDX应返回逻辑(0,1)值以确定安全性

多亏了GregGalloway在另一个问题中提出的建议,我已经找到了如何扩展IS来处理集合:

(INTERSECT([Customer].CurrentMember,{[Customer].C1,
[Customer].C2,...}).Count>0)

我是SSAS新手,所以我担心将单元格安全性与动态集结合使用会对查询性能产生痛苦的影响,所以我甚至没有考虑它。也许这是唯一的办法。谢谢你的回答!很高兴我能帮上忙。我听说过一些关于手机安全性对性能有影响的事情(我刚刚在一个沙坑立方体上测试过,还没有现场试用过)。如果我的回答对你有用的话,一定要把它标记为答案。
([Customer].CurrentMember IS [Customer].c1) OR     
([TransactionType].CurrentMember IS [TransactionType].t1)
(INTERSECT([Customer].CurrentMember,{[Customer].C1,
[Customer].C2,...}).Count>0)