動的計算による計算順序の変更方法の理解
動的に計算されたデータ値を使用すると、Essbaseが値を計算する順序が変更され、データベースの管理方法に影響を与える可能性があります。
動的計算の計算順序
Essbaseは、データ値を動的に計算するときに、バッチ・データベースの計算順序とは異なる順序でデータを計算します。
バッチ計算中、Essbaseは次の順序でデータベースを計算します:
-
勘定科目としてタグ付けされたディメンション
-
timeとしてタグ付けされたディメンション
-
その他の密ディメンション(データベース・アウトラインに表示される順序)
-
その他の疎ディメンション(データベース・アウトラインに表示される順序)
-
2パス計算
「計算順序の定義」を参照してください。
動的に計算された値の場合、Essbaseでは、取得時に次の順序でデータベースを計算して値を計算します:
-
疎ディメンション
-
timeとしてタグ付けされたディメンションが疎で、データベース・アウトラインで時系列データが使用されている場合、Essbaseは時間ディメンションに基づいて疎計算を行います。
-
それ以外の場合、Essbaseは、通常バッチ計算に使用されるディメンションに基づいて計算を行います。
-
-
密ディメンション
-
勘定科目としてタグ付けされたディメンション(密の場合)
-
密の場合、時間としてタグ付けされたディメンション
-
時系列計算
-
残密ディメンション
-
2パス計算
-
属性
-
データ取得で属性メンバーを使用する場合、計算順序の最後のステップは属性の合計です。 属性計算は、問合せで指定された属性メンバーと一致するデータ・ブロックに対してオンザフライ集計を実行します。 問合せに2パス計算メンバーが含まれている場合、属性計算では、すべての集計値の収集後に2パス計算メンバー式が適用されます。 この2パス計算では、実際のデータ・ブロックの値ではなく、属性計算のデータ値が使用されます。
問合せで属性メンバーを使用すると、Essbaseは動的計算でタイム・バランス・メンバーの値を無視します。 属性を使用しない取得時に、タイム・バランス・メンバーの値が計算に適用されます。 属性メンバーを使用する場合と使用しない場合の計算手順の違いにより、動的に計算される上位レベルの時間メンバーに対して異なる結果が生成されます。
属性を使用しない取得時には、これらの動的に計算されたメンバーが最後のステップで計算されるため、タイム・バランス機能が適切に適用されます。 ただし、属性を使用する取得時には、属性の合計が最後に適用されます。 計算順序の違いによって、動的に計算される上位レベルの時間メンバーに対して2つの異なる予測可能な結果が生成されます。
2パス・メンバーを動的に計算する計算順序
次の情報を検討して、Essbaseでは、2パスとしてタグ付けされたメンバーのデータ値を動的に計算する際に、必要な計算結果が生成されるようにします(「2パス計算の使用」を参照)。
複数の「動的計算」密ディメンション・メンバーが2パスとしてタグ付けされている場合、Essbaseは最初のパスで動的計算を実行してから、次の順序で2パス・メンバーを計算します:
-
勘定科目ディメンションに2パス・メンバー(存在する場合)
-
時間ディメンションに2パス・メンバー(存在する場合)
-
ディメンションがアウトラインに表示される順序で、残りの密ディメンションの2パス・メンバー
たとえば、Sample.Basicデータベースでは、次のように仮定します:
-
密Measuresディメンション(勘定科目としてタグ付けされたディメンション)のマージン%は、「動的計算」および2パスとしてタグ付けされます。
-
密Scenarioディメンションの差異は、「動的計算」および2パスとしてタグ付けされます。
Essbaseは、最初に勘定科目ディメンション・メンバーを計算します。 そのため、Essbaseでは(Measuresディメンションから)マージン%が計算され、(Scenarioディメンションから)差異が計算されます。
Scenarioが疎ディメンションの場合、Essbaseは、動的計算の通常の計算順序に従って、最初にVarianceを計算します。 その後、Essbaseでマージン%が計算されます。 「動的計算の計算順序」を参照してください。
Essbaseでは、差異の式ではなく、Margin %の式を使用してMargin % -> Varianceを計算する必要があるため、この計算順序では必要な結果は生成されません。 この問題を回避するには、シナリオを密ディメンションにします。 この問題は、Measuresディメンション(勘定科目ディメンション)が疎の場合は発生しません。これは、Essbaseでは引き続きマージン%が最初に計算されるためです。
非対称データの計算順序
動的計算に使用される計算順序はバッチ・データベース計算に使用される計算順序とは異なるため、一部のデータベース・アウトラインでは、特定のメンバーを「動的計算」としてタグ付けすると、異なる計算結果が得られる場合があります。 これらの違いは、Essbaseが非対称データを動的に計算する場合に発生します。
対称データの計算では、計算されるディメンションに関係なく、同じ結果が生成されます。
次の対称例のデータ・セットを使用すると、時間としてタグ付けされたディメンションと勘定科目としてタグ付けされたディメンションのどちらで計算するかにかかわらず、Qtr1-> Profitの計算では同じ結果が生成されます。 時間ディメンションに沿って計算し、Jan、FebおよびMarの値を追加します:
50+100+150=300
勘定科目ディメンションに沿って計算し、Qtr1 -> COGSをQtr1 -> Salesから減算します:
600–300=300
表22-1 対称計算の例
Time -> Accounts | 1月 | 2月 | 3月 | Qtr1 |
---|---|---|---|---|
売上高 |
100 |
200 |
300 |
600 |
COGS |
50 |
100 |
150 |
300 |
Profit (Sales - COGS) |
50 |
100 |
150 |
300 |
非対称データの計算は、異なるディメンションに沿って異なる方法で計算されます。
次の非対称の例のデータ・セットを使用すると、East -> Salesの計算ではMarketディメンションに沿って計算するときに正しい結果が生成されますが、勘定科目ディメンションに沿って計算するときには正しくない結果が生成されます。 Marketディメンションに沿って計算し、New York、FloridaおよびConnecticutの値を追加すると、正しい結果が得られます:
50 + 100 + 100 = 250
勘定科目ディメンションに沿って計算し、値East -> Priceに値East -> UnitsSoldを乗算すると、正しくない結果が生成されます:
15 * 50 = 750
表22-2 非対称計算の例
Market -> Accounts | ニューヨーク | Florida | Connecticut | 東部 |
---|---|---|---|---|
UnitsSold |
10 |
20 |
20 |
50 |
Price |
5 |
5 |
5 |
15 |
販売高(価格 * UnitsSold) |
50 |
100 |
100 |
250 |
次のアウトラインでは、Eastは疎ディメンションで、Accountsは密ディメンションです:

EastおよびSalesが「動的計算」としてタグ付けされている場合、EastおよびSalesが「動的計算」としてタグ付けされていない場合とは異なる結果がEssbaseによって計算されます。
EastおよびSalesが「動的計算」メンバーでない場合、Essbaseは次のディメンションを計算して正しい結果を生成します:
-
密勘定科目ディメンション-New York、FloridaおよびConnecticutのUnitsSold、価格および販売の値を計算
-
Sparse Eastディメンション-New York、FloridaおよびConnecticutのUnitsSold、PriceおよびSalesの計算値を集約してEastのSales値を取得
EastおよびSalesが「動的計算」メンバーである場合、Essbaseは次のディメンションを計算して正しくない結果を生成します:
-
Sparse Eastディメンション-New York、FloridaおよびConnecticutのUnitsSold、PriceおよびSalesの値を集計してEastの値を取得
-
East -> Salesの値- Eastデータ・ブロックの集計値を示し、これらの値を使用して式の計算を実行し、Salesの値を取得
この問題を回避し、必要な結果が得られるようにするには、Salesメンバーを「動的計算」としてタグ付けしないでください。