動的に計算する値の選択

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

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

密メンバーと動的計算

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

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

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

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

疎メンバーと動的計算

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

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

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

    複雑な式の場合、Essbaseでコストのかかる計算を実行する必要があります。たとえば、財務関数を含んでいる式は複雑な式です。「複雑な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はそうでない場合、計算スクリプトで次の式を使用できます。

Year = Qtr1 + Qtr2;

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

ノート:

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

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

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

動的に計算される子

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

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

図22-2 動的計算メンバーとしてQtr1を示すSample.Basicアウトライン


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