使用MDX查询从现有Set中排除成员

时间:2013-02-20 10:19:51

标签: ssas mdx

我需要一个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]}

提前致谢。

1 个答案:

答案 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

相关问题