Security 聚合-基于父子层次结构的SSAS动态安全性
我想建立以下SSAS安全局势: 我创建了相应的角色来过滤数据,Security 聚合-基于父子层次结构的SSAS动态安全性,security,ssas,parent-child,mdx,olap,Security,Ssas,Parent Child,Mdx,Olap,我想建立以下SSAS安全局势: 我创建了相应的角色来过滤数据,user1只能看到伦敦100,从这里也可以看到英国100的聚合。 我还有一个无事实维度,它将DimUsers和DimBranch关联成多对多关系 请求是user1只能看到伦敦100(就像以前一样),而不是UK-100,他需要看到全英国(150)。可以在SSAS中实现吗?在设置维度安全性时,您是否签出了“启用可视总计”选项 听起来好像你已经启用了这个选项,这使得英国的总数达到100。默认情况下,它将被禁用,这将给出所需的结果Lond
user1
只能看到伦敦100,从这里也可以看到英国100的聚合。
我还有一个无事实维度,它将DimUsers和DimBranch关联成多对多关系
请求是user1只能看到伦敦100(就像以前一样),而不是UK-100,他需要看到全英国(150)。可以在SSAS中实现吗?在设置维度安全性时,您是否签出了“启用可视总计”选项
听起来好像你已经启用了这个选项,这使得英国的总数达到100。默认情况下,它将被禁用,这将给出所需的结果London=100,UK=150。对,很抱歉没有注意到您的分支维度是父-子维度,即使这在问题标题中 我已经设置了一个测试多维数据集来镜像您的设置(据我所知)。我忽略了设置自定义MDX角色安全性时出现的愚蠢错误“找不到维度用户”;忽略一个事实,即在SSDT(又名VisualStudio)多维数据集浏览器中,这种自定义安全性不起作用。让我们把这归结为SSDT UI是一个POS,因为在SSMS MDX查询中,我得到了我期望的结果 这是我的表:
BranchID ParentID BranchName
1 NULL Scotland
2 NULL England
3 1 Glasgow
4 1 Edinburgh
5 2 Bristol
6 2 London
分支维度上有两个层次结构:一个称为BranchID(仅在属性BranchID上),另一个称为ParentChild,这是使用ParentID的父子层次结构
我通过在“允许的成员集”框中使用以下表达式来限制“受限”用户对Branch.ParentChild层次结构的访问:
NONEMPTY(Branches.[ParentChild].members,
(Measures.UserBranchAccess,StrToMember("[Users].[" + UserName + "]")))
因此,现在我通过填充一个我称为UserBranchAccess的表,将对所有分支的访问权授予“受限访问”用户。(我称之为UserBranchAccess的结果计数度量)。然后通过删除相应的行来删除对Bristol的访问
在SSMS中运行此查询,并将EffectiveUserName设置为“受限用户”,我得到的结果正是您想要的结果:
SELECT
NONEMPTY(Branches.[ParentChild].members,
(Measures.UserBranchAccess,StrToMember("[Users].[" + UserName + "]")))
ON 0
FROM [Test Dimensions]
结果:
All England London Scotland Edinburgh Glasgow
700 550 50 150 50 100
(此处显示了我的默认度量值Branch Total——请注意,布里斯托尔的500未显示,但包含在英格兰总计中)
然后,我尝试取消“受限”用户访问布里斯托尔和英格兰的权限。我得到了完全相同的结果
让我们看看“安全性”度量UserBranchAccess发生了什么变化:
SELECT
Branches.[ParentChild].members ON 0
FROM [Test Dimensions]
WHERE
(UserBranchAccess,Users.[User ID].[RestrictedUser])
结果:
All England Bristol London
4 1 (null) 1
(为清晰起见,未显示)
英格兰是被允许的,因为至少有一个孩子是被允许的
为了确保没有遗漏任何处理,我在分支维度的(非父子)层次结构上执行了相同的查询:
SELECT Branches.[BranchID].Members ON 0
FROM [Test Dimensions]
WHERE
(UserBranchAccess,Users.[User ID].[EMEA\martinhe])
结果与预期的一样:England在普通BranchID层次结构中不被明确允许,但在父子层次结构中被允许(参见前面的结果):
All Bristol England London
4 (null) (null) 1
(同样,为清晰起见,未显示苏格兰)
所以底线是,我无法重现你所面临的问题,即(使用我的数据)伦敦将显示50,英格兰也将仅显示50
但也许您可以确定您的设置与我的不同之处?我使用以下MDX脚本
非空([Dim Branch hierarchys].[Branch Hierarchy].[Branch Hierarchy].[franch Hierarchy].[Measures].[grated],strotmember([Dim Users].[Account Name].&[“+UserName()+”))限制多维数据集中的层次结构维度数据
所有属性的“启用可视化总计”都已禁用我刚刚意识到您的分支维度是父子维度,我认为这会有所不同。我试图复制您的多维数据集结构,但当我试图用MDX脚本保护维度数据时,我遇到了这个令人讨厌的错误。(尽管我使用的是SSAS 2014)。找不到有效的解决方案。。。