前回の記事はこちら:
【PBCS】ASO(集約ストレージ・オプション)- MDX式の利用その①
主な変換例
(3)IIF
・BSOの IF文 からの変換に使用できる
IIF (
条件式
,
trueの場合の戻り値
,
falseの場合の戻り値
)
BSOの場合
IF(@ISMBR("Account001") OR @ISMBR(@IDESCENDANTS("Account002")))
# Missing;
ELSE
@ROUND("Actual"->(@CURRMBR(Account))->"Currency001"/"Actual"->"Account003"->"Currency001",4);
ENDIF
ASOの場合
IIF([Account].CurrentMember IS [Account001] OR
[Account].CurrentMember IS [Account002],MISSING,
IIF(
Count(
Intersect(
{Descendants([Account002])},{Account.CurrentMember}
)
) = 1,
MISSING,ROUND(([Actual],[Account].CurrentMember,[Currency001])/([Actual],[Account003],[Currency001]),4)
)
)
(4)Intersect
・set1とset2の共通部分が戻される
・@ISMBRからの変換に使用できる
Intersect ( set1, set2 [,ALL] )
※【op】はオプション(任意)値
set1 :set2との共通部分が計算されるセット
set2 :set1との共通部分が計算されるセット
ALL :ALLキーワードの指定により、set1とset2の一致する重複が保持される【op】
<例①>
Intersect({[New York], [California], [Oregon]},{[California], [Washington], [Oregon]})
・戻り値
{[California], [Oregon]}
<例②:ALLキーワードの使用>
Intersect( { [New York], [California], [Florida], [California] },
{ [Oregon], [Washington], [California], [Florida], [California] }, ALL)
・ 戻り値
{ [California], [Florida], [California] }
→ALLキーワードの使用で、重複メンバーをマージせずに返す
<こんな時に使える!>
// ①「Member01」または「Member02」:#MISSING
// ②「Member02」の子孫:100
// ③ ①②以外:777
// ※②はIntersectの戻り値をカウントしており
// 1の時(=「Member02」の子孫と一致した時)にTrueを返す
IIF([Account].CurrentMember IS [Member01] OR
[Account].CurrentMember IS [Member02],MISSING,
IIF(
Count(
Intersect(
{Descendants([Member02])},{Account.CurrentMember}
)
) = 1,
100,777
)
)
次回に続く
その他変換方法はこちらを参照