2パス計算
2回計算する必要があるメンバー式に、正しい値を算出するための2パス計算を適用できます。勘定科目ディメンション・メンバーを2パスとしてタグ付けして、一部のブロック・ストレージEssbaseアプリケーションのパフォーマンスを向上できます。
ノート:
ハイブリッド・モード・キューブでは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パス計算の例: データおよび計算順序
| メジャー->年 | 1月 | 2月 | 3月 | Qtr1 |
|---|---|---|---|---|
|
利益 |
75 |
50 |
120 |
5 |
|
セールス |
150 |
200 |
240 |
6 |
|
利益率 |
1 |
2 |
3 |
4、7 |
ノート:
セル計算順序がキューブ構成にどのように依存するかの詳細は、セルの計算順序に関する項を参照してください。
Essbaseでは、次の計算順序が使用されます。
-
Essbaseで、Profit % -> Jan、Profit % -> Feb、Profit % -> MarおよびProfit % -> Qtr1について、式
Profit % Salesが計算されます(前述の1、2、3、4)。 -
Essbaseで、Jan、FebおよびMarの値が加算されて、Profit -> Qtr1とSales -> Qtr1が計算されます(前述の5、6)。
-
Essbaseで、Profit % -> Jan、Profit % -> FebおよびProfit % -> Marの値が加算して、Profit % -> Qtr1が計算されます(前述の7)。このパーセンテージの加算では、値125%が算出されますが、これは正しい結果ではありません。
表34-6 2パス計算の例: 正しくない結果
メジャー/年 1月 2月 3月 Qtr1 利益 75 50 120 245 (5) 販売 150 200 240 590 (6) 利益率
50% (1)
25% (2)
50% (3)
0% (4)
125% (7)
-
アウトラインでProfit%に2パスとしてタグ付けすると、Essbaseでは
Profit % Salesの式を使用してProfit%の値が再計算され、正しい結果が算に出されます。表34-7 2パス計算の例: 正しい結果
メジャー/年 1月 2月 3月 Qtr1 利益 75 50 120 245 (5) 販売 150 200 240 590 (6) 利益率
50% (1)
25% (2)
50% (3)
0% (4)
125% (7)
42% (8)
複数の計算パスの詳細は、計算パスを参照してください。
2パス計算と高機能計算の相互作用
ブロック・ストレージ・アプリケーションで高機能計算および2パス計算を使用する場合は、キューブの構成と一致するシナリオを使用して、Essbaseで2パス式が正確に計算されるようにします。
ノート:
ハイブリッド・モード・キューブでは2パス計算を使用しないでください。解決順のみを使用します。
シナリオA: Two Pass Tag
このシナリオでは、式をアウトラインに設定し、適宜、特定の式に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パス計算を使用しないでください。解決順のみを使用します。
次のトピックを参照してください:
デフォルト計算を実行するには、MaxLのexecute calculation文を使用します。
2パス計算を有効にするには、MaxLのalter database文を使用します。
2パス計算および高機能の計算用の計算スクリプト
高機能計算を使用して2パス計算を実行するようにEssbase計算スクリプトを設計する場合は、SET UPDATECALC、SET CLEARUPDATESTATUSおよびCALC TWOPASSを使用して計算を最適化する方法を学習します。
ノート:
ハイブリッド・モード・キューブでは2パス計算を使用しないでください。解決順のみを使用します。
アウトラインで2パス式を使用する場合は、次のガイドラインに従って、計算を可能なかぎり正確かつ高速にします。
-
2パスの式を再の計算するコマンドの前に、SET UPDATECALC OFFコマンドを追加して、高機能計算を無効にします。高機能計算が有効になっている(デフォルト)場合は、クリーンとしてマークされていないデータ・ブロックのみがEssbaseによって計算されますが、高機能は計算が有効になっているデフォルトの計算を実行すると、すべてのデータ・ブロックはクリーンとしてマークされるため、Essbaseによって2パスの式の再計算が実行されません。
-
Essbaseでは、計算スクリプトで2パス式が自動的に再計算されないため、CALC TWOPASSコマンドを使用する必要があります。
-
CALC ALLのデフォルト計算を変更し、高機能計算が有効になっている場合は、最初の計算の後、データ・ブロックがクリーンとしてマークされない場合があります。ブロック・ストレージ・キューブの高機能計算を参照してください。
データベースの最初のフル計算を実行するとき、高機能計算を使用してパフォーマンスを向上させるには、次の一連の例に示す方法のいずれかを使用します。最適な方法は、キューブの計算ニーズとアウトライン構造によって異なります。
後続の例では、アウトラインに勘定科目としてタグ付けされたディメンションがあり、密ディメンションであると仮定します。すべての製品の売上のパーセンテージとして、各製品の売上を計算するとします。次の式では、ディメンションが計算されるものとします。
Sales % Sales -> ProductEssbaseで各製品のデータ・ブロックが計算されても、Sales -> Productの値はまだ計算されていないため、売上合計のパーセンテージとしての各製品の売上の結果は正しくありません。
大規模なインデックスを使用した高機能計算
キューブ索引が大規模で、高機能計算を使用する場合は、次のオプションのいずれかを使用して、パフォーマンスを改善できます。
計算スクリプト・オプション
高機能計算が有効な状態でフル計算を実行する計算スクリプトを作成するには、次のモデルを使用します。
SET UPDATECALC ON;
CALC ALL;
SET UPDATECALC OFF;
SET CLEARUPDATESTATUS AFTER;
"Share of Sales" = Sales % Sales -> Product;計算スクリプトと2パス・オプション
メンバーを2つのパスとしてタグ付けし、計算スクリプトを使用して、最初にキューブ全体を計算してから、2パス・メンバーを計算するには:
-
式をアウトラインに置き、2パスとしてタグ付けします。
-
勘定科目としてタグ付けされたディメンションの該当するメンバー(例ではShare of Sales)に対する式を配置します。
-
フル計算の後で2パス計算を実行する計算スクリプトを作成します。
SET UPDATECALC ON; CALC ALL; SET UPDATECALC OFF; SET CLEARUPDATESTATUS AFTER; CALC TWOPASS;
クライアントと計算スクリプト・オプション
クライアントからデフォルト計算を実行してから、計算スクリプトを使用して式の計算を実行するには:
-
高機能計算を有効にします(このデフォルトが変更されている場合)。
-
フル計算を実行します。
-
次の例のような計算スクリプトを使用して、高機能計算を無効にし、式を計算します。
SET UPDATECALC OFF; SET CLEARUPDATESTATUS AFTER; "Share of Sales" = Sales % Sales -> Product;または
SET UPDATECALC OFF; SET CLEARUPDATESTATUS AFTER; CALC TWOPASS;
前述のすべてのオプション例では、次のタスクを実行します。
-
高機能計算を有効にします。
-
キューブ全体を計算し、データ・ブロックをクリーンとしてマークします。
-
高機能計算を無効にします。
-
この計算がキューブの一部の計算であっても、再計算されたブロックをクリーンとしてマークします。コマンドSET CLEARUPDATESTATUS AFTERを使用しない場合、Essbaseは、完全計算の後にのみ、データ・ブロックをクリーンとしてマークします。
-
Essbaseは、キューブを一巡し、該当するメンバー(この例ではShare of Sales)の式のみを計算するか、アウトラインで2パスとしてタグ付けされたすべての式を求めます。
例: 小規模なインデックスを使用した高機能計算
キューブ索引が小規模の場合に高機能計算を使用するには:
-
キューブを計算する計算スクリプトを作成しますが、計算済データ・ブロックをクリーンとしてマークしないようにEssbaseを設定します。
-
すべてのデータ・ブロックをクリーンとしてマークし、データ・ブロックの再計算は行いません。
SET CLEARUPDATESTATUS OFF; CALC ALL; CALC TWOPASS; SET CLEARUPDATESTATUS ONLY; CALC ALL;-
SET CLEARUPDATESTATUS OFFによって、計算済データ・ブロックがクリーンとしてマークされないようにEssbaseに指示します。
-
最初のCALC ALLにより、Essbaseがキューブを一巡してすべてのダーティ・データ・ブロックを計算します。Essbaseでは、計算されたブロックはクリーンとしてマークされません。
2パスとしてタグ付けされた式は、Essbaseで自動的に再計算されません。
-
CALC TWOPASSを使用すると、Essbaseによってキューブが循環し、勘定科目ディメンションの2パス式が再計算されます。必要なデータ・ブロックが前のCALC ALLでクリーンとしてマークされていないため、Essbaseによって式が再計算されます。再計算済データ・ブロックは、Essbaseによってクリーンとしてマークされません。
-
SET CLEARUPDATESTATUS ONLYは、データ・ブロックをクリーンとしてマークするが、データ・ブロックを計算しないようにEssbaseに指示します(このコマンドは計算を無効にします)。
-
最後のCALC ALLにより、Essbaseはキューブを循環し、すべてのデータ・ブロックをクリーンとしてマークします。Essbaseでは、データ・ブロックは計算されません。
-
例: 2パスの式のための高機能計算の無効化
2パスの式のための高機能計算をオフにするには、次のタスクを実行する計算スクリプトを作成します。
-
高機能計算を無効にします。
-
フル計算を実行します。
-
次の2パスの式を繰り返します。
SET UPDATECALC OFF; CALC ALL; "Share of Sales" = Sales % Sales -> Product;