メンバー計算順序
Essbaseはデータ・ブロック・レベルでデータベースを計算し、1つ以上のブロックをメモリーに取り込み、ブロック内の必要な値を計算します。 Essbaseでは、ブロック番号に従ってブロックが順番に計算されます。 データベース・アウトラインは、ブロックの順序をEssbaseに指示します。 各ブロック内で、Essbaseはデータベース・アウトラインの階層に従って値を順番に計算します。 したがって、全体として、Essbaseはデータベース・アウトラインに基づいてデータベースを計算します。
データベースでデフォルト計算(CALC ALL)を実行すると、Essbaseでは次の順序でディメンションが計算されます:
-
勘定科目としてタグ付けされたディメンションと時間としてタグ付けされたディメンションの両方が存在し、式が勘定科目ディメンションのメンバーに適用される場合、Essbaseでは次の順序で計算されます:
-
勘定科目としてタグ付けされたディメンション
-
timeとしてタグ付けされたディメンション
-
その他の密ディメンション(データベース・アウトラインに表示される順序)
-
その他の疎ディメンション(データベース・アウトラインに表示される順序)
-
-
それ以外の場合、Essbaseは次の順序で計算します:
-
密ディメンション(データベース・アウトラインに表示される順序)
-
疎ディメンション(データベース・アウトラインに表示される順序)
-
ノート:
データベース連結に含まれていない属性ディメンションは、計算順序に影響しません。 属性の操作を参照してください。
Sample.Basicデータベースでは、ディメンションは次の順序で計算されます: メジャー、年、シナリオ、製品および市場。
計算スクリプトを使用して、デフォルトの順序を上書きできます。 「ブロック・ストレージ・データベース用の計算スクリプトの開発」を参照してください。
メンバー関係の影響の理解
各ディメンション内での計算の順序は、データベース・アウトラインのメンバー間の関係によって異なります。 ディメンションの各ブランチ内で、レベル0の値が最初に計算され、次にレベル1の親値が計算されます。 次の分岐のレベル0の値が計算され、その次にレベル1の親値が計算されます。 計算は、すべてのレベルが計算されるまで続行されます。
次の図は、Sample.BasicデータベースのYearディメンションを示しています。 計算順序が左側に表示されます。 この例では、親メンバーが「動的計算」としてタグ付けされていないことを想定しています。
図20-3 Sample.BasicデータベースからのYearディメンション

Janは最初のブランチの最初のメンバーです。 Janには式がないため、計算されません。 同じことが、ブランチ内の他の2人のメンバーFebとMarにも当てはまります。
Essbaseは、Jan、FebおよびMarを連結してQtr1を計算します。この例では、これらのメンバーが追加されます。
Essbaseは、Qtr4ブランチを介して同じ方法でQtr2を計算します。
最後に、Essbaseは、Qtr4を介してQtr1の値を集計することでYearメンバーを計算します。 これらのメンバーが追加されます。
メンバー連結の決定
計算演算子(+、 -、 /, *、%、~、^)をデータベース・アウトラインのメンバーに適用することで、Essbaseでのメンバーの集計方法を選択できます。
勘定科目メンバーにタイム・バランス・タグ(最初、最後または平均)がある場合、Essbaseではそれに応じて集計されます。 「最初、最後および平均の値の計算」を参照してください。
親メンバーにラベルのみの演算子がある場合、Essbaseはその子から親を計算しません。
メンバーに~演算子がある場合、Essbaseはメンバーをその親まで連結しません。
メンバーに^演算子がある場合、Essbaseではどのディメンションのメンバーも集計されません。
ノート:
動的計算を使用する場合、Essbaseでは異なる計算順序が使用されることがあります。 「動的計算の計算順序」を参照してください。
データベース・アウトラインでのディメンションの順序付け
次のいずれかのタスクを実行する場合は、必要な計算結果が得られるように、データベース・アウトラインのディメンションの計算順序を検討してください:
-
計算演算子を使用して、データベース・アウトラインのメンバーの除算(/)、乗算(*)またはパーセンテージの計算(%)を行います。
-
データベース・アウトラインのメンバーに式を配置します。
計算演算子のみを使用してデータベース・アウトラインでメンバーを加算(+)および減算(-)し、アウトラインで式を使用しない場合は、計算順序を考慮する必要はありません。
参照:
データベース・アウトラインのメンバーへの式の配置
データベース・アウトラインのメンバーに式を配置する場合は、ディメンションの計算順序を考慮してください。 あるディメンションのメンバーに添付された式は、別のディメンションの後続の計算によって上書きされる場合があります。
たとえば、Sample.Basicデータベースには、勘定科目としてタグ付けされたMeasuresディメンションと時間としてタグ付けされたYearディメンションがあります。 メジャーが最初に計算され、年秒が計算されます。 Measuresディメンションのマージンに式を添付すると、EssbaseではMeasuresディメンションの計算時に式が計算されます。 Essbaseは、Yearディメンションを連結する際に式を上書きします。 「セルの計算順序」を参照してください。
計算演算子*、 /,および%の使用
計算演算子を使用してデータベース・アウトラインのメンバーの乗算(*)、除算( / )およびパーセンテージ計算(%)を行う場合は、ディメンションの計算順序を考慮してください。 必要な計算値は、別のディメンションの後続の計算によって上書きされる可能性があります。
たとえば、Sample.Basicデータベースには、勘定科目としてタグ付けされたMeasuresディメンションと時間としてタグ付けされたYearディメンションがあります。 メジャーが最初に計算され、年秒が計算されます。 Measuresディメンションのメンバーを乗算した場合、EssbaseでYearディメンションの値が連結されると、計算結果が上書きされることがあります。 「セルの計算順序」を参照してください。
乗算(*)、除算( / )またはパーセンテージ(%)演算子を使用してメンバーを連結する場合は、ブランチ内のメンバーを慎重に順序付けして必要な結果を得る必要があります。
「図20-4」では、計算演算子はアウトラインに表示されるとおりに表示されます。 ユーザーが、子2と子3の合計を子1で除算するとします。 ただし、Child 1が最初のメンバーの場合、EssbaseはChild 1で始まり、値#MISSINGで始まり、Child 1で除算します。 結果は#MISSINGです。 その後、Essbaseによって子2と子3が追加されます。 明らかに、この結果は必須ではありません。
図20-4 データベース・アウトラインの計算演算子

正しい結果を計算するには、子1を分岐の最後のメンバーにします。
式をデータベース・アウトラインのメンバーに適用して、同じ結果を得ることができます。 ただし、「図20-4」に示されているように、これらの計算演算子をメンバーに対して使用する方がはるかに効率的です。
繰越計算参照の回避
計算結果を取得するには、アウトラインに前方計算参照が含まれていないことを確認してください。 「繰越計算参照」は、計算メンバーの値が、Essbaseでまだ計算されていないメンバーに依存している場合に発生します。 このような場合、Essbaseでは必要な計算結果が生成されないことがあります。
たとえば、次に示すProductディメンションに3つの前方計算参照があるとします : 2つの共有メンバー(P100-20およびP300-20)と1つの非共有メンバー(P500-20):
図20-5 先渡し計算参照のある製品ディメンション

「アウトライン・エディタ」でアウトラインを確認すると、Essbaseにより、フォワード計算参照を持つ共有メンバーが識別されます。 アウトラインを検証しても、フォワード計算参照を持つ非共有メンバーは識別されません。 前方計算参照を含むアウトラインを保存して使用できます。
Dietの下の5人のメンバーについて考えてみます。 メンバーP100-20、P300-20およびP500-20には、フォワード計算参照があります:
-
P100-20(+) (共有メンバー): Essbaseは、参照メンバーP100-20を計算する前に共有メンバーP100-20を計算します。 参照メンバーP100-20には子があるため、共有メンバーP100-20を正確に計算するには、Essbaseで子を追加して参照メンバーを計算する必要があります。
-
P300-20(+) (共有メンバー): Essbaseは、参照メンバーP300-20を計算する前に共有メンバーP300-20を計算します。 参照メンバーP300-20には式があるため、共有メンバーP300-20を正確に計算するには、Essbaseで参照メンバーを計算する必要があります。
-
P500-20(+) ("P200-20" + "P300-20"): P500-20に適用される式は、Essbaseでまだ計算されていないメンバーを参照します。 このような参照メンバーであるP300-20には独自の式があり、EssbaseはP500-20を正確に計算する前にP300-20を計算する必要があります。 メンバーP200-20およびP400-20には前方計算参照がないため、正しく計算されます。
-
P200-20(+) (共有メンバー): P200-20前方計算参照ではありませんが、Essbaseは参照メンバーP200-20を計算する前に共有メンバーP200-20を計算します。 参照されるメンバーP200-20に計算依存性がありません(子も式もありません)。 したがって、Essbaseでは、共有メンバーの前に参照メンバーを計算する必要はありません。 Essbaseでは、単に参照されるメンバーの値が取得されます。
-
P400-20(+) ("P200-10" * 2): P400-20P400-20に適用される式は、Essbaseでまだ計算されていないメンバーを参照していますが、前方計算参照ではありません。 式で参照されているメンバー自体に計算依存性がありません。 P200-10式の唯一のメンバーであり、P200-10自体には子や式はありません。 Essbaseは、P400-20を正確に計算します。
P100-20、P300-20およびP500-20の正確な計算結果を得るには、アウトラインのメンバーの順序を変更します。 次に示すように、Diet共有メンバーをRegularメンバーの後に配置することで、Essbaseで必要な順序でメンバーが計算されるようになります。
図20-6 先渡し計算参照のない変更済Productディメンション

Essbaseでは、次の計算が行われます:
-
共有メンバーP100-20を計算する前の参照メンバーP100-20。 そのため、P100-20には前方計算参照がなくなりました。
-
共有メンバーP300-20の前の参照メンバーP300-20。 そのため、P300-20には前方計算参照がなくなりました。
-
メンバーP500-20の前に式P300-20を持つメンバー。 そのため、P500-20には前方計算参照がなくなりました。