Essbase計算スクリプトの操作

Essbase計算スクリプトは、Financial Consolidation and Closeで独自のカスタム・ビジネス・ロジックを記述できる言語です。この項では、Essbaseの基本的な構成要素の一部、およびFinancial Consolidation and Closeに適用される制限について説明します。Essbase計算スクリプトの詳細は、Essbase Cloud管理者スタート・ガイドを参照してください。

一般的な構文

  • セミコロン
    • 各文の終わりに必要
    • 例: 売上 = 売上 * 1.50;
    • FIXおよびENDFIXの後は不要
  • 二重引用符
    • スペースが含まれる/特殊文字が含まれる/先頭が数字のメンバー名
    • メンバー名の前後に二重引用符を使用するのがベストプラクティスです
    • 例: "現金比率" = "現金"/"流動負債";
  • ディメンション間演算子
    • ->を使用して複数のディメンションの交差を指定
    • 例: "売上"->"純利益の変更"->"製品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も定義できます。

Essbaseのネストした例1

前述の計算は次のように記述することもできます。

Essbaseのネストした例2

たとえば、@ListはEssbase関数です。Essbaseには多数の関数が用意されています。ただし、Financial Consolidation and CloseですべてのEssbase関数がサポートされているわけではありません。サポートされている関数のリストは、「Essbase関数リスト」の項を参照してください。

Financial Consolidation and CloseのディメンションでのFIX

Financial Consolidation and Closeアプリケーションには、有効なアプリケーション機能に応じて13のディメンションを含めることができます。13のディメンションのうち、次のディメンションではFIXを使用できません。その理由は、ユーザーが連結プロセスを呼び出したときに、システムによってそれらにFIXが自動的に適用されるためです。

  • シナリオ

  • 期間

  • 表示

  • エンティティ

たとえば、次のような文があるとします。

EssbaseのFIXの例3

デプロイは失敗し、ジョブ・コンソールにエラー・メッセージと該当する情報が記録されます。

ただし、スクリプトでこれらのディメンションを使用できないということではありません。一般的に、計算には、次の構文のようなものが含まれています。

EssbaseのFIXの例4

FIXおよび左側では、シナリオ、年、期間、エンティティおよびビューのディメンションのメンバーは使用できないことに注意してください。ただし、等式の右側にはこのような制限はありません。

次の構文は使用できます。

EssbaseのFIXの例5

残りの8つのディメンションでは、特定のディメンションでFIXを使用しない場合、そのディメンションのすべてのメンバーとみなされます。たとえば、次のような文があるとします。

EssbaseのFIXの例6

この例では、残りのすべてのディメンションにFIXが使用されています(勘定科目は除く)。この場合、Essbaseにより、FIX/ENDFIX内の計算では勘定科目ディメンションのすべてのメンバーとみなされます。

制限付きFinancial Consolidation and Closeメンバー

Financial Consolidation and Close内の特定のシステム・メンバーは、計算スクリプトで使用または計算することが制限されています。制限付きメンバーが計算で使用されると、検証またはデプロイは失敗し、ジョブ・コンソールにエラー・メッセージが記録されます。

ディメンションにメンバーが指定されていない場合は、ディメンション内のすべてのメンバーとみなされることに留意してください。ただし、制限付きメンバーはプロセスの一部として含めることができないため、これらの制限付きメンバーは、FIXディメンション文または式の左側で明示的に除外する必要があります。

次の表は、これらのディメンションの制限付きFinancial Consolidation and Closeメンバーの完全なリストです。通貨ディメンションおよび連結ディメンションでは、使用される挿入ルールに基づいて制限されることに注意してください。シード済の挿入ルールごとに、そのルールに含めることができる通貨ディメンションおよび連結ディメンションのメンバーに関する情報がコメント・セクションに含まれています。

表19-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"を参照できます。

EssbaseのFIXの例7

"Sales"の最初のFIXが処理されると、Essbaseによって勘定科目ディメンションのすべてのデータ・ブロックがプルされますが、"Sales"という1つの勘定科目でのみ機能します。

FIX文の後半の"PostSales"では、Essbaseによって勘定科目ディメンションのすべてのデータ・ブロックが再度プルされますが、"PostSales"という1つの勘定科目でのみ機能します。この場合、これらの2つの勘定科目のデータベースに2パスが作成されます。

パフォーマンスの問題を回避するには、勘定科目ディメンションでFIXを使用せず、密ディメンションでIF...THENを使用します。

EssbaseのFIXの例8

FIX文を使用していないこの例では、Essbaseデータベースへの1パスのみを作成する必要があります。

計算のパフォーマンスを向上させるために、疎ディメンションではFIXを使用し、密ディメンションではIF..THENを使用することをお薦めします。

メンバー・ブロック

メンバー・ブロックは、計算ブロックと呼ばれることもあります。メンバー・ブロックにアンカーという用語が使用されていることもあります。メンバー・ブロックの構文は次のとおりです。

Essbaseのメンバー・ブロックの例1

次に、メンバー・ブロック文の例を示します。

Essbaseのメンバー・ブロックの例2

この例では、"My Total Opening Balance"が計算ブロック・メンバーまたはアンカーと呼ばれます。可能なかぎり、このメンバーは、密ディメンションのメンバーにする必要があります。

前述の計算では、メンバーは"My FX Opening"のみに制限され、FIX文で指定されたメンバーに対してのみ計算が実行されます。

IF文を使用する場合は、メンバー・ブロックが必要であることに注意してください。IF文は、メンバー・ブロックの外で記述できません。