2パス計算の使用
アプリケーションに適している場合は、データベース・アウトラインで勘定科目ディメンション・メンバーを2パスとしてタグ付けすることで、パフォーマンスを大幅に向上させることができます。 データと計算のニーズの組合せによっては、精度を維持するために、2パス・タグ付けの代わりに計算スクリプトを使用して式を2回計算する必要がある場合があります。
これらのセクションを使用して、2パス計算の詳細を理解します。 パフォーマンスを向上させるために勘定科目ディメンション・メンバーを2パスとしてタグ付けできるかどうか、または式を2回計算するために計算スクリプトを使用する必要があるかどうかを決定します。 この項では、2パス計算を有効にする方法、または2パス計算用の計算スクリプトを作成する方法についても説明します。
2パス計算について
正しい値を生成するために2回計算する必要があるメンバー式では、2パス計算を使用できます。
可能な場合は常に、2パス式がデータ・ブロック・レベルで計算され、2パス式がメイン計算として同時に計算されます。 したがって、データベースを通過する追加の計算パスは必要ありません。 ただし、状況によっては、データベースを通過する追加の計算が必要になります。
2パス式の計算方法は、時間としてタグ付けされたディメンションと、勘定科目としてタグ付けされたディメンションがあるかどうか、および時間ディメンションと勘定科目ディメンションの密疎構成によって異なります。
ハイブリッド集約モードでは、2パス計算を使用しないでください。 かわりに解決順を使用してください。
2パス計算の例の確認
利益%に必要な次の計算を考えてみます:
Profit % = Profit % Sales
次の表に、メジャーおよび年が密ディメンションであるデータ・ブロックのサブセットを示します。 メジャーは勘定科目としてタグ付けされ、年は時間としてタグ付けされます。 AGGMISSG構成設定はオフ(デフォルト)です。
データ値が入力セルにロードされました。 Essbaseでは、数値1から7がその順序で表示されるセルが計算されます。 たとえば、Profit % -> Janは最初に計算され、Profit % -> Qtr1には複数の集計パスがあります。
表33-2 2パス計算の例: データおよび計算順序
Measures -> Year | 1月 | 2月 | 3月 | Qtr1 |
---|---|---|---|---|
Profit |
75 |
50 |
120 |
5 |
売上高 |
150 |
200 |
240 |
6 |
Profit% |
1 |
2 |
3 |
4, 7 |
ノート:
セルの計算順序がデータベース構成にどのように依存するかについては、「セルの計算順序」を参照してください。
Essbaseでは、次の計算順序が使用されます:
-
Essbaseでは、Profit % -> Jan、Profit % -> Feb、Profit % -> Mar、およびProfit % -> Qtr1 (前述の1、2、3、4)の式
Profit % Sales
が計算されます。 -
Essbaseは、Jan、FebおよびMar (前述の5、6)の値を加算して、Profit -> Qtr1およびSales -> Qtr1を計算します。
-
Essbaseでは、Profit % -> Jan、Profit % -> FebおよびProfit % -> Mar(前述の7)の値を加算して、Profit % -> Qtr1が計算されます。 このパーセンテージを加算すると、125%の値が生成されますが、これは正しい結果ではありません。
表33-3 2パス計算の例: 不正な結果
Measures/Year 1月 2月 3月 Qtr1 Profit 75 50 120 245 (5) 売上高 150 200 240 590 (6) Profit%
50% (1)
25% (2)
50% (3)
0% (4)
125% (7)
-
データベース・アウトラインでProfit%を2パスとしてタグ付けすると、Essbaseでは
Profit % Sales
式を使用してProfit%値が再計算され、正しい結果が生成されます。表33-4 2パス計算の例: 結果の修正
Measures/Year 1月 2月 3月 Qtr1 Profit 75 50 120 245 (5) 売上高 150 200 240 590 (6) Profit%
50% (1)
25% (2)
50% (3)
0% (4)
125% (7)
42% (8)
複数の計算パスの詳細は、「計算パス」を参照してください。
2パス計算とインテリジェント計算の相互作用の理解
次の項では、2つのシナリオについて詳しく説明します。 「インテリジェントな計算」を使用している場合は、データベースの構成と一致するシナリオを使用します。各シナリオでは、Essbaseで2パス式を正確に計算する方法が示されます。
これらのシナリオでは、「インテリジェントな計算」の概念を理解している必要があります。 「インテリジェント計算の理解」を参照してください。
シナリオA
このシナリオでは、アウトラインに式を配置し、最適なパフォーマンスを得るために、必要に応じて特定の式に2パスのタグを付けます。
2パスFormulaの追加計算パスがありません
Essbaseでは、データ・ブロックの計算中に2パス式が計算されるため、データベースを介して追加の計算パスを実行する必要はありません。
クリーンとしてマークされたすべてのデータ・ブロック
計算後、すべてのデータ・ブロックは「インテリジェントな計算」のためにクリーンとしてマークされます。
アウトラインでメンバー式に2パスのタグを付けると、Essbaseでは各データ・ブロックの計算中に2パス計算が実行されます。 ただし、計算スクリプトで式を繰り返す場合、Essbaseはデータ・ブロックを読み取り、メモリーに書き込んで式を再計算する必要があります。
シナリオB
このシナリオでは、最適なパフォーマンスのために式の計算を実行する計算スクリプトを作成します。
2パスFormulaの追加計算パス
Essbaseはデータベースを計算し、追加の計算パスを実行して2パスの式を計算します。 最初のデータベース計算後にすべてのデータ・ブロックがクリーンとしてマークされている場合でも、Essbaseでは、2パス式に関連するブロックのクリーン・ステータスが無視され、これらのブロックが再計算されます。
クリーンとマークされていない2パス式のデータ・ブロック
最初の計算の後、Essbaseでは、「インテリジェントな計算」のためにすべてのデータ・ブロックをクリーンとしてマークしています。 データベースを通じた別の計算パスでは、Essbaseは、2パス式に必要なデータ・ブロックを再計算します。 ただし、2番目の計算はデータベースの部分計算であるため、Essbaseは再計算されたブロックをクリーンとしてマークしません。 「インテリジェントな計算」を有効にしてデータベースを再計算すると、これらのデータ・ブロックが不必要に再計算される場合があります。
データベース構成でEssbaseによるシナリオBの使用が許可されている場合は、計算スクリプトを使用して2パス式の計算を実行することを検討してください。 計算スクリプトを使用する場合でも、Essbaseはデータベースを介して追加の計算パススルーを実行しますが、計算後にEssbaseがすべてのデータ・ブロックをクリーンとしてマークしていることを確認できます。 「2パスおよびインテリジェント計算の計算スクリプトの作成」を参照してください。
2パス計算タグまたは計算スクリプトの選択
勘定科目メンバーを2パスとしてタグ付けするとパフォーマンスが向上する場合がありますが、一部のアプリケーションではこのメソッドを使用できません。 最高のパフォーマンスと精度を得るには、次の資格を確認して、2パス・タグを適用するか、計算を2回実行する計算スクリプトを作成する必要があります:
-
メンバーが勘定科目としてタグ付けされたディメンション内にある場合は、そのメンバーに2パスのタグを付けることができます。 データベースでデフォルトの計算を実行すると、データベース・アウトラインで勘定科目としてタグ付けされたディメンションにある場合、Essbaseでは、2パスとしてタグ付けされた式が自動的に再計算されます。
-
メンバーがいずれかのディメンションの動的計算メンバーである場合、そのメンバーを2パスとしてタグ付けできます。
-
場合によっては、計算スクリプトを使用して、正確な結果を得るために2パス式を計算する必要があります。これは、2パス・タグでパフォーマンス上の利点が得られる場合でも同様です。 「2パスおよびインテリジェント計算の計算スクリプトの作成」を参照してください。
-
「インテリジェントな計算」を効率的に使用するには、two-passタグのかわりに計算スクリプトを使用します。
-
データベース構成で、「2パス計算とインテリジェント計算の相互作用の理解」で説明されているようにEssbaseでシナリオAが使用され、式が別のデータ・ブロックの値を参照している場合は、計算スクリプトを使用して式を2回計算する必要があります。
-
データベース構成でEssbaseがシナリオBを使用することを意味する場合は、計算スクリプトを使用して2パス式を計算できます。
デフォルトの計算での2パスの有効化
データベース設定を使用すると、デフォルトの計算で2パス計算が可能になります。 2パス計算が有効になっているデータベースでデフォルトの計算を実行すると(デフォルト設定)、Essbaseでは、データベース・アウトラインで勘定科目としてタグ付けされたディメンションで、2パスとしてタグ付けされた式の計算が自動的に試行されます。 これは、デフォルトの計算スクリプトをカスタマイズした場合にも当てはまります。
次のトピックを参照してください:
デフォルトの計算を実行するには、execute calculationのMaxL文を使用します。
2パス計算を有効にするには、alter database MaxL文を使用します。
2パスおよびインテリジェント計算の計算スクリプトの作成
次のメソッドを使用して、計算が正確で可能なかぎり高速になるように、「インテリジェントな計算」で2パス計算を実行する計算スクリプトを作成します:
-
2パス式を再計算する計算スクリプト・コマンドの前に、SET UPDATECALC OFFコマンドを追加して「インテリジェントな計算」を無効にします。 「インテリジェントな計算」が有効になっている場合(デフォルト)、Essbaseではクリーンとマークされていないデータ・ブロックのみが計算されますが、「インテリジェントな計算」が有効になっているデータベースのデフォルト計算を実行すると、すべてのデータ・ブロックがクリーンとマークされるため、Essbaseでは2パス式の再計算は実行されません。
-
計算スクリプトを使用する場合、Essbaseでは、2パス式は自動的に再計算されません。 CALC TWOPASSコマンドを使用します。
-
CALC ALLのデフォルト計算を変更し、「インテリジェントな計算」が有効になっている場合、最初の計算後にデータ・ブロックがクリーンとしてマークされないことがあります。 「インテリジェント計算の理解」を参照してください。
データベースの最初の完全計算の実行時に「インテリジェントな計算」のパフォーマンス上の利点を得るには、計算のニーズおよびアウトライン構造に応じて、次のいずれかのメソッドを使用します:
これらの3つのオプションでは、次の状況例を使用します:
アウトラインには勘定科目としてタグ付けされたディメンションがあり、密ディメンションです。 各製品の販売を、すべての製品の販売に対するパーセンテージとして計算します。 次の式でディメンションを計算するとします:
Sales % Sales -> Product
Essbaseが各製品のデータ・ブロックを計算する際、値Sales -> Productはまだ計算されていないため、各製品の販売の合計に対する割合は正しくありません。
大きなインデックスを使用したインテリジェント計算
索引が大きく、「インテリジェントな計算」を使用する場合は、最高のパフォーマンスを得るために次のいずれかのオプションを使用できます。 3つのオプションはすべて同じタスクを実行します。
-
「インテリジェントな計算」を有効にします。
-
データベース全体を計算し、データ・ブロックをクリーンとしてマークします。
-
「インテリジェントな計算」を無効にします。
-
この計算はデータベースの部分計算ですが、再計算されたブロックをクリーンとしてマークします。 SET CLEARUPDATESTATUS AFTERコマンドを使用しない場合、Essbaseは、データベースの完全計算後にのみデータ・ブロックをクリーンとしてマークします。
-
Essbaseは、データベースを循環して、関連するメンバーの式のみを計算するか(この例では、Share of Sales)、データベース・アウトラインで2パスとしてタグ付けされたすべての式を計算します。
計算スクリプトの使用
このモデルを使用して、「インテリジェントな計算」を有効にしてデータベースの完全な計算を実行する計算スクリプトを作成します:
SET UPDATECALC ON;
CALC ALL;
SET UPDATECALC OFF;
SET CLEARUPDATESTATUS AFTER;
"Share of Sales" = Sales % Sales -> Product;
クライアントおよび計算スクリプトの使用
クライアントからデフォルトの計算を実行し、計算スクリプトを使用して式の計算を実行するには:
「インテリジェント計算の理解」、「ブロック・ストレージ・データベースの式の開発」および「ブロック・ストレージ・データベース用の計算スクリプトの開発」を参照してください。
「計算スクリプトの作成」も参照してください。
execute calculation MaxL文を使用して計算を実行できます。