1

我需要一个 MDX 来消除现有集合中的一些成员,我的场景如下

我有具有 n 级父子层次结构的维度,并且我在 PPS 仪表板中使用该维度。当用户与父母一起选择所有孩子时,我不应该显示孩子,我应该只显示父母,这适用于任何级别。

下面是一个例子,假设公司是我的维度,它在主要部门下有人力资源和财务部门和子部门(我在括号中添加了每个部门的主键)。

公司 (1)    
          人力资源 (2)   
                人力资源分部 1 (3)
                人力资源分部 2 (4)
          金融 (5)   
                财务分 1 (6)
                财务分 2 (7)

我在我的 PPS 中将上述维度用作“多选树”,因此用户可以一次选择 HR、HR Sub 1、HR Sub 2。When selects all child under parent then I need to exclude the children.

下面是实现它的逻辑

首先获取每个成员的父级,如果成员父级存在于所选集中,则忽略该成员。为了实现这一点,我编写了一个 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]}

提前致谢。

4

1 回答 1

1

使用下面的 MDX 来完成它

[DeptSet] - 过滤器([DeptSet], Count([DeptSet].CurrentMember.Parent - [DeptSet])=0)

代替{此处需要修剪的成员集}

查看以下链接了解更多详情 http://social.msdn.microsoft.com/Forums/en/sqlanalysisservices/thread/a020c70c-2986-4f2c-8f4f-366e8be06c2d

于 2013-02-21T13:41:58.803 回答