【问题标题】:Exclude members from existing Set using MDX Query使用 MDX 查询从现有集合中排除成员
【发布时间】:2013-02-20 10:19:51
【问题描述】:

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

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

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

公司 (1)
          人力资源 (2)
                人力资源分部 1 (3)
                人力资源分部 2 (4)
          金融 (5)
                财务分 1 (6)
                财务分 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]}

提前致谢。

【问题讨论】:

  • 谁能回答我的问题

标签: ssas mdx


【解决方案1】:

使用下面的 MDX 来完成它

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

代替{Need Trimmed Member Set Here}

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-08
    相关资源
    最近更新 更多