MDXとは
・ASO(集約ストレージ・オプション)の中で計算式を記述するために使用される言語
・一方、BSOでは 計算関数(@から始まる関数群) および カルク言語 と呼ばれる演算子が提供されている
⇒ ASOで計算式を記述する場合にはMDX式への変換が必要!
MDXの基本
- ""(ダブルクオーテーション)ではなく [](大かっこ) でくくる
- 末尾には;(セミコロン)を 使用しない
/* BSOの場合 */
"Member01"+"Member02";
/* ASOの場合 */
[Member01]+[Member02]
- ドリルダウンは .(ドット) を使用する
[Period].[YearTotal].[H1].[Q1].[Apr]
- クロス演算は ,(カンマ) を使用する
/* BSOの場合 */
"Apr"->"Actual"->"Sales"
/* ASOの場合 */
[Apr],[Actual],[Sales]
主な変換例
(1) Case
・ELSEIFをMDX式に変換する際に使える
BSOの場合
IF(@ISMBR("Member1") OR @ISMBR("Member2"))
0;
ELSEIF(@ISMBR("Member3"))
1;
ELSEIF(@ISMBR("Member4"))
2;
ELSEIF(@ISMBR("Member5"))
3;
ELSE
9;
ENDIF
ASOの場合
IIF([Scenario].CurrentMember IS [Member1] OR
[Scenario].CurrentMember IS [Member2]
,0,
CASE WHEN ([Scenario].CurrentMember IS [Member3]) THEN 1
WHEN ([Scenario].CurrentMember IS [Act_PreAct]) THEN 2
WHEN ([Scenario].CurrentMember IS [Bud_PreAct]) THEN 3
ELSE 9
END
)
(2) Descendants
・指定されたレベルまたは距離にあるメンバーの子孫のセットが戻される
・@MEMBER、@DESCENDANTS、@IDESCENDANTからの変換に使用する
Descendants ( member, [{ layer | index }[, Desc_flags ]])
※【op】はオプション(任意)値
member:メンバー名(自身)
layer:戻される子孫の深さを示すレイヤーを指定【op】
index:戻される子孫の位置を示す、memberからの下位方向への階層の手順数【op】
Desc_flags:メンバー取得方法の詳細を示すキーワード【op】
【SELF】layer内のメンバーのみ取得
【AFTER】layerよりも下位のメンバーを取得。layerは含まない。
【BEFORE】memberとその子孫のうち階層内でlayerよりも高いものを取得。layerは含まない。
【BEFORE_AND_AFTER】AFTERとBEFOREで取得出来るメンバーの両方を取得。layerは含まない。
【SELF_AND_AFTER】layer内のメンバーと、layerよりも下位のすべての子孫を取得。
【SELF_AND_BEFORE】layerまでの、memberとそのすべての子孫を取得。
【SELF_BEFORE_AFTER】memberとそのすべての子孫を取得。
【LEAVES】memberとlayerの間のレベル0の子孫のみを取得。
<例①:自身を含むすべての子孫を取得(IDESCENDANTS)>
関数の場合
@IDESCENDANTS("Market")
MDXの場合
Descendants([Market])
MDXの場合②
Descendants([Market], [Market].level, SELF_BEFORE_AFTER)
<例②:自身を除くすべての子孫を取得(DESCENDANTS)>
関数の場合
@DESCENDANTS("Market")
MDXの場合
Descendants([Market], [Market].level, AFTER)
<例③:自身の配下にあるすべてのレベル0メンバーを取得(RELATIVE、LVL0DESCENDANTS)>
※Market配下の階層は10階層に満たないものと仮定する
関数の場合
@RELATIVE("Market",0)
※ LVL0DESCENDANTS("Market")と同義
MDXの場合
・Marketから10階層下は存在しないので、その間にあるすべての0メンバーが取得される
Descendants([Market], 10, LEAVES)
その②に続く
【PBCS】ASO(集約ストレージ・オプション)- MDX式の利用その②
その他変換方法はこちらを参照