計算スクリプトでの式の使用
計算スクリプトにメンバー式を配置できます。 その場合、式はデータベース・アウトラインのメンバーに適用される競合する式を上書きします。
計算スクリプトでは、次の両方の操作を実行できます:
-
データベース・アウトラインでのメンバー式の計算
-
フォーミュラの定義
データベース・アウトラインのメンバーに適用される式を計算するには、メンバー名の後にセミコロン(;)を付けて使用します。 たとえば、次のコマンドは、データベース・アウトラインのVarianceメンバーに適用される式を計算します:
Variance;
アウトラインの計算結果の値を上書きするには、計算スクリプトで定義した式を手動で適用します。 たとえば、次の式はデータベースを循環し、メンバーPayroll、MarketingおよびMiscに値を追加して、その結果をExpensesメンバーに配置します。 式は、データベース・アウトラインのExpensesメンバーに配置された式を上書きします:
Expenses = Payroll + Marketing + Misc;
ノート:
共有メンバーまたはラベルのみのメンバーには式を適用できません。
参照:
「ブロック・ストレージ・データベースの式の開発」も参照してください。
基本方程式
計算スクリプトで式を使用して、メンバーに値を割り当てることができます。 等式の構文は次のとおりです:
member = mathematical_expression;
memberはデータベース・アウトラインのメンバー名で、mathematical_expressionは任意の有効な数式です。
Essbaseは式を評価し、指定されたメンバーに値を割り当てます。
次の例では、Essbaseがデータベースを循環し、販売の値から売上原価の値を減算して、マージンに結果を配置します:
Margin = Sales - COGS;
この例では、Essbaseがデータベースを循環し、Retailの値からCostの値を減算して、Retailの値の割合として結果値を計算し、その結果をMarkupに配置します:
Markup = (Retail - Cost) % Retail;
式では、> (より大きい)および< (より小さい)論理演算子も使用できます。
次の例では、February salesがJanuary salesより大きい場合、Sales Increase Flagの値は1になり、falseの場合、結果は0になります:
Sales Increase Flag = Sales -> Feb > Sales -> Jan;
条件式
計算スクリプトでメンバー式の一部としてIF文を使用する場合は、次のことを行う必要があります:
-
IF文を単一のメンバーに関連付けます
-
IF文をカッコで囲みます
次の例では、IF…ENDIF文全体がカッコで囲まれ、ProfitメンバーProfit (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に格納します。
相互依存Formula
計算スクリプトで相互依存式を使用する場合は、IF文と同じルールが適用されます。 次の内容を実行する必要があります。
-
式を単一のメンバーに関連付けます
-
式をカッコで囲みます
次の例では、式全体がカッコで囲まれ、期首インベントリ・メンバーに関連付けられています:
"Opening Inventory"
(IF(NOT @ISMBR (Jan))
"Opening Inventory" = @PRIOR("Ending Inventory");
ENDIF;)
"Ending Inventory" = "Opening Inventory" - Sales + Additions;