セルの計算順序
各データ・ブロックには、疎ディメンション・メンバーの一意の組合せに対するすべての密ディメンション・メンバー値が含まれます。 各データ値は、データ・ブロックのセルに含まれます。
Essbaseが各ブロック内のセルを計算する順序は、データベースの構成方法によって異なります。 データベースの構成方法によって、密ディメンション・メンバー「各ブロック内」のメンバー計算順序が定義されます。 疎ディメンション・メンバーを表すブロックの計算順序も定義します。
次の例を参照してください:
セルの計算順序: 例1
この例(最も単純なケース)では、次の条件が当てはまります:
-
時間タグまたは勘定科目タグを持つディメンションはありません。
-
#MISSING値を連結するための設定がオンになっています。
-
MarketとYearは密ディメンションです。
Essbaseでは、密ディメンションはデータベース・アウトラインで定義されている順序で計算されます。 YearディメンションがMarketディメンションの前のデータベース・アウトラインに配置され、最初に計算されるとします。
次の表に、データ・ブロック内のセルのサブセットを示します:
表20-3 計算順序の例1: 入力セルと計算済セル
Year-Market | ニューヨーク | マサチューセッツ | 東部 |
---|---|---|---|
1月 | 112345 | 68754 | 3 |
2月 | 135788 | 75643 | 4 |
3月 | 112234 | 93456 | 5 |
Qtr1 | 1 | 2 | 6 |
データ値が次の入力セルにロードされました:
-
Jan -> New York
-
Feb -> New York
-
Mar -> New York
-
Jan -> Massachusetts
-
Feb -> Massachusetts
-
Mar -> Massachusetts
Essbaseは、次のセルを計算します。 次の例では、これらのセルの計算順序は、セルに表示される数値1から6で表されます:
-
Qtr1 -> New York
-
Qtr1 -> Massachusetts
-
Jan -> East
-
Feb -> East
-
Mar -> East
-
Qtr1 -> East
Qtr1 -> Eastには複数の連結パスがあり、MarketまたはYearで連結できます。 Marketで連結されている場合は、Qtr1 ->New YorkおよびQtr1 ->Massachusettsの連結です。 年に連結すると、Jan -> East、Feb -> EastおよびMar -> Eastが連結されます。
Essbaseは、Qtr1 -> Eastに複数の統合パスがあることを認識しています。 したがって、次に示すように、Qtr1の値を連結してQtr1 -> Eastを一度のみ計算し、最後に計算されたディメンション(この例ではMarketディメンション)の連結パスを使用します。
表20-4 計算順序の例1: 結果
Year-Market | ニューヨーク | マサチューセッツ | 東部 |
---|---|---|---|
1月 | 112345 | 68754 | 181099 |
2月 | 135788 | 75643 | 211431 |
3月 | 112234 | 93456 | 205690 |
Qtr1 | 360367 | 237853 | 598220 |
計算順序に基づいて、データベース・アウトラインのQtr1にメンバー式を配置すると、Essbaseでは、Qtr1 -> Eastの計算時にその式が無視されます。 データベース・アウトラインのEastにメンバー式を配置すると、EssbaseがMarket集計パスでQtr1 -> Eastを集計するときに式が計算されます。
必要に応じて、計算スクリプトを使用して、選択した順序でディメンションを計算できます。
セルの計算順序: 例2
この例では、次の条件が満たされます:
-
時間タグまたは勘定科目タグを持つディメンションはありません。
-
#MISSING値を連結するための設定がオフになっています(デフォルト)。
-
MarketとYearは密ディメンションです。
Essbaseでは、密ディメンションはデータベース・アウトラインで定義されている順序で計算されます。 YearディメンションがMarketディメンションの前のデータベース・アウトラインに配置され、最初に計算されるとします。
次の例は、データ・ブロック内のセルのサブセットを示しています:
表20-5 計算順序の例2: 入力セルと計算済セル
Year-Market | ニューヨーク | マサチューセッツ | 東部 |
---|---|---|---|
1月 | 112345 | 68754 | 4 |
2月 | 135788 | 75643 | 5 |
3月 | 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セルを計算します。 次の例では、これらのセルの計算順序は、セルに表示される数値1から7で表されます:
-
Qtr1 -> New York
-
Qtr1 -> Massachusetts
-
Qtr1 -> East
-
Jan -> East
-
Feb -> East
-
Mar -> East
-
Qtr1 -> East
Qtr1 -> Eastは、YearとMarketの両方の連結パスで計算されます。 まず、Qtr1 -> Eastは、Qtr1 -> New YorkおよびQtr1 -> Massachusettsの連結として計算されます。 次に、Qtr1 -> EastはJan -> East、Feb -> EastおよびMar -> Eastの連結として計算されます。
結果は、1などの結果と同じです。 ただし、Qtr1 -> Eastは2回計算されています。 このことは、親レベルでデータをロードする必要がある場合に重要です。
表20-6 計算順序の例2: 結果
Year-Market | ニューヨーク | マサチューセッツ | 東部 |
---|---|---|---|
1月 | 112345 | 68754 | 181099 |
2月 | 135788 | 75643 | 211431 |
3月 | 112234 | 93456 | 205690 |
Qtr1 | 360367 | 237853 | 598220 |
計算順序に基づいて、データベース・アウトラインのQtr1にメンバー式を配置した場合、EssbaseがMarket集計パスでQtr1 -> Eastを集計すると、その結果が上書きされます。 データベース・アウトラインのEastにメンバー式を配置した場合、Market集計パスが最後に計算されるため、結果は保持されます。
セルの計算順序: 例3
この例では、次の条件が満たされます:
-
時間タグまたは勘定科目タグを持つディメンションはありません。
-
#MISSING値を連結するための設定がオフになっています(デフォルト)。
-
データ値が親レベルでロードされました。
-
MarketとYearは密ディメンションです。
Essbaseでは、密ディメンションはデータベース・アウトラインで定義されている順序で計算されます。 YearディメンションがMarketディメンションの前のデータベース・アウトラインに配置され、最初に計算されるとします。
次の例は、データ・ブロック内のセルのサブセットを示しています:
表20-7 計算順序の例3: 入力セルと#MISSING値
Year-Market | ニューヨーク | マサチューセッツ | 東部 |
---|---|---|---|
1月 | #MISSING | #MISSING | 181099 |
2月 | #MISSING | #MISSING | 211431 |
3月 | #MISSING | #MISSING | 205690 |
Qtr1 | #MISSING | #MISSING |
セルは、「セルの計算順序: 例2」と同じ順序で計算されます。 Qtr1 -> Eastは、YearとMarketの両方の連結パスで計算されます。
#MISSING値の連結の設定がオフになっているため、Essbaseでは#MISSING値は連結されません。 したがって、親レベルでロードされたデータは、その下の#MISSING値によって上書きされません。
ただし、子データ値のいずれかが#MISSINGでない場合、これらの値は連結され、親値が上書きされます。 たとえば、Jan -> New Yorkに50000.00が含まれている場合、この値は親レベルでロードされた値を上書きします。
結果には、EssbaseがまずJan -> East、Feb -> EastおよびMar -> Eastを連結してQtr1 -> Eastセルを正しく計算し、次にMarket連結パスで計算することが示されています。 ただし、Qtr1 -> New YorkおよびQtr1 -> Massachusettsの#MISSING値は連結されないため、Qtr1 -> Eastの値は上書きされません。
表20-8 計算順序の例3: 結果
Year-Market | ニューヨーク | マサチューセッツ | 東部 |
---|---|---|---|
1月 | #MISSING | #MISSING | 181099 |
2月 | #MISSING | #MISSING | 211431 |
3月 | #MISSING | #MISSING | 205690 |
Qtr1 | #MISSING | #MISSING | 598220 |
Essbaseでは、セルの値が計算されるように、Qtr1 -> Eastセルを2回計算する必要があります。 Qtr1 -> Eastが最後の連結パスのみに基づいて計算される場合、結果は#MISSINGになりますが、これは必要な結果ではありません。
セルの計算順序: 例4
この例では、次の条件が満たされます:
-
Yearディメンションはtimeとしてタグ付けされています。
-
Measuresディメンションは勘定科目としてタグ付けされます。
Essbaseでは、最初に勘定科目としてタグ付けされたディメンションが計算され、次に時間としてタグ付けされたディメンションが計算されます。 したがって、この例では、メジャーはYearの前に計算されます。
-
#MISSING値を連結するための設定がオフになっています(デフォルト)。
-
マーケティング、給与およびその他費用の値は、Qtr1の親レベルでロードされています。
次の図は、Sample.BasicデータベースのMeasuresディメンションのProfitブランチを示しています。 この例では、Total Expensesが「動的計算」メンバーでないことを前提としています。
図20-9 メジャー・ディメンションの利益ブランチ

次の表に、データ・ブロック内のセルのサブセットを示します:
表20-9 計算順序の例4: 入力セル、#MISSING値および計算済セル
Measures/Year | 1月 | 2月 | 3月 | Qtr1 |
---|---|---|---|---|
売上高 | 31538 | 32069 | 32213 | 13 |
COGS | 14160 | 14307 | 14410 | 14 |
マージン | 1 | 4 | 7 | 10/15 |
マーケティング | #MISSING | #MISSING | #MISSING | 15839 |
Payroll | #MISSING | #MISSING | #MISSING | 12168 |
その他 | #MISSING | #MISSING | #MISSING | 233 |
費用合計 | 2 | 5 | 8 | 11/16 |
Profit | 3 | 6 | 9 | 12/17 |
次のセルには複数の連結パスがあります:
-
Margin -> Qtr1
-
Total Expenses -> Qtr1
-
Profit -> Qtr1
#MISSING値の連結の設定がオフになっているため、Essbaseでは#MISSING値は連結されません。 したがって、親レベルでロードされたデータは#MISSING値によって上書きされず、Essbaseでは複数の連結パスを持つセルが2回計算されます。
結果を次に示します:
表20-10計算順序の例4: 結果
Measures/Year | 1月 | 2月 | 3月 | Qtr1 |
---|---|---|---|---|
売上高 | 31538 | 32069 | 32213 | 95820 |
COGS | 14160 | 14307 | 14410 | 42877 |
マージン | 17378 | 17762 | 17803 | 52943 |
マーケティング | #MISSING | #MISSING | #MISSING | 15839 |
Payroll | #MISSING | #MISSING | #MISSING | 12168 |
その他 | #MISSING | #MISSING | #MISSING | 233 |
費用合計 | 28240 | |||
Profit | 17378 | 17762 | 17803 | 12/17 |
計算順序に基づいて、データベース・アウトラインのマージンなどのメンバー式を配置した場合、その結果はQtr1の連結によって上書きされます。
密ディメンションの式のセルの計算順序
データ・ブロック内のセルの計算順序は、メンバーの式の影響を受けません。 Essbaseは、データ・ブロック内で式を検出すると、他の必要なデータ・ブロックをロックして式を計算し、データ・ブロックの計算を続行します。
密ディメンション・メンバーに式を配置する場合は、セルの計算順序を慎重に考慮してください。 前述の例で説明したように、最後に計算されたディメンションによって、複数の連結パスを持つセルの以前のセル計算が上書きされます。 必要に応じて、計算スクリプトを使用してディメンションの計算順序を変更できます。 「ブロック・ストレージ・データベース用の計算スクリプトの開発」および「ブロック・ストレージ・データベースの式の開発」を参照してください。