データ値の動的計算

この項の内容:

動的計算の理解

動的計算による利点

動的計算の使用

動的に計算する値の選択

「動的計算」または「動的計算および保管」の選択

動的計算による計算順序の変更の理解

取得時間に対する影響の軽減

標準的な手順での動的計算の使用

動的計算メンバーと動的計算および保管メンバーの作成

データベースの再構築

パーティション内のデータの動的計算

この章の情報は、ブロック・ストレージ・データベースのみに適用され、集約ストレージ・データベースとは関係がありません。集約ストレージとブロック・ストレージの比較。も参照してください。

動的計算の理解

データベースの全体的な計算を設計するとき、データベースのバッチ計算時にメンバーの組合せを事前に計算するのではなく、データの取得時に一部のメンバーの組合せを計算する方が効率的な場合があります。データベースで一部の値を動的に計算することで、データベースの全体的な計算のパフォーマンスが大幅に向上します。

Essbaseでは、メンバーに動的計算を定義できます。この定義は、ユーザーの要求時にEssbaseでメンバーのデータ値を計算するように指定します。動的計算によって、データベースのバッチ計算時間は短縮されますが、動的に計算されるデータ値の取得にかかる時間が増加する可能性があります。取得時間に対する影響の軽減を参照してください。

Essbaseでは、メンバーごとに動的計算を指定します。データベース・アウトラインのメンバーは、次の2つのタイプのうち、いずれかの動的計算済メンバーとして定義できます:

  • 動的計算

  • 動的計算および保管

動的計算メンバーの理解

Essbaseでは、データベースのバッチ計算時(CALC ALLの実行時など)に、動的計算タグが付けられたメンバーのデータ値は計算されません。かわりにEssbaseでは、データの取得時(Smart Viewにデータを取得するときなど)にデータ値が計算されます。

具体的には、次の2つのうち、いずれかの方法でデータ値を要求したときに、Essbaseでデータ値が動的に計算されます:

  • データ値をSmart Viewに取得する方法

  • データ値を表示するレポート・スクリプトを実行する方法

Essbaseでは、計算済の値は保管されず、取得ごとに値が再計算されます。

動的計算および保管メンバーの理解

Essbaseでは、動的計算メンバーの場合と同じ方法で、データの取得時に動的計算および保管タグが付けられたメンバーのデータ値が計算されます。ただし、動的計算および保管メンバーの場合、Essbaseでは動的に計算されたデータ値が保管されます。その後同じデータ値を再び取得するときに、再計算は必要ありません。ただし、Essbaseで値の再計算が必要であることが検出された場合を除きます。

データの再計算

Essbaseで、動的計算および保管メンバーのデータ値の再計算が必要であることが検出されると、その値を含んでいるデータ・ブロックにインディケータが設定されます。こうすることで、Essbaseでは、データ値の次の取得時にそのブロックを再計算する必要があることを認識できます。

Essbaseでは、データ値自体ではなく、その値を含んでいるデータ・ブロックにインディケータが設定されます。つまり、Essbaseでは、動的計算および保管メンバーをデータ・ブロック・レベルで追跡します。データ・ブロックおよびインデックス・システムを参照してください。

データ・ブロックを再計算する必要がある場合は、Essbaseでその必要性が検出され、次のいずれかの状況が発生したときにデータ・ブロックにインディケータが設定されます:

  • バッチ計算を行うとき。

  • データベースを再構築するとき。

  • CLEARBLOCK DYNAMIC計算コマンドを使用するとき。

    『Oracle Essbaseテクニカル・リファレンス』を参照してください。

次にデータ値を取得するときに、Essbaseで、インディケータが設定されたデータ・ブロックが再計算されます。

再計算で更新された値による影響

データの更新時には、Essbaseでデータ・ブロックの再計算の必要性が検出されず、データ・ブロックにインディケータは設定されません。そのため、更新されたブロックは次のバッチ計算時にのみ再計算されます。次のシナリオについて考えてみます:

  • データ・ロードの実行。

  • スプレッドシートからデータ送信を実行します。

動的計算および保管メンバーの子にデータをロードし、そのメンバーが子メンバーの集計である場合、Essbaseでは、次の取得時にその動的計算および保管メンバーに再計算が必要であることが認識されません。親メンバーは、次のバッチ計算時にのみ再計算されます。

データのロード後に、データベースのバッチ計算を実行するか、CLEARBLOCK DYNAMIC計算コマンドを使用して、動的計算および保管メンバーを再計算する必要があります。『Oracle Essbaseテクニカル・リファレンス』を参照してください。

動的に計算される子の値に対する親の値の取得

動的計算の子メンバーまたは動的計算および保管の子メンバーから計算される親の値を取得する場合、Essbaseでは、親の値を計算する前に子メンバーの組合せを動的に計算する必要があります。Essbaseでは、子が動的計算および保管メンバーである場合でも、子の値は保管されません。

たとえば、Marketが親メンバーで、EastとWestが動的計算および保管の子メンバーで、Marketに集計されるとします。Marketのデータ値を取得するときは、EastとWestの値を個別に取得していない場合でも、Essbaseではその値が計算されます。ただし、EssbaseではEastとWestの値は保管されせん。

動的計算による利点

データベースの一部の値を動的に計算できれば、データベースの全体的な計算のパフォーマンスが大幅に向上します。

一部のデータ値を動的に計算することで、次の項目を減らすことができます:

  • データベースのバッチ計算時間。Essbaseで計算するメンバーの組合せが少なくなるためです。

  • ディスク使用量。Essbaseに保管する計算済データ値が少なくなるためです。データベース・サイズとインデックス・サイズも小さくなります。

  • データベースの再構築時間。たとえば、密次元の動的計算メンバーを追加または削除しても、データ・ブロック・サイズは変化しません。このため、Essbaseではデータベースを再構築する必要がありません。データベースの再構築を参照してください。

  • データベースのバックアップに必要な時間。データベース・サイズが縮小されるので、Essbaseでバックアップを実行する時間が短くなります。

Essbaseで動的に計算されるデータ値は、取得に時間がかかる可能性があります。動的に計算されるメンバーの取得時間を推測できます。取得時間に対する影響の軽減を参照してください。

動的計算の使用

どのメンバーも動的計算または動的計算および保管としてタグ付けできます。ただし、次のメンバーは除きます:

  • 式が設定されていないレベル0メンバー

  • ラベルのみメンバー

  • 共有メンバー

動的計算の対象とするメンバーは、データベース構造、および(1)計算時間の短縮やディスク使用量の削減のニーズと、(2)ユーザー向けの高速なデータ取得のニーズとのバランスによって変わります。動的に計算する値の選択を参照してください。

アウトライン・エディタで、動的計算メンバーと動的計算および保管メンバーを確認できます。図126は動的計算メンバーを示しています。

図 126. 動的計算メンバーを示しているSample.Basicアウトライン

この図は、動的計算メンバーがあるアウトラインを示しています。

Smart Viewで、ユーザーはビジュアル・キューを表示して動的計算値を区別できます。Oracle Hyperion Smart View for Office User's Guideを参照してください。

動的計算値を含むスプレッドシートを作成するときに、スプレッドシート・デザイナは、「データなし操作」オプションを使用すれば、テスト用のスプレッドシートの作成中に、Essbaseによって値の動的計算と保管が行われないようにできます。

動的に計算する値の選択

一部のデータ値を動的に計算すれば、計算時間の短縮、ディスク使用量の低減およびデータベース再構築時間の短縮が実現されますが、動的に計算されるデータ値の取得時間は長くなります。

動的に計算するメンバーを決定する場合は、次の項で説明するガイドラインを使用してください。

密のメンバーと動的計算

密次元のメンバーに、次の変更を加えることを考えます:

  • 密次元の上位レベル・メンバーに動的計算タグを付けます。

  • 単純な式を設定したレベル0の密次元メンバーに動的計算タグを付けて、取得時間の増加を評価します。

    Essbaseでは、単純な式にコストのかかる計算は必要ありません。財務関数または次元間演算子(->)を含んでいる式は複雑な式です。

  • 密次元のメンバーには、動的計算および保管タグを付けないでください。

疎のメンバーと動的計算

疎次元メンバーに、次の変更を加えることを考えます:

  • 6個以下の子を持つ疎次元の上位レベル・メンバーの一部に、動的計算タグまたは動的計算および保管タグを付けます。

  • 複雑な式を設定した疎次元のメンバーに動的計算タグまたは動的計算および保管タグを付けます。

    Essbaseでは、複雑な式にはコストのかかる計算が必要です。たとえば、財務関数を含んでいる式は複雑な式です。複雑な式の使用を参照してください。

  • 頻繁に再構築する次元の上位レベル・メンバーに動的計算タグまたは動的計算および保管タグを付けます。

  • 20個以上の子孫を持つ疎次元の上位レベル・メンバーには動的計算タグと動的計算および保管タグを付けないでください。

「動的計算」または「動的計算および保管」の選択を参照してください。

2パス・メンバーと動的計算

バッチ計算の実行に必要な時間を短縮するには、2パス・メンバーに動的計算タグを付けます。会計次元に属していないメンバーを含む、すべての動的計算メンバーまたは動的計算および保管メンバーに2パス・タグを付けることができます。2パス計算の使用を参照してください。

2パス・タグが付けられたメンバーと属性メンバーの相互作用については、属性次元と標準次元の比較を参照してください。

密次元の2パス・メンバーでのクエリーによる、動的計算キャッシュへの影響の詳細は、2パス・メンバーと動的計算を参照してください。

親子関係と動的計算

親メンバーに1つの子メンバーがあり、その子に動的計算タグを付ける場合は、親にも動的計算タグを付ける必要があります。同様に、子に動的計算および保管タグを付ける場合は、親にも動的計算および保管タグを付ける必要があります。ただし、親メンバーに1つの子メンバーがあり、親が動的計算メンバーまたは動的計算および保管メンバーの場合は、その子に動的計算タグまたは動的計算および保管タグを付ける必要はありません。

計算スクリプトと動的計算

Essbaseでは、計算スクリプトのCALC ALLまたはCALC DIMステートメントを計算するときに、動的計算メンバーと動的計算および保管メンバーの計算をバイパスします。

同様に、メンバー・セット関数(@CHILDRENや@SIBLINGSなど)を使用して、計算するメンバーのリストを指定した場合、Essbaseでは、作成されたリストのすべての動的計算メンバーまたは動的計算および保管メンバーの計算がバイパスされます。

計算スクリプトで明示的に動的計算メンバーまたは動的計算および保管メンバーを指定した場合、その計算スクリプトは失敗します。計算スクリプトで動的計算メンバーまたは動的計算および保管メンバーの計算は実行できません。計算スクリプトを使用してメンバーを明示的に計算する場合は、メンバーに動的計算タグを付けないでください。

たとえば、次の計算スクリプトは、Qtr1が動的計算メンバーでない場合にのみ有効です:

      FIX (East, Colas)
   Qtr1;
ENDFIX
   

式と動的に計算されるメンバー

式をデータベース・アウトラインに適用するときに、動的に計算されるメンバーをその式に追加できます。たとえば、Qtr1が動的計算済メンバーの場合、データベース・アウトラインでQtr1に次の式を設定できます:

      Qtr1 = Jan + Feb;
   

動的に計算されるメンバーを、計算スクリプトで式計算の対象にすることはできません。Essbaseでは、動的に計算される値に対してメモリーが確保されないため、値をそのメンバーに割り当てることができません。たとえば、Qtr1が動的計算済メンバーまたは動的計算および保管メンバーの場合に計算スクリプトに次の式を追加すると、Essbaseによって構文エラーが表示されます:

      Qtr1 = Jan + Feb;
   

Qtr1が動的計算メンバーまたは動的計算および保管メンバーで、年が動的計算でも動的計算および保管でもない場合は、計算スクリプトで次の式を使用できます:

      Year = Qtr1 + Qtr2;
   

Essbaseでは、動的に計算されるメンバーに値を割り当てないので、この式は有効です。

注:

データベース・アウトラインまたは計算スクリプトの式で、動的に計算されるメンバーを参照すると、Essbaseでは、動的計算を実行するために通常の計算が中断されます。この中断によって、計算パフォーマンスが大幅に低下する可能性があります。

スクリプトと動的に計算されるメンバー

計算スクリプトの前処理段階では、アウトラインに密の動的計算メンバーが含まれているかどうかを判断できません。スクリプトにランタイムに依存する式がある場合、Essbaseでは、スクリプトの実行時に密の動的計算メンバーをすべて計算する必要があります。SET FRMLRTDYNAMIC OFF計算コマンドを使用すると、この動的計算メンバーの計算が停止されるのでパフォーマンスを向上させることができます。『Oracle Essbaseテクニカル・リファレンス』を参照してください。

動的に計算される子

メンバーの計算が動的計算の子メンバーまたは動的計算および保管の子メンバーの計算に依存する場合、Essbaseでは、親を計算するためにデータベースのバッチ計算時に子メンバーを最初に計算する必要があります。このため、通常の計算時間は短縮されません。この要件は、疎次元のメンバーおよび密次元のメンバーに適用されます。

たとえば、図127では、Qtr1は動的計算メンバーです。その子Jan、FebおよびMarは動的メンバーではありません。その親である年も動的メンバーではありません。Essbaseでは、データベースのバッチ計算時に年を計算する際、Qtr1を含む子の値を集計する必要があります。このため、Qtr1が動的計算メンバーでも、Qtr1を計算するための追加の時間が必要になります。

図 127. 動的計算メンバーとしてQtr1を示しているSample.Basicアウトライン

この図は、Qrt1が動的計算メンバーであるアウトラインを示しています。

「動的計算」または「動的計算および保管」の選択

ほとんどの場合、計算パフォーマンスを最適化し、ディスク使用量を減らすには、動的計算および保管メンバーではなく、動的計算メンバーを使用します。ただし、特定の状況では、動的計算および保管メンバーの方が適しています。

疎次元メンバーの推奨事項

ほとんどの場合、疎次元メンバーを動的に計算するときには、動的計算および保管タグではなく、動的計算タグを付けます。動的計算メンバーを含んでいるメンバーの組合せのデータ値をEssbaseで計算するときに、関連するデータ・ブロックの要求された値のみがEssbaseによって計算されます。この値には、データ・ブロックのサブセットである値を使用できます。

ただし、動的計算および保管メンバーを含んでいるメンバーの組合せのデータ値をEssbaseで計算するときに、要求されたデータ値がデータ・ブロックのサブセットの場合でも、Essbaseではデータ・ブロック全体を計算し、保管する必要があります。このため、計算時間が長くなり、最初の取得時間も長くなります。

Essbaseでは、要求されたデータ値を含んでいるデータ・ブロックのみを保管します。要求されたデータ・ブロックを計算するために中間のデータ・ブロックを計算する必要がある場合、Essbaseでは、その中間ブロックを保管しません。

中間のデータ・ブロックを計算すると、最初の取得時間が大幅に長くなります。たとえば、Sample.Basicデータベースでは、市場と製品は疎次元です。市場と市場の子が動的計算および保管メンバーであるとします。ユーザーがメンバーの組合せMarket -> Cola -> Jan -> Actual -> Salesのデータ値を取得する場合、Essbaseで、Market -> Colaデータ・ブロックが計算され保管されます。Market -> Colaを計算して格納するために、Essbaseでは、中間のデータ・ブロック(East -> Cola、West -> Cola、South -> ColaおよびCentral -> Cola)が計算されます。Essbaseでは、これらの中間のデータ・ブロックは格納されません。

特定の特徴を持つメンバーの推奨事項

動的計算および保管を使用すると、最初の取得が遅くなることがありますが、後続の取得は動的計算メンバーよりも速くなります。次のメンバーには、動的計算ではなく、動的計算および保管を使用します:

  • リモート・データベースに子を持つ上位レベルの疎次元メンバー。

    Essbaseでは、リモート・データベースから値を取得する必要があるので、取得時間は長くなります。パーティション内のデータの動的計算を参照してください。

  • 複雑な式を持つ疎次元メンバー。

    Essbaseでは、複雑な式にはコストのかかる計算が必要です。財務関数または次元間メンバーを含んでいる式は複雑な式です。

  • ユーザーが上位レベルの疎次元メンバーを頻繁に取得する場合は、取得時間が短いことが重要です。

たとえば、Sample.Basicデータベースでほとんどのユーザーが市場レベルでデータを取得する場合は、市場に動的計算および保管タグを付けて、その子に動的計算タグを付けます。

図 128. Sample.Basicアウトライン、市場は動的計算および保管メンバー

この図は、市場が動的計算および保管メンバーであるアウトラインを示しています。

密次元メンバーの推奨事項

密次元メンバーには動的計算メンバーを使用します。密次元でメンバーを動的計算および保管として定義しても、取得時間とバッチ計算時間はわずかしか短縮されません。また、Essbaseでは、メンバーのデータ値に対してデータ・ブロックにスペースを確保するので、データベース・サイズ(ディスク使用量)は大幅には縮小されません。

多数の同時ユーザーが使用するデータの推奨事項

同時ユーザーが使用するデータには、動的計算メンバーを使用します。多数のユーザーが同時にEssbaseのデータを取得する場合、動的計算および保管メンバーの最初の取得時間は、動的計算メンバーの場合よりも大幅に長くなる可能性があります。

動的計算および保管メンバーの取得時間は、同時に取得するユーザーの数が増えるにつれて長くなります。ただし、動的計算メンバーの取得時間は、同時に取得するユーザーの数が増えても長くなりません。

多数のユーザーが同時にデータにアクセスする場合は、動的計算および保管メンバーではなく、動的計算メンバーを使用した方が取得時間が大幅に短くなる可能性があります。

動的計算による計算順序の変更の理解

動的に計算されるデータ値を使用すると、Essbaseで値を計算する順序が変更され、データベースの管理方法に影響が及ぶ場合があります。

動的計算の計算順序

Essbaseでは、データ値を動的に計算するときに、データベースのバッチ計算順序とは異なる順序でデータを計算します。

バッチ計算の場合、Essbaseでは次の順序でデータベースが計算されます:

  1. 勘定科目タグが付けられた次元

  2. 時間タグが付けられた次元

  3. その他の密次元(データベース・アウトラインに表示されている順)

  4. その他の疎次元(データベース・アウトラインに表示されている順)

  5. 2パス計算

計算順序の定義。を参照してください。

動的計算値の場合、Essbaseでは取得時に、値を計算するために、次の順序でデータベースが計算されます:

  1. 疎次元

    • 時間タグが付けられた次元が疎で、データベース・アウトラインに時系列データが使用されている場合、Essbaseでは時間次元に基づいて疎の計算が行われます。

    • その他の場合は、Essbaseでは、通常バッチ計算に使用する次元に基づいて計算が行われます。

  2. 密次元

    1. 密の場合は、勘定科目タグが付けられた次元

    2. 密の場合は、時間タグが付けられた次元

    3. 時系列計算

    4. 残りの密次元

    5. 2パス計算

    6. 属性

データの取得で属性メンバーを使用する場合、計算順序の最後の手順は属性の総計です。属性計算は、クエリーで指定された属性メンバーに一致する、即時的な集約をデータ・ブロックで実行します。クエリーに2パス計算メンバーが含まれる場合、属性計算は、すべての集約値が収集された後に2パス計算メンバー式を適用します。この2パス計算は、実際のデータ・ブロックの値ではなく、属性計算からデータ値を使用します。

クエリーで属性メンバーを使用すると、Essbaseでは動的計算でタイム・バランス・メンバーの値が無視されます。属性を使用しない取得では、タイム・バランス・メンバーの値が計算に適用されます。属性メンバーを使用する場合と使用しない場合の計算手順の違いによって、動的に計算される上位レベルの時間メンバーの結果が異なるものになります。

属性を使用しない取得では、動的に計算されるメンバーは最後の手順で計算されるので、タイム・バランスの機能が適切に適用されます。一方、属性を使用する取得では、属性の総計が最後に適用される手順です。計算順序の違いによって、動的に計算される上位レベルの時間メンバーに対して2つの異なる予測可能な結果が生成されます。

動的に計算する2パス・メンバーの計算順序

Essbaseで2パス・タグが付けられたメンバーのデータ値を動的に計算するときに必要な計算結果が得られるように、次の情報を考慮してください(2パス計算の使用を参照)。

複数の動的計算または動的計算および保管の密次元メンバーに2パス・タグが付けられている場合、Essbaseでは、最初のパスで動的計算が実行され、その後2パス・メンバーが次の順序で計算されます:

  1. 会計次元の2パス・メンバー(存在する場合)

  2. 時間次元の2パス・メンバー(存在する場合)

  3. 残りの密次元の2パス・メンバー(順序は、アウトラインにおける次元の順序どおり)

たとえば、Sample.Basicデータベースで、次のように想定します:

  • メジャー密次元(勘定科目タグが付けられた次元)のMargin%には、動的計算および2パス・タグが付けられています。

  • シナリオ密次元のVarianceには、動的計算および2パス・タグが付けられています。

Essbaseでは、勘定科目次元メンバーが先に計算されます。そのため、Essbaseは、Margin% (メジャー次元から)を計算し、その次にVariance (シナリオ次元から)を計算します。

シナリオが疎次元の場合、Essbaseでは、動的計算の通常の計算順序に従って、最初にVarianceが計算されます。次にEssbaseによってMargin%が計算されます。動的計算の計算順序を参照してください。

この計算順序では、Varianceの式ではなく、Margin%の式を使用してEssbaseでMargin% -> Varianceを計算する必要があるので、必要な結果が得られません。シナリオを密次元にすると、この問題を防ぐことができます。メジャー次元(会計次元)が疎の場合、Essbaseでは最初にMargin%を計算するので、この問題は発生しません。

非対称型データの計算順序

動的計算に使用される計算順序は、データベースのバッチ計算に使用される計算順序と異なるので、一部のデータベース・アウトラインでは、メンバーに動的計算タグまたは動的計算および保管タグを付けた場合に異なる計算結果を得る可能性があります。この違いは、Essbaseで非対称型データを動的に計算したときに発生します。

対称型データの計算では、計算される次元に関係なく、同じ結果が生成されます。

表75のデータ・セットを使用して、Qtr1 -> Profitを計算すると、時間タグが付けられた次元に従って計算しても、勘定科目タグが付けられた次元に従って計算しても、同じ結果になります。時間次元に従って計算すると、次のようにJan、FebおよびMarの値が加算されます:

      50+100+150=300 
   

会計次元に従って計算すると、次のようにQtr1 -> SalesからQtr1 -> COGSが減算されます:

      600–300=300 
   

表 75. 対称型計算の例

時間->勘定科目

Jan

Feb

Mar

Qtr1

Sales

100

200

300

600

COGS

50

100

150

300

Profit (Sales - COGS)

50

100

150

300

非対称型データの計算では、次元ごとに異なる計算が行われます。

表76のデータ・セットを使用して、East -> Salesを計算すると、市場次元に従って計算した場合は正しい結果になりますが、会計次元に従って計算した場合は誤った結果になります。市場次元に従って計算すると、次のようにNew York、FloridaおよびConnecticutの値が加算され、正しい結果になります:

      50 + 100 + 100 = 250
   

会計次元に従って計算すると、次のようにEast -> Priceの値とEast -> UnitsSoldの値が乗算され、誤った結果になります:

      15 * 50 = 750
   

表 76. 非対称型計算の例

市場->勘定科目

New York

Florida

Connecticut

East

UnitsSold

10

20

20

50

Price

5

5

5

15

Sales (Price * UnitsSold)

50

100

100

250

次のアウトラインでは、Eastが疎次元で、Accountsが密次元です:

この図は、Eastは疎次元で、Accountsは密次元であるアウトラインを示しています。

EastとSalesに動的計算タグが付けられている場合、Essbaseでは、EastとSalesに動的計算タグが付けられていない場合とは異なる計算結果が生成されます。

EastとSalesが動的計算メンバーでない場合、Essbaseでは次の次元が計算され、正しい結果が生成されます:

  1. Accounts密次元(New York、FloridaおよびConnecticutのUnitsSold、PriceおよびSalesの値を計算します)

  2. East疎次元(EastのSales値を得るために、New York、FloridaおよびConnecticutのUnitsSold、PriceおよびSalesの計算値を集約します)

EastとSalesが動的計算メンバーの場合、Essbaseでは次の次元が計算され、誤った結果が生成されます:

  1. East疎次元(Eastの値を得るために、New York、FloridaおよびConnecticutのUnitsSold、PriceおよびSalesの値を集約します)

  2. East -> Salesの値(Eastデータ・ブロック内の集約値を取得し、Salesの値を得るためにこの集約値を使用して式計算を実行します)

この問題を回避して必要な結果を確実に得るには、Salesメンバーに動的計算タグまたは動的計算および保管タグを付けないでください。

取得時間に対する影響の軽減

密次元のメンバーを動的に計算するときの取得時間の増加は、メンバーに複雑な式が含まれていないかぎり、大きくありません。取得時間は、疎次元のメンバーに動的計算タグまたは動的計算および保管タグを付けた場合に大幅に増加する可能性があります。

次の各項では、データベースに対する動的計算メンバーの影響を分析および管理する方法について説明します。

注:

クエリー取得に最も重大な影響を与える関数のリストは、メンバー・セット関数またはパフォーマンスの選択を参照してください。

取得係数の表示

Essbaseでは、データベース・アウトラインの保存時にそのアウトラインの取得係数が計算されるので、これによって取得時間の増加を推測できます。この取得係数は、Essbaseで計算するのに最もコストのかかる、動的に計算されるデータ・ブロックに基づいてEssbaseによって計算されます。取得係数では、集約のみを考慮しています。式の取得の影響は考慮していません。

取得係数は、最もコストのかかるブロックを計算するために、ディスクまたはデータベースからEssbaseによって取得する必要があるデータ・ブロックの数です。データベースで、密次元にのみ動的計算メンバーまたは動的計算および保管メンバーが存在する(疎次元に動的計算メンバーと動的計算および保管メンバーが存在しない)場合の取得係数は、1です。

取得係数の高い(たとえば、2000を超える)アウトラインでは、ユーザーがデータを取得するときに大きな遅延が発生する可能性があります。ただし、取得時間への実際の影響は、ユーザーが取得する動的に計算されるデータ値の数によっても異なります。取得係数は1つの指標にすぎません。アプリケーションによっては、動的計算メンバーを使用することで、データベース・サイズとインデックス・サイズが小さくなり、取得時間が短縮される場合もあります。

Essbaseでは、アプリケーション・ログに取得係数の値が表示されます。

  推定の取得係数を表示する方法は、Essbaseサーバー・ログおよびアプリケーション・ログの表示を参照してください。

このサンプルと同様のメッセージは取得係数を表します:

      [Wed Sep 20 20:04:13 2000] Local/Sample///Info (1012710)
Essbase needs to retrieve [1] Essbase kernel blocks in order
to calculate the top dynamically-calculated block.
   

このメッセージでは、Essbaseで、最もコストのかかる、動的に計算されるデータ・ブロックを計算するために1つのブロックを取得する必要があることがわかります。

動的に計算されるメンバーの要約の表示

動的計算メンバーまたは動的計算および保管メンバーをデータベース・アウトラインに追加して、そのアウトラインを保存すると、Essbaseにより、動的計算タグと動的計算および保管タグが付けられたメンバーの数に関する要約が作成されます。この要約はEssbaseのアプリケーション・ログに表示されます。

  動的に計算されるメンバーの要約を表示する方法は、Essbaseサーバー・ログおよびアプリケーション・ログの表示を参照してください。

次のサンプルと同様のメッセージが表示されます:

      [Wed Sep 20 20:04:13 2000]Local/Sample///Info(1007125)
The number of Dynamic Calc Non-Store Members = [ 8 6 0 0 2]

[Wed Sep 20 20:04:13 2000]Local/Sample///Info(1007126)
The number of Dynamic Calc Store Members = [ 0 0 0 0 0]
   

このメッセージでは、データベース・アウトラインの最初の次元に8個、2番目の次元に6個、5番目の次元に2個の動的計算メンバーがあることがわかります。この数には動的時系列メンバーが含まれています。

この例には、動的計算および保管メンバーは含まれていません。

取得バッファ・サイズの拡張

Smart Viewにデータを取得するとき、またはレポート・ライターを使用してデータを取得するときに、Essbaseでは、取得バッファを使用して取得を最適化します。Essbaseでは、データがセクション単位で処理されます。取得バッファ・サイズを増やすと、Essbaseで一度に処理できるデータのセクションが増えるので、取得時間を大幅に短縮できます。

デフォルトの取得バッファ・サイズは10KBです。ただし、取得バッファ・サイズに10KBを超えるサイズを設定すると、取得時間が短縮できます。取得バッファのサイズの設定を参照してください。

  取得バッファ・サイズを設定するには、次のツールを使用します:

ツール

トピック

場所

Administration Services

取得バッファ・サイズの設定

Oracle Essbase Administration Services Online Help

MaxL

alter database

『Oracle Essbaseテクニカル・リファレンス』

ESSCMD

SETDBSTATEITEM

『Oracle Essbaseテクニカル・リファレンス』

動的計算キャッシュの使用

デフォルトでは、Essbaseでは、密次元の動的計算メンバーを、たとえばクエリーのために計算するときに、計算に必要なすべてのブロックを動的計算キャッシュと呼ばれるメモリーの領域に書き込みます。Essbaseでは、そのブロックを動的計算キャッシュに書き込むときに、そのブロックを拡張して、密次元のすべての動的計算メンバーを含めます。

クエリーに密次元の2パス計算メンバーが含まれる場合、クエリーでは取得対象のブロックに対してそれぞれ1つの動的計算キャッシュが必要です。

Essbaseの動的計算キャッシュを使用すると、動的計算のメモリー使用率を集中制御できます。動的計算キャッシュでデータ・ブロックを管理すると、全体のメモリー・スペース要件が小さくなり、メモリー割当てを行うためにオペレーティング・システムを呼び出す回数を減らせるので、パフォーマンスを向上させることができます。

注:

動的計算キャッシュと計算キャッシュでは、計算パフォーマンスを最適化するためのアプローチが異なります。計算機キャッシュのサイズ設定を参照してください。

動的計算キャッシュの使用状況の確認

Essbaseでは、データの取得ごとに2つのメッセージがアプリケーション・ログに書き込まれます。次の例で、最初のメッセージは取得にかかった合計時間を示しています:

      [Thu Aug 03 14:33:00 2005]Local/Sample/Basic/aspen/Info(1001065)
Regular Extractor Elapsed Time : [0.531] seconds

[Thu Aug 03 14:33:00 2005]Local/Sample/Basic/aspen/Info(1001401)
Regular Extractor Big Blocks Allocs -- Dyn.Calc.Cache : [30] non-Dyn.Calc.Cache : [0]
   

動的計算キャッシュを使用している場合は、2つ目のメッセージに、データ計算機キャッシュ内で計算されたブロックの数(Dyn.Calc.Cache: [n])、および動的計算キャッシュの外部のメモリーで計算されたブロックの数(non-Dyn.Calc.Cache: [n])が表示されます。

動的計算キャッシュが効果的に使用されているかどうかを判断するために、両方のメッセージを確認して、essbase.cfgの設定を検討します。たとえば、ブロックが動的計算キャッシュの外部および内部で計算されたことがメッセージに示されている場合は、DYNCALCCACHEMAXSIZE設定を増やすことができます。指定した最大サイズがサーバー上のすべての動的計算キャッシュに用意できる上限の場合、および計算機キャッシュの外部のメモリーを使用して動的に計算される取得を実行すると、スワッピングやページング・アクティビティなどが原因で許容できない遅延が発生する場合は、DYNCALCCACHEWAITFORBLKをTRUEに設定します。

performance statistics文法と一緒にquery database MaxLステートメントを使用して、動的計算キャッシュのアクティビティの要約を表示できます。『Oracle Essbaseテクニカル・リファレンス』を参照してください。

標準的な手順での動的計算の使用

標準のEssbase手順で動的計算を使用すると、次のプロセスに影響します:

  • データとデータ・ブロックの消去

    CLEARBLOCK DYNAMICコマンドを使用して、動的計算および保管メンバーの組合せのデータ・ブロックを削除できます。

    CLEARDATAコマンドを使用して、動的計算および保管データ・ブロックにマークできるので、Essbaseでブロックの再計算を認識できます。CLEARDATAコマンドは、動的計算メンバーのデータ値に影響しません。

  • データのコピー

    動的に計算されるデータ値にはデータをコピーできません。動的計算メンバーと動的計算および保管メンバーは、DATACOPY計算コマンドの対象として指定できません。

  • 通貨換算

    動的計算メンバーと動的計算および保管メンバーは、CCONVコマンドの対象として指定できません。

  • データのロード

    データのロード時に、Essbaseでは、動的計算メンバーまたは動的計算および保管メンバーを含んでいるメンバーの組合せにデータをロードしません。Essbaseでは、データのロード時にこれらのメンバーはスキップされ、エラー・メッセージは表示されません。

    データのロード後に動的計算メンバーと動的計算および保管メンバーにデータを配置する場合は、Essbaseで動的計算および保管メンバーが確実に再計算されるようにしてください。再計算で更新された値による影響を参照してください。

  • データのエクスポート

    Essbaseでは、データをエクスポートする前に動的計算値が計算されることはありません。Essbaseでは、動的計算メンバーの値はエクスポートされません。以前にユーザーがデータを取得した際の計算値がデータベースに存在する場合にのみ、Essbaseで動的計算および保管メンバーの値がエクスポートされます。

  • データのレポート

    Essbaseでは、動的に計算されるメンバーにSPARSEデータ抽出メソッドを使用できません。SPARSEデータ抽出メソッドは、報告されるデータ行の大部分が#MISSINGの場合にパフォーマンスを最適化します。『Oracle Essbaseテクニカル・リファレンス』の<SPARSEコマンドに関する説明を参照してください。

  • 計算スクリプトに含まれる動的メンバー

    データベースの計算時に、Essbaseでは、すべての動的計算メンバーと動的計算および保管メンバーの計算がスキップされます。計算スクリプト内で動的計算メンバーまたは動的計算および保管メンバーのメンバー計算を実行しようとすると、Essbaseでエラー・メッセージが表示されます。計算スクリプトと動的計算を参照してください。

動的計算メンバーと動的計算および保管メンバーの作成

  アウトライン・エディタを使用して動的計算メンバーと動的計算および保管メンバーを作成する方法は、『Oracle Essbase Administration Servicesオンライン・ヘルプ』の「メンバー・ストレージ・プロパティの設定」を参照してください。

  次元の構築時に、次元構築データ・ファイルで動的計算メンバーと動的計算および保管メンバーを作成するには、動的計算にプロパティXを使用し、動的計算および保管にプロパティVを使用します。データ・ソースを使用したメンバー・プロパティの操作を参照してください。

データベースの再構築

動的計算メンバーを密次元に追加すると、Essbaseでは、そのメンバーの値に対してデータ・ブロックのスペースが確保されません。このため、Essbaseではデータベースを再構築する必要がありません。ただし、動的計算および保管メンバーを密次元に追加すると、Essbaseで、そのメンバーの値に対して関連データ・ブロックのスペースが確保されるので、データベースを再構築する必要があります。

動的計算メンバーまたは動的計算および保管メンバーを疎次元に追加すると、Essbaseによりインデックスが更新されますが、関連データ・ブロックは変更されません。インデックス・マネージャを参照してください。

Essbaseでは、データベースを再構築する必要がなければ、データベース・アウトラインの変更がきわめて高速で保存されます。

次の場合は、Essbaseでデータベースの再構築およびインデックスの変更が行われません(Essbaseではデータベース・アウトラインのみを保存し、この処理は非常に高速です):

  • 密次元の動的計算メンバーを追加、削除または移動する。

    メンバーが動的計算および保管の場合は、Essbaseでデータベースが再構築されます。

  • 密次元メンバーのストレージ・プロパティを動的計算および保管メンバーから非動的ストレージ・プロパティに変更する。

  • 疎次元の動的計算メンバーまたは動的計算および保管メンバーのストレージ・プロパティを非動的ストレージ・プロパティに変更する。

  • 動的計算メンバーまたは動的計算および保管メンバーの名前を変更する。

次の場合、Essbaseでは、データベースは再構築されませんが、データベースのインデックスは再構築されます。この処理はきわめて高速です:

  • 疎次元の動的計算メンバーまたは動的計算および保管メンバーを追加、削除または移動する。

  • 密次元メンバーのストレージ・プロパティを非動的値から動的計算および保管に変更する。

次の場合、Essbaseではデータベースが再構築されます:

  • 密次元の動的計算および保管メンバーを追加、削除または移動する。

    メンバーが動的計算の場合、Essbaseではデータベースは再構築されません。

  • 密次元の動的計算および保管メンバーを動的計算メンバーに変更する。

  • 密次元の動的計算メンバーを動的計算および保管メンバーに変更する。

  • 密次元の非動的メンバーのストレージ・プロパティを動的計算に変更する。

  • 密次元のストレージ・プロパティを動的計算メンバーから非動的値に変更する。

  • 疎次元の非動的メンバーのストレージ・プロパティを動的計算または動的計算および保管に変更する。

データベースの再構築のタイプを参照してください。

パーティション内のデータの動的計算

パーティションの透過領域、複製領域またはリンク領域で、動的計算メンバーと動的計算および保管メンバーを定義できます。パーティション・アプリケーションの設計を参照してください。

たとえば、リモート・データベース(透過データベース・パーティション)上に子を持つ、上位レベルの疎次元メンバーに動的計算および保管タグを付けた場合、Essbaseでは、他のデータベースから子の値を取得するので、取得時間が長くなります。動的計算および保管のかわりに動的計算を使用できますが、後続の取得時間への影響が大きくなりすぎる可能性があります。

たとえば、ローカル・データベースがCorporateデータベースで、そのデータベースにEast、West、SouthおよびCentralの地域データへの透過パーティションがあるとします。親メンバーのMarketに動的計算および保管タグを付けることができます。

透過パーティションでは、リモート・データベース上の定義がローカル・データベース上の定義よりも優先されます。たとえば、ローカル・データベースで動的計算タグが付けられているメンバーに、リモート・データベースではそのタグが付けられていない場合、Essbaseでは、リモート・データベースから値が取得され、ローカル計算は実行されません。

複製パーティションを使用する場合は、動的計算および保管メンバーではなく、動的計算メンバーを使用することを検討してください。複製データの計算時に、Essbaseではリモート・データベースから子ブロックを取得しないので、取得時間への影響は大きくありません。

注:

Essbaseでは、データを複製するときに、各ソース・データ・ブロックと対応するターゲット・データ・ブロックで、タイム・スタンプを確認します。ソース・データ・ブロックの方が新しい場合は、Essbaseでそのデータ・ブロックのデータが複製されます。ただし、動的に計算されるデータには、データ・ブロックとタイム・スタンプがありません。このため、Essbaseでは、動的に計算されるデータは必ず複製されます。