2パス計算

2パス計算は、正しい値を生成するために2回計算する必要があるメンバー式に適用できます。一部のブロック・ストレージEssbaseアプリケーションのパフォーマンスを向上させるために、勘定科目ディメンション・メンバーを2パスとしてタグ付けできます。

ノート:

ハイブリッド・モード・キューブでは、2パス計算を使用しないでください。解決順序のみを使用します。

アプリケーションによっては、アウトラインで勘定科目ディメンション・メンバーを2パスとしてタグ付けすることで、パフォーマンスを向上できる場合があります。ただし、データと計算のニーズの組合せによっては、正確を期すために、2パスのタグ付けのかわりに計算スクリプトを使用して式を2回計算する必要がある場合があります。

可能な場合、Essbaseは、主計算と同時に、ブロック・レベルで2パスの式を計算します。ただし、場合によっては、追加の計算パスが必要です。

Essbaseで2パス式を計算する方法は、時間ディメンションと勘定科目ディメンションの密と疎の構成によって異なります。

2パス計算の例

Profit%に必要な次の計算について考えてみます。

Profit % = Profit % Sales

次の表は、密ディメンションとしてMeasuresとYearを持つデータ・ブロックのサブセットを示しているとします。Measuresは勘定科目としてタグ付けされ、Yearは時間としてタグ付けされています。AGGMISSG構成設定はオフになっています(デフォルト)。

データ値は入力セルにロードされています。Essbaseにより、番号1から7が表示されたセルがこの順序で計算されます。たとえば、Profit % -> Janが最初に計算されます。Profit% -> Qtr1には、複数の集計パスがあります。

表34-5 2パス計算の例: データおよび計算順序

Measures -> Year Jan Feb Mar Qtr1

Profit

75

50

120

5

Sales

150

200

240

6

Profit%

1

2

3

4, 7

ノート:

キューブ構成によってセルの計算順序がどのように変わるかの詳細は、「セルの計算順序」を参照してください。

Essbaseでは、次の計算順序が使用されます。

  1. Essbaseで、Profit % -> Jan、Profit % -> Feb、Profit % -> MarおよびProfit % -> Qtr1について、式Profit % Salesが計算されます(前述の1、2、3、4)。

  2. Essbaseで、Jan、FebおよびMarの値が加算されて、Profit -> Qtr1とSales -> Qtr1が計算されます(前述の5、6)。

  3. Essbaseで、Profit % -> Jan、Profit % -> FebおよびProfit % -> Marの値が加算されて、Profit % -> Qtr1が計算されます(前述の7)。このパーセンテージの加算では、値125%が算出されますが、これは正しい結果ではありません。

    表34-6 2パス計算の例: 正しくない結果

    Measures/Year Jan Feb Mar Qtr1
    Profit 75 50 120 245 (5)
    Sales 150 200 240 590 (6)

    Profit%

    50% (1)

    25% (2)

    50% (3)

    0% (4)

    125% (7)

  4. アウトラインでProfit%に2パスとしてタグ付けすると、EssbaseではProfit % Salesの式を使用してProfit%の値が再計算され、正しい結果が算出されます。

    表34-7 2パス計算の例: 正しい結果

    Measures/Year Jan Feb Mar Qtr1
    Profit 75 50 120 245 (5)
    Sales 150 200 240 590 (6)

    Profit%

    50% (1)

    25% (2)

    50% (3)

    0% (4)

    125% (7)

    42% (8)

複数の計算パスの詳細は、計算パスを参照してください。

2パスと高機能計算の相互作用

ブロック・ストレージ・アプリケーションで高機能計算および2パス計算を使用する場合は、キューブの構成に一致するシナリオを使用して、Essbaseで2パス式が正確に計算されるようにします。

ノート:

ハイブリッド・モード・キューブでは、2パス計算を使用しないでください。解決順序のみを使用します。

シナリオA: 2パス・タグ

このシナリオでは、式をアウトラインに設定し、適宜、特定の式に2パスとしてタグ付けして、パフォーマンスを最適化します。

2パスの式の追加の計算パスはなし

Essbaseではデータ・ブロックの計算中に2パスの式が計算されるため、Essbaseでは追加の計算パスを実行する必要はありません。

クリーンとしてマークされるすべてのデータ・ブロック

計算後、すべてのデータ・ブロックは、高機能計算のためにクリーンとしてマークされます。

アウトラインでメンバー式に2パスとしてタグ付けすると、Essbaseで各データ・ブロックの計算中に2パス計算が行われます。ただし、計算スクリプトで式を繰り返すときは、式を再計算するために、Essbaseでデータ・ブロックを読み取って、メモリーに書き込む必要があります。

シナリオB: 計算スクリプト

このシナリオでは、計算スクリプトを作成して式の計算を実行し、パフォーマンスを最適化します。

2パスの式の追加の計算パス

Essbaseでは、キューブが計算されてから、追加の計算パスを実行して2パスの式が計算されます。すべてのデータ・ブロックが最初の計算の後にクリーンとしてマークされても、Essbaseでは2パスの式に関連するブロックのクリーン・ステータスは無視され、これらのブロックは再計算されます。

クリーンとしてマークされない2パスの式のデータ・ブロック

最初の計算後、すべてのデータ・ブロックは、Essbaseによってクリーンとしてマークされます。2回目の計算パスで、2パスの式に必要なデータ・ブロックがEssbaseで再計算されます。ただし、2回目の計算は部分的な計算であるため、再計算されたブロックはEssbaseでクリーンとしてマークされません。高機能計算をオンにして再計算すると、このようなデータ・ブロックが不必要に再計算される場合があります。

キューブ構成によりEssbaseでシナリオBを使用できる場合は、2パスの式の計算の実行に計算スクリプトを使用することを検討してください。計算スクリプトを使用した場合も、Essbaseによってデータベース内で追加の計算パスが実行されますが、計算後にすべてのデータ・ブロックがEssbaseによってクリーンとしてマークされるようになります。「2パス計算および高機能計算用の計算スクリプト」を参照してください。

2パス計算タグまたは計算スクリプト・メソッドの選択

勘定科目メンバーを2パスとしてタグ付けすると、パフォーマンスが向上する場合がありますが、アプリケーションによってはこの方法は使用できません。次の制限を確認して、最高のパフォーマンスと精度を得るために、2パスのタグを適用する必要があるか、計算を2回実行する計算スクリプトを作成する必要があるかを確認してください。

  • 勘定科目としてタグ付けされているディメンションのメンバーは、2パスとしてタグ付けできます。データベースでデフォルトの計算を実行するときに、2パスとしてタグ付けされた式が、勘定科目としてタグ付けされたディメンション内にある場合は、Essbaseで自動的に再計算されます。

  • 任意のディメンションの動的計算メンバーであるメンバーは、2パスとしてタグ付けできます。

  • 2パスのタグでパフォーマンスが向上する場合でも、正確な結果を得るために、計算スクリプトを使用して2パスの式を計算する必要がある場合があります。「2パス計算および高機能計算用の計算スクリプト」を参照してください。

  • EssbaseでシナリオAを使用するデータベース構成の場合と、式で別のデータ・ブロックの値を参照する場合は、計算スクリプトを使用して、式を2回計算する必要があります。

  • EssbaseでシナリオBを使用するデータベース構成の場合は、計算スクリプトを使用して、2パスの式を計算した方がよい場合があります。

デフォルト計算の2パス

キューブ設定は、デフォルトの計算で2パス計算を有効にするために使用できます。2パス計算が有効になっているキューブに対してデフォルトの計算を実行すると、Essbaseでは、勘定科目としてタグ付けされたディメンションで、2パスとしてタグ付けされた式の計算が自動的に試行されます。これは、デフォルトの計算スクリプトがカスタマイズされている場合でも同様です。

ノート:

ハイブリッド・モード・キューブでは、2パス計算を使用しないでください。解決順序のみを使用します。

次のトピックを参照してください。

デフォルト計算を実行するには、MaxLexecute calculation文を使用します。

2パス計算を有効にするには、MaxLalter database文を使用します。

2パス計算および高機能計算用の計算スクリプト

Essbase計算スクリプトを設計して高機能計算で2パス計算を実行する場合は、SET UPDATECALC、SET CLEARUPDATESTATUSおよびCALC TWOPASSを使用して計算を最適化する方法を学習します。

ノート:

ハイブリッド・モード・キューブでは、2パス計算を使用しないでください。解決順序のみを使用します。

アウトラインで2パス式を使用する場合は、次のガイドラインに従って可能なかぎり正確かつ高速に計算します:

  • 2パスの式を再計算するコマンドの前に、SET UPDATECALC OFFコマンドを追加して、高機能計算を無効にします。高機能計算が有効になっている(デフォルト)場合は、クリーンとしてマークされていないデータ・ブロックのみがEssbaseによって計算されますが、高機能計算を有効にしてデフォルト計算を実行すると、すべてのデータ・ブロックがクリーンとしてマークされるため、Essbaseによって2パスの式の再計算が実行されません。

  • Essbaseでは、計算スクリプトで2パス式が自動的に再計算されないため、CALC TWOPASSコマンドを使用する必要があります。

  • CALC ALLのデフォルト計算を変更し、高機能計算が有効になっている場合は、最初の計算の後、データ・ブロックがクリーンとしてマークされない場合があります。「ブロック・ストレージ・キューブの高機能計算」を参照してください。

データベースの最初のフル計算を実行するとき、高機能計算を使用してパフォーマンスを改善するには、次の一連の例に示す方法のいずれかを使用します。最適な方法は、キューブの計算要件とアウトライン構造によって異なります。

次の例では、アウトラインに勘定科目としてタグ付けされたディメンションがあり、そのディメンションが密ディメンションであるとしています。すべての製品の売上のパーセンテージとして、各製品の売上を計算するとします。次の式で、ディメンションが計算されるものとします。

Sales % Sales -> Product

Essbaseで各製品のデータ・ブロックが計算されても、Sales -> Productの値はまだ計算されていないため、売上合計のパーセンテージとしての各製品の売上の結果は正しくありません。

大規模なインデックスを使用した高機能計算

キューブのインデックスが大規模で、高機能計算を使用する場合は、次のいずれかのオプションを使用して、パフォーマンスを最適化できます。

計算スクリプト・オプション

高機能計算が有効な状態でフル計算を実行する計算スクリプトを作成するには、次のモデルを使用します:

SET UPDATECALC ON;

CALC ALL;
SET UPDATECALC OFF;
SET CLEARUPDATESTATUS AFTER;
"Share of Sales" = Sales % Sales -> Product;

計算スクリプトおよび2パス・オプション

メンバーを2パスとしてタグ付けし、計算スクリプトを使用して、キューブ全体を計算してから、2パス・メンバーを計算するには:

  1. 式をアウトラインに配置し、2パスとしてタグ付けします。

  2. 勘定科目としてタグ付けされたディメンションの該当するメンバー(この例ではShare of Sales)に対する式を配置します。

  3. 次のように、フル計算の後で2パス計算を実行する計算スクリプトを作成します:

    SET UPDATECALC ON;
    CALC ALL;
    SET UPDATECALC OFF;
    SET CLEARUPDATESTATUS AFTER;
    CALC TWOPASS;

クライアントおよび計算スクリプト・オプション

クライアントからデフォルト計算を実行してから、計算スクリプトを使用して式の計算を実行するには:

  1. 高機能計算を有効にします(このデフォルトが変更されている場合)。

  2. フル計算を実行します。

  3. 次の例のような計算スクリプトを使用して、高機能計算を無効にし、式を計算します:

    SET UPDATECALC OFF;
    SET CLEARUPDATESTATUS AFTER;
    "Share of Sales" = Sales % Sales -> Product;

    または

    SET UPDATECALC OFF;
    SET CLEARUPDATESTATUS AFTER;
    CALC TWOPASS;

前述の例のすべてのオプションでは、次のタスクを実行します:

  1. 高機能計算を有効にします。

  2. キューブ全体を計算し、データ・ブロックをクリーンとしてマークします。

  3. 高機能計算を無効にします。

  4. この計算がキューブの部分的な計算であっても、再計算されたブロックをクリーンとしてマークします。SET CLEARUPDATESTATUS AFTERコマンドを使用しない場合は、フル計算の後にのみ、Essbaseによってデータ・ブロックがクリーンとしてマークされます。

  5. Essbaseは、キューブを一巡して、該当するメンバー(この例ではShare of Sales)の式のみを計算するか、アウトラインで2パスとしてタグ付けされたすべての式を計算します。

例: 小規模なインデックスを使用した高機能計算

キューブのインデックスが小規模の場合に高機能計算を使用するには:

  1. キューブを計算する計算スクリプトを作成するが、計算済データ・ブロックをクリーンとしてマークしないようにEssbaseを設定します。

  2. すべてのデータ・ブロックをクリーンとしてマークし、データ・ブロックの再計算は行いません。

    SET CLEARUPDATESTATUS OFF;
    CALC ALL;
    CALC TWOPASS;
    SET CLEARUPDATESTATUS ONLY;
    CALC ALL;
    1. SET CLEARUPDATESTATUS OFFは、計算済データ・ブロックをクリーンとしてマークしないようにEssbaseに指示します。

    2. 最初のCALC ALLにより、Essbaseがキューブを一巡してすべてのダーティ・データ・ブロックを計算します。計算済ブロックは、Essbaseによってクリーンとしてマークされません。

      Essbaseでは、2パスとしてタグ付けされた式は自動的に再計算されません。

    3. CALC TWOPASSにより、Essbaseはキューブを一巡し、勘定科目ディメンションの2パス式を再計算します。必要なデータ・ブロックが、前のCALC ALLでクリーンとしてマークされていないため、Essbaseによって式が再計算されます。再計算済データ・ブロックは、Essbaseによってクリーンとしてマークされません。

    4. SET CLEARUPDATESTATUS ONLYは、データ・ブロックをクリーンとしてマークするが、データ・ブロックを計算しないようにEssbaseに指示します(このコマンドは計算を無効にします)。

    5. 最後のCALC ALLにより、Essbaseがキューブを一巡して、すべてのデータ・ブロックをクリーンとしてマークします。Essbaseはデータ・ブロックを計算しません。

例: 2パスの式のための高機能計算の無効化

2パスの式のための高機能計算をオフにするには、次のタスクを実行する計算スクリプトを作成します。

  • 高機能計算を無効にします。

  • フル計算を実行します。

  • 次の2パスの式を繰り返します。

    SET UPDATECALC OFF;
    CALC ALL;
    "Share of Sales" = Sales % Sales -> Product;