計算順序の定義

この項の内容:

データ・ブロック内のデータ・ストレージ

メンバーの計算順序

ブロックの計算順序

データ・ブロック番号の再設定

セルの計算順序

計算パス

共有メンバーの計算

この章の情報は、ブロック・ストレージ・データベースのみに適用され、集約ストレージ・データベースとは関係がありません。

関連項目:

データ・ブロック内のデータ・ストレージ

Essbaseでは、データ値はデータ・ブロック内に保管されます。Essbaseでは、疎次元メンバーの一意の組合せごとに、1データ・ブロックが作成されます(ただし、その組合せに対して、1つ以上のデータ値が存在する場合に限ります)。

各データ・ブロックには、疎次元メンバーの一意の組合せに対するすべての密次元メンバーの値が含まれます。

Sample.Basicデータベース内の年次元、メジャー次元およびシナリオ次元は密次元、製品次元と市場次元は疎次元です。図116は、Sample.Basicデータベース内の次元のアウトラインを示しています:

図 116. Sample.Basicデータベース内の次元

この図は、Sample.Basicデータベースの次元のアウトラインを示しています。

注:

Sample.Basicには、5つの属性次元も含まれます。これらの次元は疎な動的計算次元です。つまり、その属性データはデータベースに保管されません。属性の操作。を参照してください。

Essbaseでは、製品次元と市場次元の一意のメンバーの組合せごとにデータ・ブロックが1つ作成されます(ただし、その組合せに対して、1つ以上のデータ値が存在する場合にかぎります)。たとえば、100-10, New Yorkの組合せに対して1つのデータ・ブロックが作成されます。このデータ・ブロックには、100-10, New Yorkの年次元、メジャー次元およびシナリオ次元の値がすべて含まれます。図117は、Sample.Basicデータベースの「Product」次元と「Market」次元のアウトラインを示しています:

図 117. Sample.Basicデータベースの「Product」次元と「Market」次元

この図は、「Product」次元と「Market」次元のアウトラインを示しています。

Essbaseでは、メンバーの組合せは次元間演算子で示されます。次元間演算子の記号は->(ハイフンと大なり記号)です。このため、100-10, New Yorkは100-10 -> New Yorkと記述します。

データ・ブロックを分類する手順は、次のとおりです:

  • 入力

    これらのブロックは、任意のブロック内のセルにデータをロードすることによって作成されます。少なくとも1つの疎メンバーが親レベルのメンバーに存在する場合、(1)疎なレベル0メンバーの組合せ、または(2)疎な上位レベル・メンバーの組合せに対して入力ブロックを作成できます。入力ブロックはレベル0または上位レベル・ブロックになります。

  • 非入力

    これらのブロックは、計算によって作成されます。たとえばSample.Basicでは、疎な計算プロセスでEast -> Colaブロックが作成されます(つまり、このブロックは計算前は存在していなかったことになります)。

  • レベル0

    これらのブロックは、すべての疎メンバーがレベル0メンバーであるとき、疎メンバーの組合せに対して作成されます。たとえばSample.Basicで、New York -> Colaはレベル0ブロックです。これは、New YorkとColaがそれぞれの疎次元のレベル0メンバーであるためです。レベル0ブロックは、入力ブロックでも非入力ブロックでもかまいません。たとえば、レベル0の非入力ブロックは、親レベルでデータをロードした後、レベル0までデータを割り当てる割当てプロセスで作成されます。

  • 上位レベル

    これらのブロックは、少なくとも1つの疎メンバーが親レベルのメンバーに存在する場合に、疎メンバーの組合せに対して作成されます。上位レベル・ブロックは、入力ブロックでも非入力ブロックでもかまいません。

世代とレベルおよびデータ・ブロックおよびインデックス・システムを参照してください。

メンバーの計算順序

Essbaseでは、データ・ブロック・レベルでデータベースの計算が行われます。その際、1つ以上のブロックがメモリーに収容され、ブロック内の要求された値が計算されます。ブロックの計算は、ブロック番号に従って順番に行われます。データベース・アウトラインで、ブロックの順序をEssbaseに指示します。各ブロック内では、データベース・アウトライン内の階層の順序で値が計算されます。したがって、Essbaseでは全体的に、データベース・アウトラインに基づいてデータベースの計算が行われます。

データベース上でデフォルト計算(CALC ALL)を実行する場合、Essbaseでは、次の順序で次元が計算されます:

  • 勘定科目タグが付けられた次元と時間タグが付けられた次元がどちらも存在し、会計次元上のメンバーに式が適用される場合、Essbaseでは次の順序で計算が行われます:

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

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

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

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

  • それ以外の場合、Essbaseでは、次の順序で計算が行われます:

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

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

注:

属性次元は、データベース集計に含まれていないので、計算順序には影響しません。属性の操作。を参照してください。

Sample.Basicデータベースでは、次元は、メジャー、年、シナリオ、製品、市場の順で計算されます。

計算スクリプトを使用して、デフォルトの順序を上書きできます。ブロック・ストレージ・データベース用の計算スクリプトの作成。を参照してください。

メンバーの関係の影響の理解

各次元内の計算の順序は、データベース・アウトライン内のメンバーの関係次第です。次元の各分岐内では、レベル0の値が最初に計算され、続いてその親であるレベル1の値が計算されます。次に、次の分岐のレベル0の値が計算され、その親であるレベル1の値が計算されます。このようにして、すべてのレベルの計算が完了するまで計算が続行されます。

図118は、Sample.Basicデータベースの年次元を示しています。左側に計算順序が表示されています。この例では、親メンバーに動的計算のタグが付いていないと想定します。データ値の動的計算。を参照してください。

図 118. Sample.Basicデータベースの年次元

この図は、年次元のアウトラインと、そのメンバーの計算の順序を示しています。

Janは最初の分岐の最初のメンバーです。Janは式を持たないので、計算されません。同じ分岐内の残りの2つのメンバーであるFebとMarも同様です。

Essbaseでは、Qtr1を計算するためにJan、FebおよびMarが集計されます。この例では、これらのメンバーが加算されます。

Essbaseでは、次に、同じ方法でQtr2からQtr4までの分岐が計算されます。

Essbaseでは、最後に、Qtr1からQtr4までの値を集計することにより、年メンバーが計算されます。これらのメンバーが追加されます。

メンバーの集計の決定

Essbaseでのメンバーの集計方法を決めるには、データベース・アウトラインのメンバーに対して算術演算子(+、-、/、*、%、~、^)を使用します。

勘定科目メンバーにタイム・バランス・タグ(First、LastまたはAverage)が設定されている場合、Essbaseではそれに従って集計が行われます。期首、期末および平均の値の計算を参照してください。

親メンバーにラベルのみ演算子が設定されている場合、Essbaseでは、その子から親は計算されません。

メンバーに~演算子が設定されている場合、Essbaseでは、そのメンバーはその親の集計には使用されません。

メンバーに^演算子が設定されている場合、Essbaseでは、どの次元のメンバーも集計されません。

注:

動的計算を使用する場合、Essbaseでは、異なる計算順序が使用されることがあります。動的計算の計算順序を参照してください。

データベース・アウトライン内の次元の順序付け

必要な計算結果を確実に得るには、次のどちらのタスクを実行する場合にも、データベース・アウトライン内の次元の計算順序を考慮してください:

  • 算術演算子を使用して、データベース・アウトライン内のメンバーに対する除算(/)、乗算(*)またはパーセンテージ(%)の計算を行う場合。

  • データベース・アウトライン内のメンバーに式を設定する場合。

データベース・アウトライン内のメンバーの加算(+)や減算(-)の算術演算子のみを使用していて、アウトライン内の式を使用しない場合は、計算順序を考慮する必要はありません。

データベース・アウトライン内のメンバーへの式の設定

データベース・アウトライン内のメンバーに式を設定する場合、次元の計算順序を考慮してください。ある次元のメンバーに設定された式は、別の次元に対する後続の計算によって上書きされることがあります。

たとえば、Sample.Basicデータベースには、勘定科目タグが付けられたメジャー次元と、時間タグが付けられた年次元があります。最初にメジャーが計算され、次に年が計算されます。メジャー次元のMarginに式を設定した場合、Essbaseでは、メジャー次元の計算時に式が計算されます。この式は、さらに年次元の集計時に上書きされます。セルの計算順序を参照してください。

算術演算子*、/および%の使用

計算演算子を使用して、データベース・アウトライン内のメンバーの乗算(*)、除算(/)およびパーセンテージの計算(%)を行う場合、次元の計算順序を考慮してください。必要な計算済の値が、別の次元に対する後続の計算によって上書きされることがあります。

たとえば、Sample.Basicデータベースには、勘定科目タグが付けられたメジャー次元と、時間タグが付けられた年次元があります。最初にメジャーが計算され、次に年が計算されます。メジャー次元のメンバーを乗算した場合、計算された結果は、Essbaseで年次元の値が集計されるときに上書きされることがあります。セルの計算順序を参照してください。

乗算(*)、除算(/)またはパーセンテージ(%)の演算子を使用してメンバーを集計するときは、必要な結果を得られるように、分岐内のメンバーを慎重に順序付けてください。

図119は、算術演算子がアウトラインに表示される順序を示しています。ここでは、ユーザーがChild 2とChild 3の合計をChild 1で除算すると想定します。ただし、Child 1が最初のメンバーである場合、EssbaseではChild 1から処理が開始され、値#MISSINGがChild 1で除算されます。結果は#MISSINGです。次に、Essbaseでは、Child 2とChild 3が加算されます。明らかに、これは必要としていた結果ではありません。

図 119. データベース・アウトラインでの算術演算子

この図は、アウトラインの算術演算子を示しています。

正しい結果を算出するには、Child 1を分岐の最後のメンバーにしてください。

データベース・アウトライン上のメンバーに式を適用しても、同じ結果が得られます。ただし、図119に示すように、メンバーに対してこれらの計算演算子を使用するほうがはるかに効率的です。

前方計算参照の回避

予想どおりの計算結果を得るには、アウトラインに前方計算参照が含まれていないことを確認します。前方計算参照は、計算メンバーの値がEssbaseでまだ計算されていないメンバーに依存している場合に発生します。このような場合、Essbaseでは、必要な計算結果が生成されない可能性があります。

たとえば、図120に示されるProduct次元について検討してください。この次元には、3つの前方計算参照(2つの共有メンバー(P100-20およびP300-20)と1つの非共有メンバー(P500-20))があります:

図 120. 前方計算参照のあるProduct次元

この図は、3つの前方計算参照があるProduct次元のアウトラインを示しています。

アウトライン・エディタでアウトラインを確認するとき、Essbaseにより、前方計算参照を持つ共有メンバーが識別されます。アウトラインの確認では、前方計算参照を持つ非共有メンバーは識別されません。前方計算参照を含むアウトラインは保存して使用できます。

  アウトラインを確認する方法については、『Oracle Essbase Administration Servicesオンライン・ヘルプ』の「アウトラインの確認」を参照してください。

Dietの下位の5つのメンバーについて考えます。メンバーP100-20、P300-20およびP500-20には、前方計算参照があります:

  • P100-20 (+) (共有メンバー): Essbaseでは、実績メンバーP100-20が計算される前に共有メンバーP100-20が計算されます。実績メンバーP100-20には子があるので、Essbaseで共有メンバーP100-20を正確に計算するには、実績メンバーP100-20の子を加算して、実績メンバーを先に計算する必要があります。

  • P300-20 (+) (共有メンバー): Essbaseでは、実績メンバーP300-20が計算される前に共有メンバーP300-20が計算されます。実績メンバーP300-20には式が設定されているので、Essbaseで共有メンバーP300-20を正確に計算するには、実績メンバーを先に計算する必要があります。

  • P500-20 (+) ("P200-20" + "P300-20"): P500-20に適用された式は、Essbaseでまだ計算されていないメンバーを参照します。参照メンバーP300-20には固有の式があり、EssbaseでP500-20を正確に計算するには、P300-20を先に計算する必要があります。メンバーP200-20およびP400-20は、前方計算参照を持たないため正しく計算されます。

  • P200-20 (+) (共有メンバー): Essbaseでは、実績メンバーP200-20の計算前に共有メンバーP200-20が計算されますが、P200-20は前方計算参照ではありません。実績メンバーP200-20には計算の依存関係はありません(子や式がない)。このため、Essbaseで、共有メンバーの前に実績メンバーを計算する必要はありません。Essbaseでは、単純に実績メンバーの値が使用されます。

  • P400-20 (+) ("P200-10" * 2): P400-20に適用された式はEssbaseでまだ計算されていないメンバーを参照しますが、P400-20は前方計算参照ではありません。式で参照されるメンバー自体には計算の依存関係はありません。P200-10が式の唯一のメンバーであり、P200-10自体には子や式はありません。Essbaseでは、P400-20が正確に計算されます。

P100-20、P300-20およびP500-20の正しい計算結果を得るには、アウトライン内のメンバーの順序を変更します。図121に示すように、Regularメンバーの後ろにDiet共有メンバーを置くと、Essbaseでは、必要な順序でメンバーが計算されます。

図 121. 前方計算参照のない変更された製品次元

この図は、前方計算参照がないProduct次元のアウトラインを示しています。

Essbaseでは、次が計算されます:

  • 共有メンバーP100-20の計算前に、実績メンバーP100-20が計算されます。したがって、P100-20には前方計算参照がありません。

  • 共有メンバーP300-20の前に、実績メンバーP300-20が計算されます。したがって、P300-20には前方計算参照がありません。

  • メンバーP500-20の前に、式を持つ参照メンバーP300-20。したがって、P500-20には前方計算参照がありません。

ブロックの計算順序

Essbaseでは、ブロックの番号順にブロックを計算します。Essbaseでは、データベース・アウトラインの最初の疎次元を開始点とします。この最初の次元から疎メンバーの組合せが定義されます。

Sample.Basicデータベースでは、製品がデータベース・アウトラインの最初の疎次元です。

図 122. Sample.Basicデータベースの次元

この図は、Sample.Basicデータベースの次元のアウトラインを示しています。

注:

Sample.Basicアウトラインの属性次元(上の図にはありません)は、データベース集計に組み込まれていないので、ブロックの計算順序に影響しません。属性の操作。を参照してください。

図123に示すように、製品には19個のメンバーがあります(共有メンバーを除く。Essbaseでは共有メンバーに対してデータ・ブロックを作成しません)。したがって、データベースの最初の19個のデータ・ブロックは、製品次元のメンバーの計算順序に従って番号付けされます。

図 123. Sample.Basicデータベースの製品次元

この図は、製品次元のアウトラインを示しています。

もう1つの疎次元は市場です。最初の4個のデータ・ブロックには、計算対象である市場次元の最初のメンバー(New York)が含まれています。表64は、これら19のデータ・ブロックの最初に5つについて、各製品次元とNew Yorkの疎メンバーの組合せを示しています:

表 64. 疎メンバーの組合せ: データ・ブロック0から4

ブロック番号

製品のメンバー

市場のメンバー

0

Cola (100-10)

New York

1

Diet Cola (100-20)

New York

2

Caffeine Free Cola (100-30)

New York

3

Colas (100)

New York

4

Old Fashioned (200-10)

New York

市場次元の次のメンバーはMassachusettsです。Essbaseでは、製品の各メンバーとMassachusettsの疎な組合せに対して、その次の19個のデータ・ブロックを作成します。表65は、ブロック番号19から23について、疎メンバーの組合せを示しています:

表 65. 疎メンバーの組合せ: データ・ブロック19から23

ブロック番号

製品のメンバー

市場のメンバー

19

Cola (100-10)

Massachusetts

20

Diet Cola (100-20)

Massachusetts

21

Caffeine Free Cola (100-30)

Massachusetts

22

Colas (100)

Massachusetts

23

Old Fashioned (200-10)

Massachusetts

Essbaseでは、少なくとも1つのデータ値が存在する疎次元メンバーのすべての組合せに対してブロックが作成されるまで、処理を続行します。

Essbaseでは、ブロックに1つ以上の値が存在する場合にのみ、データ・ブロックを作成します。たとえば、MassachusettsのOld Fashioned Root Beer (200-10)にデータ値がない場合、Essbaseでは、200-10 -> Massachusettsのデータ・ブロックを作成しません。ただし、将来そのメンバーの組合せに対してデータがロードされる場合に備えて、Essbaseでは200-10 -> Massachusettsの該当するブロック番号が予約されます。

データベースでデフォルトの計算(CALC ALL)を実行すると、各ブロックは、そのブロック番号に従って順番に処理されます。高機能計算をオンにしていて、ブロックを計算する必要がない場合、Essbaseでは、そのブロックをスキップして、次のブロックに移動します。高機能計算を使用してパフォーマンスを最適にする方法は、高機能計算についての理解。を参照してください。

データ・ブロック番号の再設定

Essbaseでは、次の変更が行われた場合にデータ・ブロック番号が再設定されます:

  • 疎次元の移動

  • 疎次元の追加

  • 疎次元への密次元の変更

  • 疎次元における任意のメンバーの移動

  • 疎次元における任意のメンバーの削除

  • 疎次元へのメンバーの追加

セルの計算順序

各データ・ブロックには、疎次元メンバーの一意の組合せに対するすべての密次元メンバーの値が含まれます。各データ値は、データ・ブロックのセルにあります。

Essbaseによって各ブロック内のセルが計算される順序は、データベースの構成方法によって異なります。データベースの構成方法によって、各ブロック内の密次元メンバーのメンバー計算順序が定義されます。また、疎次元メンバーを表すブロックの計算順序も定義されます。

次の例を参照してください。

セルの計算順序: 例1

最も単純な事例のこの例では、次の条件が満たされます:

  • 時間または勘定科目タグが付けられた次元はありません。

  • #MISSING値を集計する設定がオンになっています。

  • 市場と年は密次元です。

    Essbaseでは、データベース・アウトラインに定義された順序で密次元が計算されます。データベース・アウトラインで、年次元が市場次元より前に配置されているとすると、年次元は市場次元より先に計算されます。

表66に、データ・ブロック内のセルのサブセットを示します:

表 66. 計算順序の例1: 入力セルと計算済セル

Year-Market

New York

Massachusetts

East

Jan

112345

68754

3

Feb

135788

75643

4

Mar

112234

93456

5

Qtr1

1

2

6

データ値は次の入力セルにロードされています:

  • Jan -> New York

  • Feb -> New York

  • Mar -> New York

  • Jan -> Massachusetts

  • Feb -> Massachusetts

  • Mar -> Massachusetts

Essbaseは次のセルを計算します。表66で、これらのセルの計算順序はセルに表示される1から6までの数字で示されます:

  1. Qtr1 -> New York

  2. Qtr1 -> Massachusetts

  3. Jan -> East

  4. Feb -> East

  5. Mar -> East

  6. Qtr1 -> East

Qtr1 -> Eastには複数の集計パスがあり、市場または年で集計できます。市場で集計した場合、Qtr1 -> New YorkとQtr1 -> Massachusettsの集計になります。年で集計した場合、Jan -> East、Feb -> EastおよびMar -> Eastの集計になります。

Essbaseでは、Qtr1 -> Eastに複数の集計パスがあることが認識されます。このため、表67に示すように、Qtr1 -> EastはQtr1の値を集計することで1回のみ計算され、最後に計算された次元(この例では、市場次元)の集計パスが使用されます。

表 67. 計算順序の例1: 結果

Year-Market

New York

Massachusetts

East

Jan

112345

68754

181099

Feb

135788

75643

211431

Mar

112234

93456

205690

Qtr1

360367

237853

598220

計算順序に基づいて、データベース・アウトラインのQtr1にメンバー式を設定した場合、その式は、Qtr1 -> Eastの計算時にEssbaseによって無視されます。データベース・アウトラインのEastにメンバー式を設定した場合、その式は、Essbaseによって市場の集計パスに基づいてQtr1 -> Eastが集計されるときに計算されます。

必要に応じて、計算スクリプトを使用して、ユーザーの選択順で次元を計算できます。ブロック・ストレージ・データベース用の計算スクリプトの作成。を参照してください。

セルの計算順序: 例2

この例では、次の条件が満たされます:

  • 時間または勘定科目タグが付けられた次元はありません。

  • #MISSING値を集計する設定がオフ(デフォルト)になっています。

  • 市場と年は密次元です。

    Essbaseでは、データベース・アウトラインに定義された順序で密次元が計算されます。データベース・アウトラインで、年次元が市場次元より前に配置されているとすると、年次元は市場次元より先に計算されます。

表68に、データ・ブロック内のセルのサブセットを示します:

表 68. 計算順序の例2: 入力セルと計算済セル

Year-Market

New York

Massachusetts

East

Jan

112345

68754

4

Feb

135788

75643

5

Mar

112234

93456

6

Qtr1

1

2

3/7

データ値は次の入力セルにロードされています:

  • Jan -> New York

  • Feb -> New York

  • Mar -> New York

  • Jan -> Massachusetts

  • Feb -> Massachusetts

  • Mar -> Massachusetts

EssbaseはNew York、MassachusettsおよびEastのQtr1セルと、Jan、FebおよびMarchのEastセルを計算します。表68で、これらのセルの計算順序はセルに表示される1から7までの数字で示されます:

  1. Qtr1 -> New York

  2. Qtr1 -> Massachusetts

  3. Qtr1 -> East

  4. Jan -> East

  5. Feb -> East

  6. Mar -> East

  7. Qtr1 -> East

Qtr1 -> Eastは、年と市場の両方の集計パスに基づいて計算されます。最初に、Qtr1 -> New YorkおよびQtr1 -> Massachusettsの集計としてQtr1 -> Eastが計算されます。2番目に、Jan -> East、Feb -> EastおよびMar -> Eastの集計としてQtr1 -> Eastが計算されます。

結果は、表69に示すように、例1の結果と同じです(表67を参照)。ただし、Qtr1 -> Eastは2回計算されています。このことは、データを親レベルでロードする必要があるときに重要です(セルの計算順序: 例3を参照)。

表 69. 計算順序の例2: 結果

Year-Market

New York

Massachusetts

East

Jan

112345

68754

181099

Feb

135788

75643

211431

Mar

112234

93456

205690

Qtr1

360367

237853

598220

計算順序に基づいて、データベース・アウトラインでQtr1にメンバー式を設定した場合、その結果は、Essbaseによって市場の集計パスに基づいてQtr1 -> Eastが集計されるときに上書きされます。データベース・アウトラインでEastにメンバー式を設定した場合、市場の集計パスは最後に計算されるので、その結果は維持されます。

セルの計算順序: 例3

この例では、次の条件が満たされます:

  • 時間または勘定科目タグが付けられた次元はありません。

  • #MISSING値を集計する設定がオフ(デフォルト)になっています。

  • データ値は親レベルでロードされています。

  • 市場と年は密次元です。

    Essbaseでは、データベース・アウトラインに定義された順序で密次元が計算されます。データベース・アウトラインで、年次元が市場次元より前に配置されているとすると、年次元は市場次元より先に計算されます。

表70に、データ・ブロック内のセルのサブセットを示します:

表 70. 計算順序の例3: 入力セルと#MISSING値

Year-Market

New York

Massachusetts

East

Jan

#MISSING

#MISSING

181099

Feb

#MISSING

#MISSING

211431

Mar

#MISSING

#MISSING

205690

Qtr1

#MISSING

#MISSING

 

セルは、セルの計算順序: 例2と同じ順序で計算されます。Qtr1 -> Eastは、年と市場の両方の集計パスに基づいて計算されます。

#MISSING値を集計する設定がオフなので、Essbaseでは、#MISSING値は集計されません。このため、親レベルでロードされているデータは、それより下の#MISSING値によって上書きされません。

ただし、子のデータ値のいずれかが#MISSINGでない場合、その値は集計されるので、その値によって親の値は上書きされます。たとえば、Jan -> New Yorkが50000.00の場合、親レベルでロードされている値はこの値によって上書きされます。

結果は、表71に示すように、Essbaseでは最初にJan -> East、Feb -> EastおよびMar -> Eastを集計することによって、Qtr1 -> Eastセルを正しく計算してから、市場の集計パスに基づいて計算します。ただし、Qtr1 -> New YorkおよびQtr1 -> Massachusettsの#MISSING値は集計されないので、Qtr1 -> Eastの値は上書きされません。

表 71. 計算順序の例3: 結果

Year-Market

New York

Massachusetts

East

Jan

#MISSING

#MISSING

181099

Feb

#MISSING

#MISSING

211431

Mar

#MISSING

#MISSING

205690

Qtr1

#MISSING

#MISSING

598220

Essbaseでは、Qtr1 -> Eastセルの値を確実に計算するために、セルを2回計算する必要があります。Qtr1 -> Eastが最後の集計パスのみに基づいて計算された場合、その結果は#MISSINGとなり必要な結果が得られません。

セルの計算順序: 例4

この例では、次の条件が満たされます:

  • 年次元には時間タグが付いています。

  • メジャー次元には勘定科目タグが付いています。

    Essbaseでは、最初に勘定科目タグが付けられた次元を計算し、次に時間タグが付けられた次元を計算します。したがって、この例では、メジャーが年より先に計算されます。

  • #MISSING値を集計する設定がオフ(デフォルト)になっています。

  • Marketing、PayrollおよびMisc Expensesの値は、Qtr1 (親レベル)でロードされています。

図124は、Sample.Basicデータベースのメジャー次元のProfit分岐を示しています。この例では、Total Expensesが動的計算メンバーではないと仮定しています。

図 124. メジャー次元のProfit分岐

この図は、メジャー次元のProfit分岐を示しています。

表72に、データ・ブロック内のセルのサブセットを示します:

表 72. 計算順序の例4: 入力セル、#MISSING値と計算済セル

メジャー->年

1月

Feb

Mar

第1四半期

Sales

31538

32069

32213

13

COGS

14160

14307

14410

14

Margin

1

4

7

10/15

Marketing

#MISSING

#MISSING

#MISSING

15839

Payroll

#MISSING

#MISSING

#MISSING

12168

Misc

#MISSING

#MISSING

#MISSING

233

Total Expenses

2

5

8

11/16

Profit

3

6

9

12/17

次のセルには、複数の集計パスがあります:

  • Margin -> Qtr1

  • Total Expenses -> Qtr1

  • Profit -> Qtr1

#MISSING値を集計する設定がオフなので、Essbaseでは、#MISSING値は集計されません。このため、親レベルでロードされているデータは、#MISSING値によって上書きされず、複数の集計パスがあるセルがEssbaseによって2回計算されます。

結果を表73に示します:

表 73. 計算順序の例4: 結果

メジャー->年

1月

Feb

Mar

第1四半期

Sales

31538

32069

32213

95820

COGS

14160

14307

14410

42877

Margin

17378

17762

17803

52943

Marketing

#MISSING

#MISSING

#MISSING

15839

Payroll

#MISSING

#MISSING

#MISSING

12168

Misc

#MISSING

#MISSING

#MISSING

233

Total Expenses

   

28240

Profit

17378

17762

17803

12/17

計算順序に基づいて、データベース・アウトラインのMarginなどにメンバー式を設定した場合、その結果は、Qtr1に関する集計で上書きされます。

密次元に対する式のセル計算順序

データ・ブロック内のセルの計算順序は、メンバーの式の影響を受けません。Essbaseでは、データ・ブロック内で式が検出されると、他の必要なデータ・ブロックがロックされ、その式が計算され、データ・ブロックの計算が続行されます。

密次元のメンバーに式を設定するときには、セルの計算順序に十分注意してください。前の例で説明したように、複数の集計パスがあるセルでは、最後に計算された次元によって以前に行われたセルの計算が上書きされます。必要に応じて、計算スクリプトを使用して、次元の計算順序を変更できます。ブロック・ストレージ・データベース用の計算スクリプトの作成およびブロック・ストレージ・データベース用の式の作成。を参照してください。

計算パス

Essbaseでは、可能なかぎり1つの計算パスでデータベースが計算されます。つまり、必要な各データ・ブロックがメモリーに1回のみ読み取られ、データ・ブロックに対して関連するすべての計算が実行され、保存されます。ただし、場合によっては、Essbaseで複数の計算パスを使用してデータベースを計算する必要があります。その場合、後続の計算パスでは、Essbaseによってデータ・ブロックがメモリーに戻され、そのデータ・ブロックに対して次の計算が実行され、再度保存されます。

デフォルトのデータベースのフル計算(CALC ALL)を実行すると、Essbaseでは、1つの計算パスでデータベースを計算しようとします。勘定科目または時間タグが付けられた次元がある場合は、Essbaseで、複数の計算パスを実行してデータベースを計算する必要がある場合があります。

表74は、時間または会計タグが付けられた次元があり、会計次元に少なくとも1つの式が設定されている場合にEssbaseで実行される計算パスの数を示しています:

表 74. 会計次元および時間次元の計算パス

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

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

計算パス

各計算パスで、Essbaseが対象とする次元:

密または疎

なし

1

すべての次元

1

すべての次元

2

パス1: 会計次元と時間次元

パス2: その他の次元

2

パス1: 会計次元と時間次元

パス2: その他の次元

2

パス1: 会計次元

パス2: その他の次元

2パス・タグが付けられた式を使用している場合は、Essbaseで追加の計算パスを実行して式を計算する必要がある場合があります。2パス計算の使用を参照してください。

計算スクリプトを使用してデータベースを計算するときに、Essbaseで実行する必要がある計算パスの数は、計算スクリプトによって決まります。計算パスおよび複数パス計算の理解を参照してください。式と計算のグループ化も参照してください。

コミット・アクセスに対して分離レベルが設定されていて、複数のパスが必要な場合は、Essbaseによって、各パスの最後にデータ値が書き込まれます。パス間で行われるデータ取得では、中間値を取得できます。

データベースを計算すると、Essbaseによって、データベース内のパスごとに、次元の計算順序が自動的に表示され、計算中にEssbaseでデータベースのデータを循環使用した回数が表示されます。Essbaseによって、この情報がESSCMDのウィンドウおよびアプリケーション・ログに表示されます。

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

Essbaseでは、データ・ブロックごとに密計算と疎計算のどちらを実行するのかが決定されます。計算のタイプは、データ・ブロック内の値のタイプによって決まります。データベースでデフォルトの計算(CALC ALL)を実行すると、各ブロックは、そのブロック番号に従って順番に処理されます。

Essbaseでは、次の手順によりブロックが計算されます:

  • 高機能計算をオンにしていて、ブロックを計算する必要がない場合(ブロックにクリーンが設定されている場合)、Essbaseではそのブロックはスキップされ、次のブロックに移動します。高機能計算についての理解。を参照してください。

  • ブロックを再計算する必要がある場合、Essbaseではそのブロックがレベル0、入力、上位レベル・ブロックのどれであるかが確認されます。データ・ブロック内のデータ・ストレージを参照してください。

  • ブロックがレベル0のブロックまたは入力ブロックの場合、Essbaseでブロックの密計算が実行されます。ブロックの各セルが計算されます。セルの計算順序を参照してください。

  • ブロックが上位レベル・ブロックの場合、Essbaseでは、データ・ブロックに対して値の集計または疎計算が実行されます。

    各上位レベル・ブロックの疎メンバーの組合せには、少なくとも1つの親メンバーがあります。Essbaseでは、親メンバーの次元に基づいてブロックが集計または計算されます。たとえば、上位レベル・ブロックがSample.BasicデータベースのProduct -> Floridaに関するものである場合、Essbaseでは、製品次元が選択されます。

    ブロックの疎メンバーの組合せに複数の親メンバーがある場合、Essbaseでは、親メンバーを含み、計算順序の最後にある次元が選択されます。たとえば、ブロックがProduct -> Eastに関するもので、Sample.Basicデータベースでデフォルトの計算を実行した場合、Essbaseでは、Eastを含んでいる市場次元が選択されます。市場次元は、データベース・アウトラインで製品次元の後に配置されているので、デフォルトの計算順序では最後になります。メンバーの計算順序を参照してください。

    選択された疎次元に基づいて、Essbaseでは、データ・ブロックに対して次のように値の集計または疎計算が実行されます:

    • 選択された疎次元のデータ・ブロック・メンバーに式が適用される場合は、Essbaseで、疎次元に対して式の計算が実行されます。Essbaseにより、データ・ブロック内の各セルが評価されます。式は、疎次元のメンバーにのみ影響するので、計算パフォーマンス全体に大きな影響はありません。

    • 選択された疎次元がデフォルトの集計の場合、Essbaseでは以前に計算された子のデータ・ブロックの値を取得して、値が集計されます。

共有メンバーの計算

共有メンバーとは、他のメンバーとデータ値を共有するメンバーのことです。たとえば、Sample.Basicデータベースでは、Diet Cola、Diet Root BeerおよびDiet Creamが、2つの親の下に集計されています。つまり、Dietとそれぞれの製品タイプ(Colas、Root Beer、Cream Soda)の下です。図125に示すように、親のDietの下のメンバーは共有メンバーです。共有メンバーの理解を参照してください。

図 125. 共有メンバーの計算

共有メンバーの計算

共有メンバーの計算は、実際のメンバーに対する計算です。FIXコマンドを使用してデータベースのサブセットを計算するときにそのサブセットに共有メンバーが含まれる場合は、Essbaseによって実際のメンバーが計算されます。