Essbase計算トレースを使用すると、メンバー式の処理に対するインサイトを取得して、ブロック・ストレージの計算スクリプトをデバッグおよび調整できます。コンテキスト依存のSmart View計算トレースに対してCALCTRACEを有効にするか、SET TRACEコマンドを使用してトレース対象のデータ交差部を選択します。
計算トレースでは、キューブに対して計算スクリプトが正常に実行された後に、計算について記録された情報にアクセスできます。
計算をトレースしても、計算の動作は変更されません。計算がSmart Viewで起動され、管理者が有効にした計算トレースが接続されたサーバーにある場合、Smart Viewでは、計算の実行後に詳細を含むポップアップ・ダイアログ・ボックスが表示されます。計算トレース情報は、ポップアップ・ダイアログからテキスト・エディタに貼り付けることができます。または、Essbaseのデータベース・ファイル・ディレクトリにあるcalc_trace.txt
に同じ情報があります。
計算の結果が予想したものと異なる場合に、計算トレース情報は計算スクリプトの実行のデバッグに役立つことがあります。
計算トレースは、シナリオ管理が有効にされているアプリケーションではサポートされません。
計算トレースを有効にするには、最初に管理者がCALCTRACEアプリケーション構成パラメータを有効にする必要があります。アプリケーションで計算トレースを有効にした後は、次の2つの方法でそれを利用できます。
スクリプトに含まれている計算のスコープ全体が計算されますが、計算の際には強調表示されているデータ・セル・コンテキストのみがトレースされます。
強調表示されているデータ・セルが計算時に変更されなかった場合、セルが変更されなかったことを示すメッセージが表示されます。
SET TRACE mbrList
(メンバー・リストに対する計算のトレースをオンにする)およびSET TRACE OFF
(スクリプトに新しいSET TRACEが出現するまで計算のトレースを無効にする)の組合せを使用して、計算スクリプトのセクションをトレースできます。SET TRACEコマンドを使用するには、Smart Viewの外部で、キューブ・デザイナ、CLI calcコマンド、Essbase Webインタフェースの計算の実行ジョブ、またはMaxL (execute calculation文)を使用して計算スクリプトを実行する必要があります。次の計算スクリプトはSample Basicで実行されます。スクリプトにはSET TRACEコマンドが含まれており、カリフォルニア市場における製品SKU番号100-10の1月の計上された売上を表すデータの交差部(セル)にログ記録される詳細情報をリクエストします。
SET TRACEID "id042" SET TRACE ("100-10", "California", "Jan", "Sales", "Budget"); FIX("California", "Budget") "Sales" ( "100-10" = @MEMBER(@CONCATENATE(@NAME(@PARENT("Product")), "-20")) / 10; ); ENDFIX;
注:
計算トレース・ファイルの上書きを防ぐには、SET TRACEIDコマンドも推奨されます。Sample Basicには、製品と市場の2つの疎ディメンションが含まれています。メンバー式は、密ディメンションであるメジャーのメンバーのSalesに対する式です。FIX文のメンバー・リストには、市場ディメンションに属する1つの疎メンバーCaliforniaのみが含まれています。
FIXスコープの既存のブロック数によって、トレースするセルが計算される回数が決まります。この例では、計算はCaliforniaの既存のすべての疎メンバーの組合せを反復します。これらの各組合せはブロックを表します。
計算の完了後、次のトレース情報がcalc_trace_id042.txt
に記録されて表示されます:
Tracing cell: [100-10][California][Jan][Sales][Budget] (Cell update count: 1) Previous value: 840.00 Dependent values: [100-20][California][Jan][Sales][Budget] = 140.00 New value: [100-10][California][Jan][Sales][Budget] = 14.00 Computed in lines: [91 - 93] using: "Sales"( "100-10"=@MEMBER(@CONCATENATE(@NAME(@PARENT("Product")),"-20"))/10; ) Tracing cell: [100-10][California][Jan][Sales][Budget] (Cell update count: 2) Block from FIX scope: [100-30][California] Actual block used in calculation: [100-10][California] Previous value: 14.00 Dependent values: [100-20][California][Jan][Sales][Budget] = 140.00 New value: [100-10][California][Jan][Sales][Budget] = 14.00 Computed in lines: [91 - 93] using: "Sales"( "100-10"=@MEMBER(@CONCATENATE(@NAME(@PARENT("Product")),"-20"))/10; ) Tracing cell: [100-10][California][Jan][Sales][Budget] (Cell update count: 3) Block from FIX scope: [200-10][California] Actual block used in calculation: [100-10][California] Previous value: 14.00 Dependent values: [200-20][California][Jan][Sales][Budget] = 520.00 New value: [100-10][California][Jan][Sales][Budget] = 52.00 Computed in lines: [91 - 93] using: "Sales"( "100-10"=@MEMBER(@CONCATENATE(@NAME(@PARENT("Product")),"-20"))/10; ) [...calc iterations 4-7 are omitted from example...] Tracing cell: [100-10][California][Jan][Sales][Budget] (Cell update count: 8) Block from FIX scope: [400-30][California] Actual block used in calculation: [100-10][California] Previous value: 9.00 Dependent values: [400-20][California][Jan][Sales][Budget] = 90.00 New value: [100-10][California][Jan][Sales][Budget] = 9.00 Computed in lines: [91 - 93] using: "Sales"( "100-10"=@MEMBER(@CONCATENATE(@NAME(@PARENT("Product")),"-20"))/10; )
この計算トレース・ログでは、トレースされたセルでの計算の動作に関する次のインサイトが提供されています。
トレースされたセルが複数回にわたって計算され、セル値が毎回新しい値で上書きされました(報告されたセルの更新数が8で止まっています)。
計算前のセルの値は840.00でした。
各計算について、依存する値と新しい値が表示されます。依存する値は、FIX文のメンバー式から取得されます。
すべての計算が完了した後の、トレースされたセルの最終値は9ですが、これは製品"400-20"->California
の値を10で割ったものを示しています。
Salesのメンバー式を含む計算スクリプトの91-93行目で、更新された値が計算されています。
反復される各ブロックについて、次の式を使用してSalesが計算されます。
"100-10"=@MEMBER(@CONCATENATE(@NAME(@PARENT("Product")),"-20"))/10
この式には、左側に疎メンバーが含まれており、実際の計算ブロックが初期FIXブロックとは異なるものになる可能性があります。たとえば、計算で"California"->"100-20"が反復される場合、実際には計算は"California"->"100-10"で実行されます。
Block from FIX scope
およびActual block used in calculation
というタイトルのトレース・ログ・エントリは、FIX文のブロックとメンバー式で表されるブロックの間に差異がある場合にのみ出力されます。これらのログ・エントリには、重複した計算がある理由が示されることがあり、計算スクリプトのデバッグに役立ちます。