ボトムアップ計算とトップダウン計算
Essbaseブロック・ストレージ・キューブでは、必要以上に多くのブロックが計算されるため、トップダウン計算はボトムアップ計算よりも効率的ではありません。トップダウン計算は、確実に正しい計算結果を得るために必要な場合があります。
Essbaseは、ボトムアップ計算またはトップダウン計算を使用して、データベース・アウトラインのフル計算を実行します。デフォルトでは、Essbaseは、ハイブリッド・モードではないブロック・ストレージ・キューブでボトムアップ計算を使用します。
ノート:
キューブでハイブリッド・モード(Essbase 21cのデフォルト)を使用している場合は、このトピックの情報をスキップできます。ハイブリッド・モード・キューブは、動的依存性分析用にすでに最適化されています。詳細は、高速分析処理に対するハイブリッド・モードの採用を参照してください。ボトムアップ計算の場合、Essbaseは、キューブスを計算する前に、どのデータ・ブロックを計算する必要があるかを判断します。次に、Essbaseにより、計算する必要があるブロックのみが計算されます。計算は、既存の最も小さいブロック番号から開始され、最も大きいブロック番号に到達するまで番号順に各ブロックに対して実行されます。ブロックの計算順序を参照してください。
アウトラインに複雑なメンバー式が含まれている場合、Essbaseによって、関連するメンバーに対してトップダウン計算が実行されます。
ボトムアップ計算と単純な式
単純な式の場合、Essbaseは、ボトムアップ計算を行うことで、フル計算を実行する前にどのブロックを計算する必要があるかを判断します。たとえば、メンバーに対する単純な式(A = B + Cなど)では、BまたはCがデータベース内に存在する場合にのみAが計算されます。つまり、BおよびCに対する式の依存関係が認識されてから、計算が開始されます。
トップダウン計算と複雑な式
計算を開始する前に、Essbaseによってアウトラインが検索され、トップダウン計算が必要な複雑な式(ディメンション間参照を含むメンバー式など)がマークされます。Essbaseがトップダウン式を含むメンバーに到達すると、そのメンバーに対してトップダウン計算が行われます。
メンバーに対する式が複雑である場合、そのメンバーに対して可能性があるすべてのブロックを調査して、既存のブロックを変更する必要があるか、または新しいブロックが作成されるかどうかを確認する必要があります。計算の開始前に、ブロックが他のブロックに対して持つ依存関係を特定することは困難です。トップダウンの方法ではEssbaseで適切な計算対象ブロックを検索して式を実行する必要があるため、計算のパフォーマンスが低下します。
式がコンパイルされるときに、式をトップダウンで計算する必要がある場合は、Essbaseではアプリケーション・ログ・ファイルにメッセージが記録されます。
次の複雑な式の場合を考えます。
A = B -> D + C -> D
式を計算するために、EssbaseはAのすべての組合せを調査し、B -> DまたはC -> Dが存在するかどうかを確認する必要があります。
「複雑なEssbaseメンバー式」を参照してください。
ボトムアップ計算の強制
サイトで適切な場合、トップダウン式でボトムアップ計算を強制できます。
ボトムアップ計算を強制するには、次のいずれかの方法を使用します。
-
計算関数—式内の@CALCMODE
-
計算スクリプト・コマンド—SET FRMLBOTTOMUP
-
構成設定:
式でボトムアップ計算を強制すると、通常は実行時間が増加します。式に複雑な関数(範囲関数など)が含まれている場合、または式の依存関係が直接的ではない場合、ボトムアップ計算によりトップダウン計算の結果とは異なる結果が生じる可能性があります。
注意:
本番環境で設定CALCOPTFRMLBOTTOMUPを変更する前に、または計算スクリプトSET FRMLBOTTOMUPを使用する前に、ボトムアップ計算とトップダウン計算の同じデータに対する結果を比較して、計算結果の妥当性をチェックしてください。