2

PERIODと の3 つのレベルYEARで名前が付けられたディメンションがQUARTERありMONTHます。

次のように、第 3 レベルのデータを除外しました。

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

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 月のデータは削除されています。サブセレクトは、ファクト データ (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 に答える