動的に計算する値

一部のデータ値を動的に計算すると、バッチ計算時間とディスク使用量が減少しますが、取得時間が長くなる可能性があります。動的に計算するEssbaseメンバーを決定する場合は、次のトピックで説明するガイドラインを使用します。

式、ラベルのみのメンバーおよび共有メンバーを持たないレベル0のメンバーを除き、任意のメンバーを動的計算としてタグ付けできます。

どのメンバーを動的に計算するかの選択は、データベース構造、および(1)計算時間の短縮やディスク使用量の削減の必要性と、(2)ユーザー向けの高速なデータ取得の必要性とのバランスによって変わります。

Sample Basicデータベースでは、Yearディメンションは動的計算です。

図21-1 動的計算メンバーを示すサンプルの基本アウトライン


動的計算メンバーを含む年ディメンション

Smart Viewでは、ビジュアル・キューを表示して、動的に計算される値を区別できます。

動的に計算された値を含む問合せを開発する場合は、Smart Viewの「データなしでナビゲート」オプションを使用して、テスト問合せの作成時にEssbaseによって値が動的に計算および格納されないようにすることを検討してください。

密メンバーと動的計算

密ディメンションのEssbase 動的計算メンバーの適切な候補には、上位レベル・メンバーと、単純な式を持つレベル0メンバーが含まれます。

密ディメンションのメンバーに、次の変更を加えることを検討してください。

  • 密ディメンションの上位レベル・メンバーを動的計算としてタグ付けします。

  • 単純な式を持つ密ディメンションのレベル0のメンバーを動的計算としてタグ付けして、取得時間の増加を評価します。

    単純な式の場合、Essbaseでコストのかかる計算を実行する必要がありません。財務関数またはディメンション間演算子(->)を含んでいる式は複雑な式です。

疎メンバーと動的計算

疎ディメンションのEssbase 動的計算メンバーの適切な候補には、非常に多くの子を持たない上位レベルのメンバーと、式を持つメンバーが含まれます。

疎ディメンションのメンバーに、次の変更を加えることを検討してください。

  • 6個以下の子を持つ疎ディメンションの一部の上位レベル・メンバーを動的計算としてタグ付けします。

  • 複雑な式を持つ疎ディメンション・メンバーを動的計算としてタグ付けします。

    複雑な式の場合、Essbaseでコストのかかる計算を実行する必要があります。たとえば、財務関数を含んでいる式は複雑な式です。複合Essbaseメンバー式を参照してください

  • 頻繁に再構築するディメンションの上位レベル・メンバーを動的計算としてタグ付けします。

  • 20個以上の子孫を持つ疎ディメンションの上位レベル・メンバーは、動的計算としてタグ付けしないでください。

親子関係と動的計算

一人の子を持つ親

親メンバーに1つの子メンバーがあり、その子を動的計算としてタグ付けする場合は、親も動的計算としてタグ付けする必要があります。

ただし、親メンバーに1つの子メンバーがあり、親が動的計算メンバーの場合は、子を動的計算としてタグ付けする必要はありません。

バッチ計算での動的計算依存性

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

たとえば、次の図では、Qtr1は動的計算メンバーです。その子(Jan、FebおよびMar)は動的ではありません。その親であるYearは動的ではありません。Essbaseでは、バッチ計算時にYearを計算するときに、その子(Qtr1を含む)の値を集計する必要があります。そのため、Qtr1は動的計算ですが、Qtr1を計算するための追加の時間が必要です。

図21-2 動的計算メンバーとしてのQtr1を持つ年ディメンション


この図は、Qtr1がJan、FebおよびMarchに展開され、Qtr1のみが動的であるYearディメンションを示しています。

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

動的計算メンバーの計算スクリプトの計算は実行できません。If you are using a calculation script to calculate a member explicitly, do not tag that member as Dynamic Calc.

Essbaseでは、計算スクリプトのCALC ALL文またはCALC DIM文を計算するときに、動的計算メンバー計算を省略します。

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

計算スクリプトで明示的に動的計算メンバーを指定した場合、その計算スクリプトは失敗します。

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

FIX (East, Colas)
   Qtr1;
ENDFIX

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

Essbaseアウトライン式では動的計算メンバーを使用できますが、計算スクリプトでは式ターゲットとして使用できません。

式をアウトラインに適用するときに、動的に計算されるメンバーをその式に含めることができます。たとえば、Qtr1が動的計算メンバーの場合、データベース・アウトラインでQtr1に対する次の式を配置できます。

Qtr1 = Jan + Feb;

計算スクリプト内では、動的に計算されるメンバーを式計算のターゲットにすることはできません。Essbaseでは、動的に計算された値のメモリーは予約されず、その値に値を割り当てることはできません。たとえば、Qtr1が動的計算メンバーの場合、計算スクリプトに次の式を含めるとEssbaseで構文エラーが表示されます。

Qtr1 = Jan + Feb;

Qtr1が動的計算メンバーであり、Yearがそうでない場合、計算スクリプトで次の式を使用できます。

Year = Qtr1 + Qtr2;

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

ノート:

動的に計算されたメンバーを参照すると、アウトライン式でも計算スクリプトでも、Essbaseで、動的の計算を実行するために通常の計算が中断され、パフォーマンスに影響します。

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

実行時依存の動的計算メンバー式がある場合に過剰計算を回避するために、SET FRMLRTDYNAMIC OFFをEssbase計算スクリプトに追加できます。

計算スクリプトの前処理フェーズでは、アウトラインに密の動的計算メンバーが含まれているかどうかを判断できません。スクリプトに実行時依存の式がある場合、Essbaseでは、スクリプトの実行時に密の動的計算メンバーをすべて計算する必要があります。SET FRMLRTDYNAMIC OFF計算コマンドを使用すると、これらの動的計算メンバーの計算が停止されるため、パフォーマンスが向上します。