2

我有一个以PERIOD三个级别命名的维度YEARQUARTER并且MONTH.

我已经过滤掉了三级数据,如下所示:

With SET [*BASE_MEMBERS_Period.Period] AS ' Filter ( [Period.Period].[Month].Members , (NOT( [Period.Period].CurrentMember In { [Period].[All Periods].[FY 2008-2009].[Q4 2008-09].[Mar 2009 ] } ) ) ) ' 

这意味着,我们想要除 之外的所有数据[Mar 2009 ]

现在,我必须为以下要求编写查询:

  1. 获取 YEAR 级别的所有成员的数据...通过应用上面的过滤器。这意味着......成员的价值[FY 2008-2009]应该在排除价值之后出现[Mar 2009]

  2. 获取所有 QUARTER 级别成员的数据...通过应用上面的过滤器。这意味着......成员的价值[Q4 2008-09]应该在排除价值之后出现[Mar 2009]

提前致谢。

4

1 回答 1

0

不确定蒙德里安,但如果它符合 MDX:

首先,您可以使用 - 运算符编写您的集合:

With SET [*BASE_MEMBERS_Period.Period] AS '[Period.Period].[Month].Members - [Period].[All Periods].[Mar 2009 ]'

为了获得您正在寻找的行为,您可以使用subselect

Select
 [Period.Period].[Year] on 0
From
  (Select 
    [Period.Period].[Month].Members - [Period].[All Periods].[Mar 2009 ] on 0 
    from [MyCube] )

从结果中可以看出,2009 年 3 月的数据已被删除。子选择不仅适用于事实数据(参见 VISUAL 标志),还适用于 mdx 函数。您可以检查以下语句,其中还从成员函数中过滤了月份:

Select
 [Period.Period].[Month].members on 0 // -> March 2009 is not there
From
  (Select 
    [Period.Period].[Month].Members - [Period].[All Periods].[Mar 2009 ] on 0 
    from [MyCube] )
于 2011-08-03T13:42:22.670 回答