IF
EssbaseのIF計算コマンドは、式で条件付きテストを実行します。IF文を使用すると、ブール・テストと、テストがTRUEまたはFALSEのいずれかの値を返した場合に計算される数式を定義できます。
構文
IF( condition ) statement ; [ ...statement ; ] [ ELSEIF...statement | ELSE...statement]
ENDIF;
ノート
-
ENDIF文とセミコロンをIF、ELSE、ELSEIFの各文と一緒に使用する方法については、ENDIFを参照してください。
-
計算スクリプトでは、IF文はカッコ内に配置し、特定のデータベース・メンバーに関連付ける必要があります。また、ENDIF文で終了する必要があります。
-
IF文内では、属性を@ATTRIBUTEと@WITHATTRを使用して指定できます。この例は
IF (@ISMBR(@ATTRIBUTE(Can))) ...
です。属性関数を使用する必要があります。IF(@ISMBR(Can))
はサポートされません。
例
例1
IF(
@ISMBR(@DESCENDANTS(Europe))
OR @ISMBR(@DESCENDANTS(Asia))
)
Taxes = "Gross Margin" * "Foreign Tax Rate";
ELSE
Taxes = "Gross Margin" * "Domestic Tax Rate";
ENDIF;
このテストでは、現在のセルにEuropeメンバーまたはAsiaメンバーの子孫であるメンバーが含まれているかどうかを確認します。含まれている場合、式は外国の税率に基づいてメンバーの税金を計算します。現在のセルにこれらのグループのいずれかのメンバーが含まれていない場合は、国内税率が税計算に使用されます。
例2
IF文を計算スクリプトのメンバー式の一部として使用する場合は、次の両方のタスクを実行する必要があります。
-
IF文の単一メンバーへの関連付け
-
IF文をカッコで囲む
次の例に、サンプルIF文を示します。
Profit
(IF (Sales > 100)
Profit = (Sales - COGS) * 2;
ELSE
Profit = (Sales - COGS) * 1.5;
ENDIF;)
Essbaseはデータベースを循環し、次の計算を実行します。
-
IF文は、現在のメンバーの組合せのSalesの値が100を超えるかどうかを確認します。
-
Salesが100を超える場合、Essbaseは、Salesの値からCOGSの値を減算し、その差に2を乗算し、結果をProfitに配置します。
-
Salesが100以下の場合、Essbaseは、Salesの値からCOGSの値を減算し、その差に1.5を乗算し、結果をProfitに配置します。
IF ... ENDIF文全体がカッコで囲まれ、ProfitメンバーであるProfit (IF(...)...)に関連付けられます。