MDX では比較的簡単なはずのことを達成するのに少し苦労しています。特定の時点での過去 2 週間のメジャーの 1 つの合計を提供する計算メンバーを作成したいと考えています。私の時間ディメンションは次のようになります。
TimeId TradingDate Day of Week
-----------------------------------
1000 11/1/2012 Thursday
1001 11/2/2012 Friday
1002 11/5/2012 Monday
1003 11/6/2012 Tuesday
... ...
これを特に困難にしているのは、私の時間次元が完全ではないということです。時間ディメンションのメンバーは、株式市場の取引日のみに対応しており、すべての時間に対応しているわけではありません。これは、週末、祝日、または株式市場が閉まっているその他の日が除外されることを意味します。LAG
これはまた、やなどの時間をトラバースする通常の方法は、PARALLELPERIOD
ここではまったく機能しないことも意味します。 LAG(14)
、たとえば、「14 取引日」を意味し、任意の時点で実際の時間の可変長を表すことができます。
計算メンバー内で、CurrentMember の過去 2 週間以内にある時間メンバーのみを取得するために FILTER を使用しようとしています。ただし、これを達成するための適切な構文 (ある場合) を理解できないようです。次のようなものになると思います。
WITH MEMBER [Sum of Price Previous 2 Weeks] AS
SUM(
FILTER(
[Time].[TimeId].Children
, [Time].[TradingDate].MemberValue
>= VBA!DATEADD("ww", -2, [Time].[TradingDate].CurrentMember.MemberValue)
)
, [Price]
)
ただし、これはまったく機能しません。計算されたメンバーの現在の反復のコンテキストを、関数内の別のコンテキストから切り離すことはできないようですFILTER
。つまり、次のように言う方法がわかりません。
"内のセットを反復処理する場合
FILTER
、各反復の現在のメンバーを、計算されたメンバーのスコープ内の CurrentMember の値と比較します"
私が達成しようとしていることは可能ですか?私が求めていることを達成するために取ることができる別のアプローチはありますか?