版本比较
标识
- 该行被添加。
- 该行被删除。
- 格式已经改变。
示例说明
通过关系数据库用户和机构关联映射表,实现多维分析数据权限,即不同的用户登录打开同一张多维分析看到的数据不同。
- 如下图,用户test1打开多维分析,只能看到华北和华南成员。
...
Image Added
- 如下图,用户test2打开同一张多维分析,可以看到华北、华南和华东成员。
...
Image Added
下面以产品示例mondrian多维数据源的Cube【sales】下的商店维度为例,来演示如何实现不同用户登录根据映射机构获取不同成员数据。
...
实现步骤
- 创建映射表。如下图,创建用户和机构的映射表,如test1用户可以访问的机构是华南、华北。在关联中需要书写这些成员对应的ID([商店].[地区].[华北],[商店].[地区].[华南])。
Image Modified
创建用户属性。在 公共设置>用户属性 下新建用户属性,实现根据当前用户获取映射表中的机构,如下图:
...
Image Added
- 创建多维分析。根据需要创建多维分析,如下图此多维分析包含商店维度地区层次下的所有成员。
...
Image Added
...
设置数据权限。在数据连接资源树中选中需要设置数据权限的多维数据集,更多操作菜单选择设置数据权限。会进入数据权限窗口,如下图:
...
Image Added
在数据权限窗口,右键选择对应的机构维度,如本示例中选择商店维度,在右键菜单中选择 设置,会进入数据权限设置窗口。
...
在数据权限设置窗口左侧树中选择”商店“节点,在其更多操作菜单中选择 设置:
Image Added
选择数据权限设置方式为【高级设置】,根据需要设置根节点表达式和合法性表达式。根节点表达式
通过MDX语句设置用户可以访问的层次结构的最顶层成员,返回的是一个成员集。
合法性表达式
通过MDX语句来判断哪些成员可以访问,是对该层次结构所有成员的访问合法性校验
...
Image Added
若想取到权限内的成员和子孙成员,需要在合法性表达式中书写MDX语法类似如下:代码块 Count( Intersect( { [商店].CurrentMember }, StripCalculatedMembers( Extract( { [商店].CurrentMember }, [商店] ) ) ) ) = 0 OR Count( Intersect( { Ancestor( [商店].CurrentMember, [商店].[中国].[华东].level ) }, { [商店].[中国].[华东] } ) ) > 0
- 浏览查看效果。分别使用test1用户和test2用户登录系统打开多维分析浏览效果。
面板 | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
|