計算スクリプト構文の理解
Essbaseには、データベースの計算方法を制御するために使用できる柔軟なコマンド・セットが用意されています。 コマンドおよび式から計算スクリプトを作成できます。
計算スクリプトを作成する場合は、次のルールを適用する必要があります:
-
各式または計算スクリプト・コマンドはセミコロン(;)で終了します。 例:
例 1
CALC DIM(Product, Measures);
例 2
DATACOPY Plan TO Revised_Plan;
例 3
"Market Share" = Sales % Sales -> Market;
例 4
IF (Sales <> #MISSING)
Commission = Sales * .9;
ELSE
Commission = #MISSING;
ENDIF;
次のコマンドはセミコロンで終了する必要はありません:
IF
ENDIF
ELSE
ELSIF
FIX
ENDFIX
EXCLUDE
ENDEXCLUDE
LOOP
ENDLOOP
ノート:
必須ではありませんが、Oracleでは、各ENDIF文をセミコロンで終了することをお薦めします。
-
メンバー名が次のいずれかの条件を満たす場合は、メンバー名を二重引用符("")で囲みます:
-
スペースが含まれます。
たとえば、次の式では、期首インベントリと期末インベントリは二重引用符で囲まれています:
"Opening Inventory" = "Ending Inventory" - Sales + Additions;
-
演算子、関数名またはキーワードと同じです。
-
ハイフン (-)、アスタリスク (*)、またはスラッシュ(/)などの英数字以外の文字を含みます。
-
数字のみを含むか、数字で始まります。
たとえば: "100"または"10Prod"
-
アンパサンド(&)で始まります。 先頭のアンパサンド(&)は、置換変数用に予約されています。 メンバー名が&で始まる場合は、名前を引用符で囲みます。
ノート:
計算スクリプトで代替変数を引用符で囲まないでください。
-
ドット(.)が含まれます。
たとえば: 1999.Janまたは.100
-
-
IF文または相互依存の式を使用している場合は、式をカッコで囲み、指定したメンバーに関連付けます。
たとえば、次の式は、データベース・アウトラインのCommissionメンバーに関連付けられています:
Commission (IF(Sales < 100) Commission = 0; ENDIF;)
-
各IF文をENDIF文で終了します。
たとえば、前述の式には単純なIF...ENDIF文が含まれています。
-
別のIF文内にネストされているIF文を使用している場合は、各IFをENDIF文で終了します。
例:
"Opening Inventory" (IF (@ISMBR(Budget)) IF (@ISMBR(Jan)) "Opening Inventory" = Jan; ELSE "Opening Inventory" = @PRIOR("Ending Inventory"); ENDIF; ENDIF;)
-
ELSEまたはELSEIF文をENDIF文で終了する必要はありません。
例:
Marketing (IF (@ISMBR(@DESCENDANTS(West)) OR @ISMBR(@DESCENDANTS(East))) Marketing = Marketing * 1.5; ELSEIF(@ISMBR(@DESCENDANTS(South))) Marketing = Marketing * .9; ELSE Marketing = Marketing * 1.1; ENDIF;)
ノート:
FormulaでELSEIF (1語)ではなくELSE IF (空白あり)を使用する場合は、IF文にENDIFを指定する必要があります。
-
各FIX文をENDFIX文で終了します。
例:
FIX(Budget,@DESCENDANTS(East)) CALC DIM(Year, Measures, Product); ENDFIX
-
各EXCLUDE文はENDEXCLUDE文で終了します。
計算スクリプトを記述する場合は、「計算スクリプト・エディタ」構文チェッカを使用して構文を検証します。 「構文のチェック」を参照してください。
計算スクリプトへのコメントの追加
計算スクリプトに注釈を付けるためのコメントを含めることができます。 計算スクリプトの実行時にコメントは無視されます。
コメントを含めるには、コメントを/*で開始し、コメントを*/で終了します。 例:
/* This calculation script comment
spans two lines. */
構文のチェック
Essbaseには、計算スクリプトの構文エラー(入力ミスのある関数名など)にフラグを付ける構文チェッカが含まれています。
構文エラーが見つからない場合、Essbaseは構文チェックが成功したことを示します。
構文エラーが見つかった場合、Essbaseは構文チェックが失敗したことを示し、一度に1つのエラーを表示します。 通常、エラー・メッセージには、エラーが発生した行番号と簡単な説明が含まれます。
「計算スクリプトの作成」を参照
ノート:
構文チェッカはセマンティック・エラーを判別できません。セマンティック・エラーは、計算スクリプトが期待どおりに動作しない場合に発生します。 セマンティック・エラーを検出するには、計算を実行し、結果が期待どおりであることを確認します。 「計算結果の確認」を参照してください。