1

これが可能かどうか、または MDX に関する限られた知識が間違った方向に進んでいるかどうかはわかりません...

私が扱っているキューブには、日付[Statement Dates][Premium Dates]. さらに、それぞれの階層は次のようになります。

[Statement Dates].[Statement Year].[2008]  
[Payment Dates].[Payment Year].[2008]

私が実装しているビジネスロジックでは、次のようなことをする必要があります:

select
  ({ [Measures].[Commission] }) on columns,
  ({[Products].[Product Category]}) on rows
from [Cube]
where
(
  IIF( [Products].[Product Category].CurrentMember.Name = "Some Category",
       [Statement Dates].[Statement Year].[2008], 
       [Payment Dates].[Payment Year].[2008] )
)

そのため、使用されている製品カテゴリに基づいて、年をフィルター処理するために使用するディメンションを識別する必要があります。

これは問題なく解析され、クエリは実行されますが、数値は、IIFステートメントが常に false を返すことを示唆しているようです。

4

1 に答える 1

3

WHERE 句が最初に評価されるため、IIF の .CurrentMember 関数は「すべての製品カテゴリ」のみを表示します。この場合、コンテキスト内の唯一の製品カテゴリは「すべての製品カテゴリ」であるため、[製品].[製品カテゴリ].CurrentMember.Name が「一部のカテゴリ」と等しくなることはありません。

考えられる回避策の 1 つは、次のような計算を行うことです。

WITH MEMBER Measures.Commission2 as 
SUM(
{[Products].[Product Category].[Product Category].Members}
, IIF( [Products].[Product Category].CurrentMember.Name = "Some Category"
   , ([Statement Dates].[Statement Year].[2008],[Measures].[Commission])
   , ([Payment Dates].[Payment Year].[2008].[Measures].[Commission]) )
)
select  
   ({ [Measures].[Commission2] }) on columns
,  ({[Products].[Product Category]}) on rows
from [Cube]

この種のことを行うために、キューブの計算スクリプトで範囲指定された割り当てを行うこともできます。

于 2008-11-10T02:16:47.247 に答える