3

MDX 選択クエリでディメンションからいくつかのポイントを除外しようとしています。http://mondrian.pentaho.com/documentation/mdx.phpに記載されている Filter(, ) 関数を使用しました。実行中の MDX は次のとおりです。

  SELECT {[Measures].[AMOUNT]} on 0,  
         {Filter ([DIM1].MEMBERS, [DIM1].CurrentMember NOT IN {[DIM1].[A], [DIM1].[B], [DIM1].[C]})} on 1,
         {[DIM2].[S]} on 2, 
         {[DIM3].[EFO]} on 3, 
         {[CURRENCY].[EUR]} on 4
  from [CUBE]

しかし、Measures.AMOUNT はまだ Dim1.A、Dim1.B、および Dim1.C を考慮しています。親切な方、私の構文の何が問題なのか指摘していただけませんか。私も Except(,) を試しました。

ベスト、ローハン

アップデート :

私を正しい方向に向けてくれた Marc に感謝します。さらにテストを行ったところ、Members 関数もディメンションのすべてのポイントを含むポイント 'All' を返すことがわかりました。そのため、Filter() または Except() 関数がポイントを適切にフィルタリングしていたとしても、「すべて」のポイントにはすべてのポイントの値が含まれていたため、それらが Measure.AMOUNT 計算に含まれていました。代わりに Children 関数を使用しましたが、これは「すべて」のポイントを返さないため、目的の結果が表示されます。以下の MDX を更新

Filter と NOT IN を使用した MDX の操作 (警告: NOT IN は Mondrian 固有の操作です)

 SELECT {[Measures].[AMOUNT]} on 0,  
         {Filter ([DIM1].Children, [DIM1].CurrentMember NOT IN {[DIM1].[A], [DIM1].[B], [DIM1].[C]})} on 1,
         {[DIM2].[S]} on 2, 
         {[DIM3].[EFO]} on 3, 
         {[CURRENCY].[EUR]} on 4
  from [CUBE]

MDX の操作

 SELECT {[Measures].[AMOUNT]} on 0,  
         {except ( {[DIM1].Children}, {[DIM1].[A], [DIM1].[B], [DIM1].[C]} )} on 1,
         {[DIM2].[S]} on 2, 
         {[DIM3].[EFO]} on 3, 
         {[CURRENCY].[EUR]} on 4
  from [CUBE]

ありがとう !

4

2 に答える 2