多维分析报表的是通过MDX语句来进行查询并生成多维报表。
对某维度层次结构设置了数据权限,在定制多维分析时若没有选择该维度成员,系统默认在MDX语句的添加上过滤内容。
比如报表对应的执行MDX语句为:
SELECT SubSet(Hierarchize(Distinct({[Measures].[Unit Sales]})),0,100) ON COLUMNS,
Hierarchize(Distinct({ [商店].[城市].ALLMEMBERS})) ON ROWS
FROM [Sales]
如果要实现不同的用户登录进来看到的数据不同,我们需要给这个报表对应MDX加过滤条件,如下
当广州用户登录其执行的MDX语句为:
SELECT SubSet( Hierarchize( Distinct( { [Measures].[Unit Sales] } ) ), 0, 100 ) ON COLUMNS,
Filter( Hierarchize( Distinct( { [商店].[城市].ALLMEMBERS } ) ), Count( StripCalculatedMembers( { [商店].CurrentMember } ) ) = 0 Or Count( Filter( Ascendants( [商店].CurrentMember ), [商店].CurrentMember.Name = "广州" ) ) > 0 ) ON ROWS
FROM [Sales]
一般多维分析实际应用的场景中,数据权限对应的维度成员要求是根据不同的用户动态变化的。
这样就需要在参数或是使用自定义命名集/成员结合函数GetUserAccessibleMembers()一起使用。
GetUserAccessibleMembers() | 获取指定维度层次中当前用户具有数据访问权限的成员。参数有两个:
|