セルの計算順序
Essbaseによって各データ・ブロック内のセルが計算される順番は、データベースの構成方法によって異なります。
各データ・ブロックには、疎ディメンション・メンバーの一意の組合せに対するすべての密ディメンション・メンバーの値が含まれます。各データ値は、データ・ブロックのセルに含まれます。
データベースの構成方法によって、各ブロック内の密ディメンション・メンバーの計算順序と、疎ディメンション・メンバーを表すブロックの計算順序も定義されます。
次に例を示します:
セルの計算順序: 例1
最も単純なケースのこの例では、次の条件が満たされています。
-
時間または勘定科目タグが付けられているディメンションはありません。
-
#MISSING値を集計する設定がオンになっています。
-
MarketとYearは密ディメンションです。
Essbaseでは、データベース・アウトラインに定義された順序で密ディメンションが計算されます。YearディメンションがMarketディメンションの前にデータベース・アウトラインに配置されており、最初に計算されるとします。
次のグリッドは、スライス(データ・ブロック内のセルのサブセット)を示しています。グリッドでは、スライスのセルの計算順序は数値1 - 6で表されます。
表19-3計算順序の例1: 入力セルと計算済セル
| 年間市場 | New York | マサチューセッツ | East |
|---|---|---|---|
| 1月 | 112345 | 68754 | 3 |
| 2月 | 135788 | 75643 | 4 |
| 3月 | 112234 | 93456 | 5 |
| Qtr1 | 1 | 2 | 6 |
データ値は次の入力セルにロードされています。
-
ヤン->ニューヨーク
-
2月->ニューヨーク
-
Mar ->ニューヨーク
-
Jan -> Massachusetts
-
Feb ->マサチューセッツ
-
Mar -> Massachusetts
Essbaseでは、次の順序でセルが計算されます。
-
Qtr1 ->ニューヨーク
-
Qtr1 ->マサチューセッツ
-
Jan -> East
-
Feb ->イースト
-
Mar -> East
-
Qtr1 ->東部
Qtr1 -> Eastは、複数の集計パスを持ち、MarketまたはYearで集計できます。Marketで集計される場合、Qtr1 -> New YorkとQtr1 -> Massachusettsの集計になります。Yearで集計される場合、Jan -> East、Feb -> EastおよびMar -> Eastの集計になります。
Essbaseでは、Qtr1 -> Eastに複数の集計パスがあることが認識されます。このため、次に示すように、Qtr1 -> EastはQtr1の値を集計することで1回のみ計算され、最後に計算されたディメンション(この例では、Marketディメンション)の集計パスが使用されます。
表19-4計算順序の例1: 結果
| 年間市場 | New York | マサチューセッツ | East |
|---|---|---|---|
| 1月 | 112345 | 68754 | 181,099 |
| 2月 | 135788 | 75643 | 211,431 |
| 3月 | 112234 | 93456 | 205,690 |
| Qtr1 | 360,367 | 237,853 | 598,220 |
計算順序に基づき、Qtr1に対するメンバー式を配置した場合、その文は、Qtr1 -> Eastの計算時にEssbaseで無視されます。メンバー式をEastに配置した場合、その式は、EssbaseによってMarketの集計パスに基づくQtr1 -> Eastが集計されると計算されます。
必要に応じて、計算スクリプトを使用して、選択した順序でディメンションを計算できます。
セルの計算順序: 例2
この例では、次の条件が満たされています。
-
時間または勘定科目タグが付けられているディメンションはありません。
-
#MISSING値を集計する設定がオフになっています(デフォルト)。
-
MarketとYearは密ディメンションです。
Essbaseでは、データベース・アウトラインに定義された順序で密ディメンションが計算されます。YearディメンションがMarketディメンションの前にデータベース・アウトラインに配置されており、最初に計算されるとします。
次のグリッドは、スライス(データ・ブロック内のセルのサブセット)を示しています。グリッドでは、スライスのセルの計算順序は数値1 - 7で表されます。
表19-5計算順序の例2: 入力セルと計算済セル
| 年間市場 | New York | マサチューセッツ | East |
|---|---|---|---|
| 1月 | 112345 | 68754 | 4 |
| 2月 | 135788 | 75643 | 5 |
| 3月 | 112234 | 93456 | 6 |
| Qtr1 | 1 | 2 | 3/7 |
データ値は次の入力セルにロードされています。
-
ヤン->ニューヨーク
-
2月->ニューヨーク
-
Mar ->ニューヨーク
-
Jan -> Massachusetts
-
Feb ->マサチューセッツ
-
Mar -> Massachusetts
Essbaseによって、New York、MassachusettsおよびEastのQtr1のセルと、Jan、FebおよびMarchのEastのセルが計算されます。
-
Qtr1 ->ニューヨーク
-
Qtr1 ->マサチューセッツ
-
Qtr1 ->東部
-
Jan -> East
-
Feb ->イースト
-
Mar -> East
-
Qtr1 ->東部
Qtr1 -> Eastは、YearとMarketの両方の集計パスに基づいて計算されます。最初に、Qtr1 -> EastをQtr1 -> New YorkとQtr1 -> Massachusettsの集計として計算します。次に、Jan -> East、Feb -> EastおよびMar -> Eastの集計としてQtr1 -> Eastが計算されます。
結果は、例1の結果と同じです。ただし、Qtr1 -> Eastは2回計算されています。このことは、データを親レベルでロードする必要があるときに重要です。
計算順序に基づき、メンバー式をQtr1に配置した場合、その結果は、EssbaseによってMarketのQtr1 -> Eastが集計されたときに上書きされます。Eastに対するメンバー式を配置すると、Marketは最後に計算されるため、その結果が維持されます。
表19-6計算順序の例2: 結果
| 年間市場 | New York | マサチューセッツ | East |
|---|---|---|---|
| 1月 | 112345 | 68754 | 181,099 |
| 2月 | 135788 | 75643 | 211,431 |
| 3月 | 112234 | 93456 | 205,690 |
| Qtr1 | 360,367 | 237,853 | 598,220 |
セルの計算順序: 例3
この例では、密に格納されたディメンションのデータ・スライスについて考えてみます。データベースの構成によって、ディメンションの順序によって計算順序が定義されます。ブロックの計算に使用する連結パスは2つあります。
この例では、次の条件が満たされています。
-
時間または勘定科目タグが付けられているディメンションはありません。
-
#MISSING値を集計する設定がオフになっています(デフォルト)。
-
データ値は親レベルでロードされています。
-
MarketとYearは密ディメンションです。
Essbaseでは、データベース・アウトラインに定義された順序で密ディメンションが計算されます。YearディメンションがMarketディメンションの前にデータベース・アウトラインに配置されており、最初に計算されるとします。
次のグリッドは、計算が必要なスライス(データ・ブロック内のセルのサブセット)を示しています。
表19-7計算順序の例3: 入力セルと#MISSING値
| 年間市場 | New York | マサチューセッツ | East |
|---|---|---|---|
| 1月 | #MISSING | #MISSING | 181,099 |
| 2月 | #MISSING | #MISSING | 211,431 |
| 3月 | #MISSING | #MISSING | 205,690 |
| Qtr1 | #MISSING | #MISSING |
セルは、セルの計算順序: 例2と同じ順序で計算されます。Qtr1 -> Eastは、YearとMarketの両方の集計パスに基づいて計算されます。
#MISSING値を集計する設定がオフになっているため、Essbaseでは、#MISSING値は集計されません。したがって、親レベルでロードされているデータは、それより下の#MISSING値によって上書きされません。
ただし、子のデータ値のいずれかが#MISSINGでない場合、その値は集計されるため、その値によって親の値が上書きされます。たとえば、Jan -> New Yorkに50000.00が含まれる場合、親レベルでロードされる値はこの値によって上書きされます。
Essbaseでは、Qtr1 -> Eastセルの値を確実に計算するために、セルを2回計算する必要があります。Qtr1 -> Eastが最後の集計パスのみに従って計算された場合、その結果は#MISSINGとなり、必要な結果になりません。
結果で、Essbaseでは最初にJan -> East、Feb -> EastおよびMar -> Eastを集計することによって、Qtr1 -> Eastセルを正しく計算してから、Marketの集計パスに基づいて計算することが示されています。ただし、Qtr1 -> New YorkおよびQtr1 -> Massachusettsの#MISSING値は集計されないため、Qtr1 -> Eastの値は上書きされません。
表19-8計算順序の例3: 結果
| 年間市場 | New York | マサチューセッツ | East |
|---|---|---|---|
| 1月 | #MISSING | #MISSING | 181,099 |
| 2月 | #MISSING | #MISSING | 211,431 |
| 3月 | #MISSING | #MISSING | 205,690 |
| Qtr1 | #MISSING | #MISSING | 598,220 |
セルの計算順序: 例4
この例では、格納されたディメンション内のデータのスライスについて考えてみます。データベースの構成によって、ブロックを計算する順序が決まります。
この例では、次の条件が満たされています。
-
YearディメンションがTimeとしてタグ付けされている。
-
Measuresディメンションは、勘定科目としてタグ付けされています。
Essbaseでは、最初に「勘定科目」としてタグ付けされたディメンションを計算し、次に「時間」としてタグ付けされたディメンションを計算しますしたがって、この例では、MeasuresがYearより先に計算されます。
-
#MISSING値を集計する設定がオフになっています(デフォルト)。
-
Marketing、PayrollおよびMisc Expensesの値は、四半期(レベル1)でロードされています。
次のイメージは、Sample BasicデータベースのMeasuresディメンションのProfit分岐を示しています。この例では、Total Expensesが格納されている(動的計算メンバーではない)ことを前提としています。
図19-9 MeasuresディメンションのProfit分岐

式がなく、#MISSINGは連結されないため、上位レベルの値は上書きされません。2つの連結パス(レベル0以外のメジャー)を持つデータ値は、2回計算されます。
次のグリッドは、スライス(データ・ブロック内のセルのサブセット)を示しています。グリッドでは、スライスのセルの計算順序は数値1 - 17で表されます。
表19-9計算順序の例4: 入力セル、#MISSING値および計算済セル
| メジャー/年 | 1月 | 2月 | 3月 | Qtr1 |
|---|---|---|---|---|
| 販売 | 31538 | 32069 | 32213 | 13 |
| COGS | 14160 | 14307 | 14410 | 14 |
| 余白 | 1 | 4 | 7 | 15年10月 |
| Marketing | #MISSING | #MISSING | #MISSING | 15839 |
| Payroll | #MISSING | #MISSING | #MISSING | 12168 |
| その他 | #MISSING | #MISSING | #MISSING | 233 |
| 経費合計 | 2 | 5 | 8 | 16年11月 |
| 利益 | 3 | 6 | 9 | 17年12月 |
次のセルには、複数の集計パスがあります。
-
マージン-> Qtr1
-
合計費用->第1四半期
-
利益-> Qtr1
#MISSING値を集計する設定がオフになっているため、Essbaseでは、#MISSING値は集計されません。親レベルでロードされるデータは#MISSING値によって上書きされず、Essbaseによって、複数の集計パスがあるセルが2回計算されます。
計算順序に基づいて、マージンに算式を設定した場合、結果はQtr1の連結によって上書きされます。
結果を次に示します。
表19-10計算順序の例4: 結果
| メジャー/年 | 1月 | 2月 | 3月 | Qtr1 |
|---|---|---|---|---|
| 販売 | 31538 | 32069 | 32213 | 95,820 |
| COGS | 14160 | 14307 | 14410 | 42,877 |
| 余白 | 17,378 | 17,762 | 17,803 | 52,943 |
| Marketing | #MISSING | #MISSING | #MISSING | 15839 |
| Payroll | #MISSING | #MISSING | #MISSING | 12168 |
| その他 | #MISSING | #MISSING | #MISSING | 233 |
| 費用合計 | 28,240 | |||
| 利益 | 17,378 | 17,762 | 17,803 | 17年12月 |
密ディメンションに対する式についてのセルの計算順序
密ディメンションのメンバーに対する式を配置するときは、セルの計算順序を慎重に検討してください。前述の例で説明したように、複数の集計パスがあるセルの場合、最後に計算されたディメンションにより、以前のセルの計算が上書きされます。
データ・ブロック内のセルの計算順序は、メンバーに対する式の影響を受けません。Essbaseでは、データ・ブロック内で式が検出されると、他の必要なデータ・ブロックがロックされ、その式が計算されて、データ・ブロックの計算が続行されます。
必要に応じて、計算スクリプトを使用して、ディメンションの計算順序を変更できます。ブロック・ストレージ・キューブの計算スクリプトの開発およびブロック・ストレージ・キューブの式の開発を参照してください。