セルの計算順序

Essbaseによって各データ・ブロック内のセルが計算される順番は、データベースの構成方法によって異なります。

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

データベースの構成方法によって、各ブロック内の密ディメンション・メンバーの計算順序と、疎ディメンション・メンバーを表すブロックの計算順序も定義されます。

次に例を示します:

セルの計算順序: 例1

この例では、密に格納されたディメンションのデータ・スライスについて考えてみます。ディメンションの順序によって計算順序が定義されます。#MISSING値は連結され、算式はありません。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では、次の順序でセルが計算されます。

  1. Qtr1 ->ニューヨーク

  2. Qtr1 ->マサチューセッツ

  3. Jan -> East

  4. Feb ->イースト

  5. Mar -> East

  6. 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

この例では、格納された密ディメンション内のデータのスライスについて考えてみます。データベースの構成によって、ディメンションの順序によって計算順序が定義されます。1つのブロックを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のセルが計算されます。

  1. Qtr1 ->ニューヨーク

  2. Qtr1 ->マサチューセッツ

  3. Qtr1 ->東部

  4. Jan -> East

  5. Feb ->イースト

  6. Mar -> East

  7. 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つあります。

Marketディメンションのリージョン・メンバーに沿って、レベル0以外の入力データを計算する必要があります。子市場のデータがありません。#MISSING値は連結されず、式はありませんが、Essbaseでは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

この例では、格納されたディメンション内のデータのスライスについて考えてみます。データベースの構成によって、ブロックを計算する順序が決まります。

一部の非レベル0入力データは、時間ディメンションの四半期メンバーに沿って計算する必要があります。子月のデータが欠落しています。このキューブの構成方法、勘定科目はディメンションが最初に計算され、#MISSING値は連結されません。このスライスの勘定科目階層に算式はありません。

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

  • YearディメンションがTimeとしてタグ付けされている。

  • Measuresディメンションは、勘定科目としてタグ付けされています。

    Essbaseでは、最初に「勘定科目」としてタグ付けされたディメンションを計算し、次に「時間」としてタグ付けされたディメンションを計算しますしたがって、この例では、MeasuresがYearより先に計算されます。

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

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

次のイメージは、Sample BasicデータベースのMeasuresディメンションのProfit分岐を示しています。この例では、Total Expensesが格納されている(動的計算メンバーではない)ことを前提としています。

図19-9 MeasuresディメンションのProfit分岐


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では、データ・ブロック内で式が検出されると、他の必要なデータ・ブロックがロックされ、その式が計算されて、データ・ブロックの計算が続行されます。

必要に応じて、計算スクリプトを使用して、ディメンションの計算順序を変更できます。ブロック・ストレージ・キューブの計算スクリプトの開発およびブロック・ストレージ・キューブの式の開発を参照してください。