構成可能な計算(挿入位置)ルールをデプロイした後のパフォーマンス問題の診断

構成可能な計算を使用して、即時利用可能な連結プロセスでは提供されないユースケースを実装できます。

  • 複数通貨アプリケーション: 構成可能な計算は、現地通貨(未換算のエンティティ・レベル・データ)、換算済(換算済のエンティティ・レベル・データ)および連結データの処理用に記述できます。
  • 単一通貨アプリケーション: 構成可能な計算は、現地通貨(未換算のエンティティ・レベル・データ)および連結データの処理用に記述できます。

これらの計算は、連結プロセスの実行時にFinancial Consolidation and Closeによって呼び出されます。スタンドアロンの計算として呼び出すことはできません。不適切に記述された構成可能な計算は、連結プロセスのランタイム・パフォーマンスに深刻な影響を与える可能性があります。Financial Consolidation and Close「推奨事項」カードに、連結時にパフォーマンスの低下を引き起こす可能性があるルールに関する警告が表示されます。これらの警告は、構成可能な計算スクリプトの作成時に従う必要があるベスト・プラクティスを示し、これにより連結のパフォーマンスが向上する可能性があります。詳細は、Financial Consolidation and Closeの管理計算スクリプトの検証警告の解決を参照してください。

さらに、次の提案を使用して、構成可能な計算のパフォーマンスを向上させます。

  • 現地通貨の構成可能な計算をオンデマンド・ルールとして実行
  • CALC DIMロジックの無効化
  • HYBRIDBSOINCALCSCRIPTの設定
  • 構成可能な計算をBOTTOMUP方式で実行
  • BLOCKモード計算の使用
  • 式の右側の合計メンバー数の検討

現地通貨の構成可能な計算をオンデマンド・ルールとして実行

現地通貨用に記述された構成可能な計算は、通貨ディメンションと連結ディメンションからそれぞれエンティティ通貨メンバーとエンティティ入力メンバーに対して実行されます。いくつかの変更を加えることで、現地通貨の構成可能な計算をオンデマンド・ルール(ODR)として記述できます。このアプローチのメリットは次のとおりです:

  • 連結時間を短縮します。

    ユーザーがエンティティ通貨およびエンティティ入力レベルで前の期間(ロック済)の値を現在の期間にコピーするのに5分かかると想定します。前の期間の値が変更される可能性は低いため、このタスクは1回のみ実行する必要があります。この計算を現地通貨の構成可能な計算に含めると、連結が呼び出されるたびに実行されるため、連結時間が長くなります。このような計算をODRとして移動すると、必要なときに呼び出すことができるため、時間を節約できます。このシナリオでは、前の期間のデータのコピーを回避することにより、期間ごとに5分の連結時間を節約できます。

  • 現地通貨の構成可能な計算のデバッグに役立ちます。

    すべての連結中に、現地通貨およびエンティティ入力レベルで計算ロジックを実行する必要があるユースケースを考えてみます。このようなルールは現地通貨の構成可能な計算の一部である必要があるため、ルールでパフォーマンスの問題をデバッグしようとするたびに、連結を実行する必要があります。これは時間のかかるプロセスです。時間を節約するために、現地通貨の構成可能な計算をODRとして移動し、デバッグおよび微調整してから、現地通貨の構成可能な計算として戻すことができます。

  • 簡便な実行時アクセスと統計を提供します。

    ODRは、Financial Consolidation and Close「ルール」カードから、または直接Calculation Managerから呼び出すことができます。Calculation Managerから実行されるODRは、処理時間が費やされている場所と、計算が実行されているメンバーの識別に役立つ統計を生成します。次の手順に従って、実行時統計を収集します:

    1. Calculation Managerにアクセスし、ODRを起動します。
      Calculation Managerで起動されたオンデマンド・ルール

    2. 実行時プロンプトを選択します。
    3. 「起動ステータス」で「OK」をクリックします。

      「ログ・メッセージ」タブが表示されます。このタブには、実行時統計が表示されます。

ODRへの構成可能な計算の移動

構成可能な計算が現地通貨用に記述されている場合、FIXでシナリオ、年、期間およびエンティティのディメンションのメンバーをアンカーとして、または式の左側で使用することはできません。通貨および連結ディメンションのメンバーのみ使用できます。現地通貨ルールは連結プロセス中に呼び出されるため、連結プロセスに実行時プロンプト(RTP)として提供されるシナリオ、年、期間およびエンティティのディメンションのメンバーが考慮されます。

ODRでシナリオ、年、期間、エンティティ、通貨および連結のディメンション・メンバーを使用することはできません。関連するディメンション・メンバーは、ODRの実行を開始するためのRTPとして提供されます。

CALC DIMロジックの無効化

挿入位置の構成可能な計算スクリプトを作成すると、Financial Consolidation and Closeが自動的に親レベルでデータを生成し、これらの親メンバーが次の挿入位置で使用できるようになります。Financial Consolidation and Closeは、入力したデータをロールアップするためのCALC DIMロジックを追加します。この追加されたCALC DIMロジックを処理するプロセスは、階層の複雑さに応じて時間がかかります。後の挿入位置で、再計算された親メンバーを参照する必要がない場合は、Financial Consolidation and Closeが挿入位置のために追加するCALC DIMロジックを無効にすることで、連結プロセス全体を高速化できます。

Note:

CALC DIMロジックを無効にすると、連結スクリプトの生成に影響します。CALC DIMロジックを無効にした後、連結結果を注意深く確認してください。

Financial Consolidation and Closeが、複数通貨アプリケーションで不要なCALC DIMロジックを生成しないようにするには、次のリストから適切な代替変数を定義し、それらをTrueに設定します。

  • CONFCALC_FCCS10_DISABLECALCDIM
  • CONFCALC_FCCS20_DISABLECALCDIM
  • CONFCALC_FCCS25_DISABLECALCDIM
  • CONFCALC_FCCS30_DISABLECALCDIM
  • CONFCALC_FCCS40_DISABLECALCDIM
  • CONFCALC_FCCS50_DISABLECALCDIM
  • CONFCALC_FCCS60_DISABLECALCDIM
  • CONFCALC_FCCS70_DISABLECALCDIM

たとえば、FCCS_10およびFCCS_20の構成可能な計算ルールでカスタム・ロジックを記述したとします。FCCS_20のCALC DIMロジックを無効にし、FCCS_10は無効にしない場合、CONFCALC_FCCS20_DISABLECALCDIMという名前の代替変数を定義し、Trueに設定する必要があります。

Financial Consolidation and Closeが単一通貨アプリケーションで不要なCALC DIMロジックを生成しないようにするには、次のリストから適切な代替変数を定義し、それらをTrueに設定します。

  • CONFCALC_FCCS110_DISABLECALCDIM
  • CONFCALC_FCCS120_DISABLECALCDIM
  • CONFCALC_FCCS130_DISABLECALCDIM
  • CONFCALC_FCCS140_DISABLECALCDIM
  • CONFCALC_FCCS150_DISABLECALCDIM

SET HYBRIDBSOINCALCSCRIPT

SET HYBRIDBSOINCALCSCRIPTコマンドは、計算スクリプトの特定のブロックをハイブリッド・モードで実行するかどうかを制御します。

現地通貨の「期首残高の繰越し後」ルールで、次の構成可能な計算スクリプトを検討してください:

FIX("Entity Currency", "Entity Input") 
        FIX("Data Input", "No Intercompany", "Local GAAP", "No Intercompany", "No Products")
                 "Changes In Cash"(
                         "Cash" = "Bank" -> "Total Product";
                   )
        ENDFIX
ENDFIX
連結の開始時に、構成可能な計算について、Financial Consolidation and Closeは、ルールをSET HYBRIDBSOINCALCSCRIPT FULL;およびSET HYBRIDBSOINCALCSCRIPT NONE;コマンドでカプセル化することで、ハイブリッド・モードを有効にします。これは、Calculation Managerには表示されません。これらのコマンドは、ODRには追加されません。
SET HYBRIDBSOINCALCSCRIPT FULL;
FIX("Entity Currency", "Entity Input") 
        FIX("Data Input", "No Intercompany", "Local GAAP", "No Intercompany", "No Products")
                 "Changes In Cash"(
                         "Cash" = "Bank" -> "Total Product";
                   )
        ENDFIX
ENDFIX

SET HYBRIDBSOINCALCSCRIPT NONE;

構成可能な計算について、スイッチ・オンのハイブリッド・モードが連結中にパフォーマンスを低下させないようにするには、ハイブリッド・モードをオフにして(次のサンプルを参照)、連結を実行します。

SET HYBRIDBSOINCALCSCRIPT FULL;

SET HYBRIDBSOINCALCSCRIPT NONE;
FIX("Entity Currency", "Entity Input") 
        FIX("Data Input", "No Intercompany", "Local GAAP", "No Intercompany", "No Products")
                 "Changes In Cash"(
                         "Cash" = "Bank" -> "Total Product";
                   )
        ENDFIX
ENDFIX

SET HYBRIDBSOINCALCSCRIPT NONE;

構成可能な計算をBOTTOMUP方式で実行

構成可能な計算をTOPDOWN方式で実行すると、計算速度が低下する可能性があります。その結果、この計算を呼び出す連結プロセスの速度が低下します。この問題を回避するには、構成可能な計算をBOTTOMUP方式で実行するようにしてください。詳細は、 の@CALCMODEを参照してくださいEssbaseテクニカル・リファレンス

BOTTOMUP計算に切り替えるときは、宛先ブロックが存在し、データが正しく計算されていることを確認してください。

BLOCKモード計算の使用

CELLモードの計算では、構成可能な計算の速度が低下する可能性があるため、必ずBLOCKモードで実行してください。詳細は、 の@CALCMODEを参照してくださいEssbaseテクニカル・リファレンス

BLOCKモード計算に切り替えるときは、結果のデータの正確性を確保するために、ブロック内のデータの依存関係を慎重に検討してください。

式の右側のメンバー数の検討

次の例にあるように、集約データをメンバー数にプルする必要がある場合があります:

"Target_Account_Stored" -> "Mvmt_None" = "FCCS_Mvmts_Subtotal"
 -> "Source_Account_DynamicCalc" -> "Total Custom1" -> "Total Custom2";

この例では、右側にある動的計算の結果を保管済の密メンバーに保管しようと試みています。Financial Consolidation and Closeは、デフォルトで、この構成可能な計算をSET HYBRIDBSOINCALCSCRIPT FULL;SET HYBRIDBSOINCALCSCRIPT NONE;コマンド内にカプセル化します。ただし、カプセル化した後でも、この計算は最上位メンバーからの読取りであるため、適切に実行されない可能性があります。パフォーマンスを向上させるには、次の例に示すように、最上位メンバーから読み取るかわりに、必要なディメンションのレベル0メンバーを反復処理するように計算を書き換えることができます:

SET HYBRIDBSOINCALCSCRIPT NONE; /*Turn off hybrid mode */
FIX(@RELATIVE( "Total Custom1", 0 ), @RELATIVE( "Total Custom2", 0 ), <other dimension members of FIX> )
       "FCCS_Mvmts_Subtotal" ( @CALCMODE( BOTTOMUP );
             "Target_Account_Stored" -> "Mvmt_None"  =  "Target_Account_Stored"  -> "Mvmt_None" + "Source_Account_DynamicCalc";
             )
ENDFIX