インテリジェント計算について
デフォルトでは、Essbaseはデータベースの完全計算を実行するときに、計算するデータ・ブロックを追跡します。 その後、後続の計算でデータのサブセットをロードすると、Essbaseでは、計算されていないデータ・ブロックと、新しいデータのために再計算が必要な計算済ブロックのみが計算されます。 このプロセスはインテリジェント計算と呼ばれます。
デフォルトでは、インテリジェント計算はオンになっています。
計算スクリプトでインテリジェント計算をオンまたはオフにすることもできます。 「インテリジェント計算のオン/オフの切替え」を参照してください。
その他の計算最適化メソッドの詳細は、次を参照してください:
インテリジェント計算の利点
インテリジェント計算は、次のタイプの計算にパフォーマンス上の大きな利点をもたらすように設計されています:
-
データベースの完全な計算(CALC ALL)。ただし、いくつかの例外があります。
「インテリジェント計算の制限」を参照してください。
-
CALC DIM文のすべてのメンバーを計算する計算スクリプト。
-
完全計算にインテリジェント計算を使用できないデータベース計算では、計算の一部にインテリジェント計算を使用できる場合があります。
たとえば、デフォルトの連結を実行してからデータの配賦を実行してデータベースの計算パフォーマンスを大幅に向上させるには、デフォルトの連結に対してインテリジェント計算を有効にし、配賦に対してインテリジェント計算を無効にします。
インテリジェント計算がオン(デフォルト)の場合、部分的なインテリジェント計算に対して次のステップを実行する計算スクリプトを作成します:
-
インテリジェント計算の有効化(無効化されている場合)
-
CALC ALLを使用したデータベースの計算
-
SET UPDATECALCコマンドを使用して、インテリジェント計算を無効にします
-
データの割当て
-
オプションで、インテリジェント計算を再度有効にします
-
インテリジェント計算およびデータ・ブロック・ステータス
インテリジェント計算を提供するために、Essbaseはデータベース内のデータ・ブロックのステータスを確認します。 データ・ブロックの算出ステータスは、cleanまたはdirtyです。 Essbaseは、特定の計算後にデータ・ブロックをクリーンとしてマークします。
インテリジェント計算が有効な場合、Essbaseはダーティ・ブロックとその依存する親のみを計算します。 無効にすると、Essbaseでは、クリーンまたはダーティとしてマークされているかどうかに関係なく、すべてのデータ・ブロックが計算されます。
ブロックをクリーンとしてマーク
Essbaseでは、次のタイプの計算でデータ・ブロックがクリーンとしてマークされます:
-
データベースの完全計算(CALC ALL) (デフォルトの計算)。
-
CALC DIM文のすべてのディメンションを計算する計算スクリプト。
たとえば、次の計算スクリプトでは、Sample.Basicデータベースのすべてのメンバーが計算されます:
CALC DIM(Measures, Product, Market, Year, Scenario);
この計算スクリプトを、2つのCALC DIM文を使用してすべてのメンバーを計算する計算スクリプトと比較します:
CALC DIM(Measures, Product); CALC DIM(Market, Year, Scenario);
CALC DIM文を使用すると、Essbaseはデータベースを介して少なくとも2つの計算パスを実行します。 この計算では、Essbaseはデフォルトでデータ・ブロックをクリーンとしてマークしません。 インテリジェント計算は正確なクリーンおよびダーティ・ステータスに依存するため、これらのマーカーは慎重に管理する必要があります。 「クリーン・ステータスとダーティ・ステータスの維持」を参照してください。
Essbaseでは、計算スクリプトでSET CLEARUPDATESTATUSコマンドを使用しないかぎり、前述の状況でのみ計算済データ・ブロックにクリーンのマークが付けられます。 「SET CLEARUPDATESTATUSコマンドの使用」を参照してください。
ブロックをダーティとしてマーク
Essbaseでは、次の状況でデータ・ブロックが使用済としてマークされます:
-
SET CLEARUPDATESTATUS AFTERが計算スクリプトの部分計算文の一部でない場合にのみ、データベースの部分計算のデータ・ブロックを計算
-
データ・ブロックへのデータのロード
-
データベースの再構築(密ディメンションへのメンバーの追加など)
-
DATACOPYなどを使用した、データ・ブロックへのデータのコピー
クリーン・ステータスとダーティ・ステータスの維持
データベースのサブセットを計算する場合、またはデータベースを介して複数の計算パスを実行する場合にインテリジェント計算を使用するには、Essbaseがデータ・ブロックをクリーンとしてマークする方法の影響を慎重に検討してください。 インテリジェント計算を使用する場合は、データ・ブロックのクリーンでダーティ・ステータスを正確に維持して、Essbaseでデータベースが可能なかぎり効率的に再計算されるようにする必要があります。
たとえば、データベースのサブセットを計算する場合、新しく計算されたデータ・ブロックはデフォルトでクリーンとしてマークされません。 計算スクリプトでSET CLEARUPDATESTATUS AFTERコマンドを使用すると、新しく計算されたブロックにクリーンのマークを付けることができます。 計算スクリプトを作成する前に、「SET CLEARUPDATESTATUSコマンドの使用」を参照してください。
インテリジェント計算の制限
インテリジェント計算を使用する場合は、次の制限および状況を考慮してください:
-
インテリジェント計算は、セル・レベルではなくデータ・ブロック・レベルで機能します。 たとえば、データ・ブロックのいずれかのセルにデータ値をロードすると、データ・ブロック全体がダーティとしてマークされます。
-
データベースを2回パススルーする必要があるCALC ALLが正しく計算されない場合があります。 この問題は、最初のパス中にクリーンのマークが付けられたブロックが2番目のパス中にスキップされるために発生します。 この問題を回避するには、インテリジェント計算をオフにするか、(データベースのCALC ALLではなく)ディメンションごとにCALC DIMを実行します。 CALC ALLには、次のいずれかの状況でデータベースを通過する2パスが必要です:
-
勘定科目ディメンションが疎の場合
-
勘定科目ディメンションが密の場合、時間ディメンションは疎であり、アウトラインには1つ以上の密ディメンションがあります
-
-
データベース・アウトラインの式を変更したり、データベース・アウトラインの勘定科目プロパティを変更しても、Essbaseはデータベースを再構築しません。 したがって、Essbaseでは、影響を受けるブロックは使用済としてマークされません。 適切なデータ・ブロックを再計算する必要があります。 「式および勘定科目プロパティの変更」を参照してください。
-
可能な場合は常に、Essbaseでは、データベースのメイン計算の一部として勘定科目としてタグ付けされたディメンションの2パスとしてタグ付けされた式が計算されます。 ただし、計算スクリプトを使用していくつかの式を2回計算する必要がある場合があります。 計算スクリプトを使用する場合は、式を再計算する前にインテリジェント計算を無効にします。
-
計算スクリプトでSET CREATENONMISSINGBLKがONに設定されている場合、インテリジェント計算はオフになり、影響を受けるブロックはクリーンまたはダーティとしてマークされているかどうかに関係なく計算されます。
Oracle Exalytics In-Memory MachineでのEssbase 「インテリジェントな計算」に関する考慮事項
次の機能は、Oracle Exalytics In-Memory Machineで実行されているEssbaseにのみ適用されます。
ブロック・ストレージ・データベース上の「インテリジェントな計算」のステータス・ビットは永続化されません。 したがって、「インテリジェントな計算」は、次の両方の条件に該当する場合にのみ意図したとおりに動作します:
-
索引全体が索引キャッシュに収まる
-
「インテリジェントな計算」を使用する関連計算スクリプトは、「Essbaseサーバー」の存続期間内に完了
「インテリジェントな計算」の場合は、索引全体に適合し、データのロードまたは計算による将来の索引の増加を考慮して、十分な大きさの索引キャッシュ・サイズを設定します。