Essbase計算スクリプトは、Financial Consolidation and Closeで独自のカスタム・ビジネス・ロジックを記述できる言語です。この項では、Essbaseの基本的な構成要素の一部、およびFinancial Consolidation and Closeに適用される制限について説明します。Essbase計算スクリプトの詳細は、Essbase Cloud管理者スタート・ガイドを参照してください。
一般的な構文
売上 = 売上 * 1.50;
"現金比率" = "現金"/"流動負債";
->
を使用して複数のディメンションの交差を指定"売上"->"純利益の変更"->"製品1";
コメント
コメントは/*
で始まり、*/
で終わります。
単一行または複数行のコメントがサポートされています。
ツールバー・アイコンを使用して、コメント・ブロックを設定または削除できます。
FIX/ENDFIX
FIX/ENDFIXは、計算スクリプトの基本的なビルディング・ブロックの1つです。計算を実行するには、FIX/ENDFIXセクションを定義し、その中に実際のビジネス計算を配置する必要があります。
例: "Products"はカスタム・ディメンションであり、テレビの販売台数を計算するとします。次の構文を使用できます。
FIX("Televisions")
"Units_Sold" = "LED_TVs" + "UHD_TVs";
ENDFIX
実際のビジネス計算は次のとおりです。
"Units_Sold = "LED_TVs" + "UHD_TVs";
。これにより、テレビの販売台数が計算されます。
注:
FIXまたはENDFIXを除き、各計算文の最後にはセミコロンを付ける必要があります。FIX/ENDFIXセクションは、その中の計算に含まれる様々なディメンションのメンバーを制限します。この例では、"Televisions"のみが計算に含まれています。
次のようなネストされたFIXも定義できます。
前述の計算は次のように記述することもできます。
たとえば、@ListはEssbase関数です。Essbaseには多数の関数が用意されています。ただし、Financial Consolidation and CloseですべてのEssbase関数がサポートされているわけではありません。サポートされている関数のリストは、「Essbase関数リスト」の項を参照してください。
Financial Consolidation and CloseのディメンションでのFIX
Financial Consolidation and Closeアプリケーションには、有効なアプリケーション機能に応じて13のディメンションを含めることができます。13のディメンションのうち、次のディメンションではFIXを使用できません。その理由は、ユーザーが連結プロセスを呼び出したときに、システムによってそれらにFIXが自動的に適用されるためです。
シナリオ
年
期間
表示
エンティティ
たとえば、次のような文があるとします。
デプロイは失敗し、ジョブ・コンソールにエラー・メッセージと該当する情報が記録されます。
ただし、スクリプトでこれらのディメンションを使用できないということではありません。一般的に、計算には、次の構文のようなものが含まれています。
FIXおよび左側では、シナリオ、年、期間、エンティティおよびビューのディメンションのメンバーは使用できないことに注意してください。ただし、等式の右側にはこのような制限はありません。
次の構文は使用できます。
残りの8つのディメンションでは、特定のディメンションでFIXを使用しない場合、そのディメンションのすべてのメンバーとみなされます。たとえば、次のような文があるとします。
この例では、残りのすべてのディメンションにFIXが使用されています(勘定科目は除く)。この場合、Essbaseにより、FIX/ENDFIX内の計算では勘定科目ディメンションのすべてのメンバーとみなされます。
制限付きFinancial Consolidation and Closeメンバー
各Financial Consolidation and Close内の特定のシステム・メンバーは、計算スクリプトで使用または計算することが制限されています。制限付きメンバーが計算で使用されると、検証またはデプロイは失敗し、ジョブ・コンソールにエラー・メッセージが記録されます。
ディメンションにメンバーが指定されていない場合は、ディメンション内のすべてのメンバーとみなされることに留意してください。ただし、制限付きメンバーはプロセスの一部として含めることができないため、これらの制限付きメンバーは、FIXディメンション文または式の左側で明示的に除外する必要があります。
次の表は、これらのディメンションの制限付きFinancial Consolidation and Closeメンバーの完全なリストです。通貨ディメンションおよび連結ディメンションでは、使用される挿入ルールに基づいて制限されることに注意してください。シード済の挿入ルールごとに、そのルールに含めることができる通貨ディメンションおよび連結ディメンションのメンバーに関する情報がコメント・セクションに含まれています。
表20-5 制限付きディメンション・メンバー
ディメンション | メンバー | 式 左側 | 式 右側 |
---|---|---|---|
シナリオ | すべてのメンバー | いいえ | はい |
年 | すべてのメンバー | いいえ | はい |
期間 | すべてのメンバー | いいえ | はい |
表示 | すべてのメンバー | いいえ | はい |
エンティティ | すべてのメンバー | いいえ | はい |
勘定科目 | FCCS_CSTATUS | いいえ | はい |
FCCS_CSTATUS FILTER | いいえ | はい | |
FXレート - 期末 | いいえ | はい | |
FXレート - 平均 | いいえ | はい | |
平均レート | いいえ | はい | |
期末レート | いいえ | はい | |
SrcAverageRate | いいえ | はい | |
TgtAverageRate | いいえ | はい | |
SrcEndingRate | いいえ | はい | |
TgtEndingRate | いいえ | はい | |
FCCS_Balance | いいえ | はい | |
FCCS_CTA | いいえ | はい | |
FCCS_CICTA | いいえ | はい | |
FCCS_Percent Control | いいえ | はい | |
FCCS_Current Ratio | いいえ | はい | |
FCCS_Quick Ratio | いいえ | はい | |
FCCS_Cash Ratio | いいえ | はい | |
FCCS_Inventory Turnover | いいえ | はい | |
FCCS_Asset Turnover | いいえ | はい | |
FCCS_Days Sales In Receivables | いいえ | はい | |
FCCS_Days Sales In Inventory | いいえ | はい | |
FCCS_Gross Profit Margin | いいえ | はい | |
FCCS_Return on Sales | いいえ | はい | |
FCCS_Return on Equity | いいえ | はい | |
FCCS_Debt to Equity Ratio | いいえ | はい | |
FCCS_Debt Ratio | いいえ | はい | |
データ・ソース | FCCS_System Types | いいえ | はい |
FCCS_Rate Override | いいえ | はい | |
FCCS_Account Override | いいえ | はい | |
FCCS_PCON | いいえ | はい | |
FCCS_Driver Source | いいえ | はい | |
増減 | FCCS_Opening Balance | いいえ | はい |
FCCS_OpeningBalance_Cash | いいえ | はい | |
FCCS_FX_Total_NonCash | いいえ | はい | |
FCCS_ClosingBalanceCash | いいえ | はい |
制限付きメンバーを除くディメンションのすべてのメンバーでのFIX
一般的な使用例としては、ディメンションに制限付きメンバーが含まれている可能性がある場合に、そのディメンションのすべてのレベル0のメンバーをFIX指定する必要がある場合です。この例では、そのディメンションの制限付きメンバーを除いたすべてのレベル0のメンバーを最適にFIX指定する方法について示します。
たとえば、勘定科目ディメンションに制限付きメンバーの最大値が含まれています。
次に、制限付きメンバーを除くすべてのレベル0の勘定科目メンバーをFIX指定するために使用できる、計算スクリプトのコード・スニペットを示します。
@REMOVE( @LEVMBRS( "Account", 0 ), @LIST( @RELATIVE( "FCCS_System Account", 0 ),@RELATIVE( "FCCS_Drivers", 0 ),@RELATIVE( "FCCS_Ratios", 0 ),@RELATIVE( "Exchange Rates", 0 ) ) )
疎ディメンションと密ディメンションでのFIX
FIXは、疎ディメンションで行う方がより効果があります。この場合、FIXを使用すると、EssbaseによりFIXで定義されている疎ディメンション・メンバーの組合せに対してのみブロックがプルされ、残りはスキップされます。
これらの疎の組合せはインデックスとして機能するため、Essbaseによってインデックスと一致するデータ・ブロックが検索され、これらが計算のためにプルされます。そのため、実行するシステムにすべてのブロックがプルされるわけではありません。
FIXを密ディメンションで使用した場合、Essbaseの各データ・ブロックに密メンバーが存在します。そのため、正しく使用しないとパフォーマンスに影響します。密ディメンションにFIXが指定されると、Essbaseによってブロック数に関係なくすべてのデータ・ブロックがプルされ、各ブロック内の一部のみが制限されます。そのため、これには、情報を返すためにデータベースへの複数のパスが必要になることがあります。
たとえば、次の文では、勘定科目ディメンションの"Sales"および"PostSales"を参照できます。
"Sales"の最初のFIXが処理されると、Essbaseによって勘定科目ディメンションのすべてのデータ・ブロックがプルされますが、"Sales"という1つの勘定科目でのみ機能します。
FIX文の後半の"PostSales"では、Essbaseによって勘定科目ディメンションのすべてのデータ・ブロックが再度プルされますが、"PostSales"という1つの勘定科目でのみ機能します。この場合、これらの2つの勘定科目のデータベースに2パスが作成されます。
パフォーマンスの問題を回避するには、勘定科目ディメンションでFIXを使用せず、密ディメンションでIF...THENを使用します。
FIX文を使用していないこの例では、Essbaseデータベースへの1パスのみを作成する必要があります。
計算のパフォーマンスを向上させるために、疎ディメンションではFIXを使用し、密ディメンションではIF..THENを使用することをお薦めします。
メンバー・ブロック
メンバー・ブロックは、計算ブロックと呼ばれることもあります。メンバー・ブロックにアンカーという用語が使用されていることもあります。メンバー・ブロックの構文は次のとおりです。
次に、メンバー・ブロック文の例を示します。
この例では、"My Total Opening Balance"が計算ブロック・メンバーまたはアンカーと呼ばれます。可能なかぎり、このメンバーは、密ディメンションのメンバーにする必要があります。
前述の計算では、メンバーは"My FX Opening"のみに制限され、FIX文で指定されたメンバーに対してのみ計算が実行されます。
IF文を使用する場合は、メンバー・ブロックが必要であることに注意してください。IF文は、メンバー・ブロックの外で記述できません。