方式一:映射设置
1、新建多维分析。使用admin登录,使用Cube【Sales】新建多维分析保存在公共目录下,命名为"机构权限多维分析"。行上选择Store维的USA、CA、OR和WA成员;列上选择度量值成员。创建好后多维分析发布到浏览中。
2、新建两个用户组,其用户组名分别设置为CA和OR。
3、新建用户。在CA用户组下新建一个用户test1,设置其角色为普通角色;在OR用户组下新建一个用户test2,设置其角色为普通角色。
4、权限设置。把多维分析"机构权限多维分析"的查看权限赋给普通角色。
5、数据权限映射设置。打开 定制管理 -> 数据管理 -> 多维数据源节点。
- 选择多维数据源下的Cube【Sales】,右键选择 设置数据权限,进入数据权限设置界面。
- 在【Sale】节点下找到Store维度的层次结构节点,右键选择 设置 选项。
- 在右侧设置区选择映射设置。例外角色选择管理角色。映射关系设置为成员名称等于用户组名称。如下图:
- 点击右下角的保存按钮。
6、查看效果。分别使用admin、test1、test2用户登录打开"机构权限多维分析"查看效果。
方式二:简单设置
1、新建多维分析。使用admin登录,使用Cube【Sales】新建多维分析保存在公共目录,命名为"机构权限多维分析"。行上选择Store维的USA、CA、OR和WA成员;列上选择度量值成员。把此多维分析下发布到浏览中。
2、新建两个用户组,其用户组名分别设置为CA和OR。不赋任何角色。
3、新建用户。在CA用户组下新建一个用户test1;在OR用户组下新建一个用户test2。不赋任何角色。
4、新建角色。在CA用户组下新建一个角色test1;在OR用户组下新建一个角色test2。要求这两个角色权限设置为:其对应的用户可以打开"机构权限多维分析"浏览数据。其中角色test1赋给用户test1,角色test2赋给用户test2。
5、数据权限映射设置。打开 定制管理 -> 数据管理 -> 多维数据源节点。
- 选择多维数据源下的Cube【Sales】,右键选择 设置数据权限,进入数据权限设置界面。
- 在【Sale】节点下找到Store维度的层次结构节点,右键选择设置选项。
- 在右侧设置区选择简单设置。添加角色test1,设置其可见成员为CA;添加角色test2,设置其可见成员为OR。如下图:
- 点击右下角的保存按钮。
6、查看效果。分别使用admin、test1、test2用户登录打开"机构权限多维分析"查看效果。
注意:如果用户有两个以上的角色,数据权限取的是用户所有角色数据权限的并集。
方式三:高级设置
1、在应用高级设置方式时,通常需要先创建一个用户属性,获取到当前用户所属的机构信息,用来设置合法性表达式。创建用户属性的过程,请参考用户属性章节。
2、选择相应的多维数据集,右键选择 设置数据权限 ,在右侧设置界面上,找到对应的机构维。在其上点击右键菜单中的“设置”菜单项,然后做如下设置。
3、其中的根节点表达式,使用 MDX 表达式的写法,返回用户所能访问的全部成员集合。可以参考如下示例写法。
filter( [分支机构].[分支机构].allmembers, ( InStr("^A_当前用户所属机构^" , "," + [分支机构].[分支机构].CurrentMember.properties("KEY")+"," ) <> 0 or InStr("^A_当前用户所属机构^" , ",000" + [分支机构].[分支机构].CurrentMember.properties("KEY")+"," ) <> 0 ) )
4、合法性表达式用来判断根节点之下的所有节点,能否被当前用户访问。使用 MDX 表达式的写法,判断当前维成员的合法性。可以参考如下示例写法。
Count( StripCalculatedMembers( { [分支机构].[分支机构].CurrentMember } ) ) = 0 Or Count( Filter( Ascendants( [分支机构].[分支机构].CurrentMember ), ( InStr("^A_当前用户所属机构^" , "," + [分支机构].[分支机构].CurrentMember.properties("KEY")+"," ) <> 0 or InStr("^A_当前用户所属机构^" , ",000" + [分支机构].[分支机构].CurrentMember.properties("KEY")+"," ) <> 0 ) ) ) > 0