通过关系数据库用户和机构关联映射表,实现多维分析数据权限,即不同的用户登录打开同一张多维分析看到的数据不同。
下面以产品示例mondrian多维数据源的Cube【sales】下的商店维度为例,来演示如何实现不同用户登录根据映射机构获取不同成员数据。
设置数据权限。在数据连接资源树中选中需要设置数据权限的多维数据集,更多操作菜单选择设置数据权限。会进入数据权限窗口,如下图:
在数据权限窗口,右键选择对应的机构维度,如本示例中选择商店维度,在右键菜单中选择 设置,会进入数据权限设置窗口。
在数据权限设置窗口左侧树中选择”商店“节点,在其更多操作菜单中选择 设置:
选择数据权限设置方式为【高级设置】,根据需要设置根节点表达式和合法性表达式。
根节点表达式 | 通过MDX语句设置用户可以访问的层次结构的最顶层成员,返回的是一个成员集。 |
合法性表达式 | 通过MDX语句来判断哪些成员可以访问,是对该层次结构所有成员的访问合法性校验 |
若想取到权限内的成员和子孙成员,需要在合法性表达式中书写MDX语法类似如下:
Count( Intersect( { [商店].CurrentMember }, StripCalculatedMembers( Extract( { [商店].CurrentMember }, [商店] ) ) ) ) = 0 OR Count( Intersect( { Ancestor( [商店].CurrentMember, [商店].[中国].[华东].level ) }, { [商店].[中国].[华东] } ) ) > 0 |