我需要一个MDX来消除现有集合中的一些成员,我的场景如下
我的维度具有n级父子层次结构,我在PPS仪表板中使用该维度。当用户选择所有孩子和父母一起时,我不应该显示孩子,我应该只显示父母,这适用于任何级别。
下面是一个例子,假设公司是我的维度,并且在主要部门下有人力资源和财务部门和子部门(我在括号中添加了每个部门的主键)。
Company (1) HR (2) HR Sub 1 (3) HR Sub 2 (4) Finance (5) Finance Sub 1 (6) Finance Sub 2 (7)
我使用上面的维度作为"多选树"在我的PPS中,用户可以一次选择HR,HR Sub 1,HR Sub 2。当选择父母下的所有孩子时,我需要排除孩子。
以下是实现它的逻辑
首先获取每个成员的父级,如果成员父级在所选集合中存在,则忽略该成员。为了实现这一点,我写了一个MDX,我能够找到每个成员的父,但我不知道如何检查父是否存在于集合中。
下面的是我写的MDX
WITH SET DeptSet AS '{[Company].[Dept].&[2], [Company].[Dept].&[3],[Company].[Dept].&4], [Company].[Dept].&[6]}'
MEMBER Measures.ParentNode as [Company].Dept].CURRENTMEMBER.PARENT.UNIQUENAME
SELECT [Measures].[EmpCount] on ROWS, {Need Trimmed Member Set Here} on COLUMNS FROM [CUBE]
在上面的MDX" DeptSet"是我从PPS收到的集合,在实现上述逻辑之后我需要得到如下的集合
{[Company].[Dept].&[2], [Company].[Dept].&[6]}
提前致谢。
答案 0 :(得分:1)
在MDX下面使用
[DeptSet] - 过滤器([DeptSet],Count([DeptSet] .CurrentMember.Parent - [DeptSet])= 0)
代替{需要修剪成员在此设置}
请查看以下链接了解更多详情 http://social.msdn.microsoft.com/Forums/en/sqlanalysisservices/thread/a020c70c-2986-4f2c-8f4f-366e8be06c2d