我有一个名为PERIOD
的维度,其中包含三个级别YEAR
,QUARTER
和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 ]
以外的所有数据。
现在,我必须针对以下要求编写查询:
通过应用上面的过滤器获取YEAR级别所有成员的数据。
这意味着......成员[FY 2008-2009]
的价值应该在排除[Mar 2009]
的价值之后出现。
通过应用上面的过滤器来获取QUARTER级别的所有成员的数据。
这意味着......成员[Q4 2008-09]
的价值应该在排除[Mar 2009]
的价值之后出现。
提前致谢。
答案 0 :(得分:0)
不确定Mondrian,但如果它符合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月的数据已被删除。 Subselect不仅适用于事实数据(请参阅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] )