動的計算によって計算順序が変更される仕組み

「動的計算」では、バッチ計算のパフォーマンスが最適化され、Essbaseによる値の計算の順序が変更されます。疎ディメンションが最初に計算されます。非対称データ・セットまたは2パス・メンバーでの「動的計算」を使用するときは、注意が必要です。

動的に計算されるデータ値を使用すると、Essbaseによる値の計算の順序が変更され、キューブの管理方法に影響があることがあります。

動的計算の計算順序

「動的計算」の使用時は、Essbaseで最初に疎ディメンションの値が計算され、次に密が計算されます。密値は、勘定科目、時間、時系列、その他の密ディメンション、最後に属性の順に計算されます。

Essbaseでは、データ値を動的に計算するときに、データベースのバッチ計算順序とは異なる順序でデータを計算します。

バッチ計算中は、Essbaseでは、次の順序でデータベースが計算されます。

  1. 勘定科目としてタグ付けされたディメンション

  2. 時間としてタグ付けされたディメンション

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

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

  5. 2パス計算

計算順序の定義を参照してください。

動的に計算される値については、取得時に、Essbaseで次の順序でデータベースが計算されて、値が計算されます。

  1. 疎ディメンション

    • 時間としてタグ付けされたディメンションが疎で、データベース・アウトラインに時系列データが使用されている場合、Essbaseでは時間ディメンションに基づいて疎の計算が行われます。

    • それ以外の場合、Essbaseでは、通常バッチ計算に使用するディメンションに基づいて計算が行われます。

  2. 密ディメンション

    1. 勘定科目としてタグ付けされたディメンション(密の場合)

    2. 時間としてタグ付けされたディメンション(密の場合)

    3. 時系列計算

    4. 残りの密ディメンション

    5. 2パス計算

    6. 属性

データの取得で属性メンバーを使用する場合、計算順序の最後のステップは属性の総計です。属性計算では、問合せで指定された属性メンバーに一致するデータ・ブロックで、オンザフライの集約が実行されます。問合せに2パス計算メンバーが含まれる場合、属性計算では、すべての集約値が収集された後に2パス計算メンバー式が適用されます。この2パス計算では、実際のデータ・ブロックの値ではなく、属性計算からのデータ値を使用します。

問合せで属性メンバーを使用すると、Essbaseの動的計算でタイム・バランス・メンバーの値が無視されます。属性を使用しない取得では、タイム・バランス・メンバーの値が計算に適用されます。属性メンバーを使用する場合と使用しない場合の計算手順の違いによって、動的に計算される上位レベルの時間メンバーに対して異なる結果が生成されます。

属性を使用しない取得では、これらの動的に計算されるメンバーは最後のステップで計算されるため、タイム・バランスの機能が適切に適用されます。一方、属性を使用する取得では、属性の総計が、適用される最後のステップとなります。計算順序の違いによって、動的に計算される上位レベルの時間メンバーに対して2つの異なる予測可能な結果が生成されます。

2パス・メンバーの動的計算の計算順序

「動的計算」では、Essbaseによる値の計算の順序が変更されます。2パス・メンバーでの「動的計算」を使用するときは、注意が必要です。

Essbaseで、2パスとしてタグ付けされたメンバーのデータ値を動的に計算するときに(「2パス計算」を参照)、必要な計算結果が生成されるように、次の情報を考慮してください。

複数の動的計算の密ディメンション・メンバーが2パスとしてタグ付けされている場合、Essbaseは、初回パスで動的計算を実行した後、2パス・メンバーを次の順序で計算します。

  1. 勘定科目ディメンションの2パス・メンバー(存在する場合)

  2. 時間ディメンションの2パス・メンバー(存在する場合)

  3. 残りの密ディメンションの2パス・メンバー(アウトラインでのディメンションの表示順序)

たとえば、Sample.Basicデータベースで、次のように仮定します。

  • 密のMeasuresディメンション(勘定科目としてタグ付けされたディメンション)のMargin%は、動的計算および2パスとしてタグ付けされています。

  • 密のScenarioディメンションのVarianceは、動的計算および2パスとしてタグ付けされています。

Essbaseでは、勘定科目ディメンション・メンバーが最初に計算されます。そのため、Essbaseは、(Measuresディメンションの) Margin%を計算してから、(Scenarioディメンションの) Varianceを計算します。

Scenarioが疎ディメンションの場合、Essbaseでは、動的計算の通常の計算順序に従って、最初にVarianceが計算されます。次にEssbaseによってMargin%が計算されます。動的計算の計算順序を参照してください。

この計算順序では、Varianceに対する式ではなくMargin %に対する式を使用して、EssbaseでMargin % -> Varianceを計算する必要があるため、必要な結果が生成されません。Scenarioを密ディメンションにすることで、この問題を回避できます。Measuresディメンション(勘定科目ディメンション)が疎の場合、Essbaseでは引き続き最初にMargin%が計算されるため、この問題は発生しません。

非対称型データの計算順序

Essbase「動的計算」は、非対称データ・セットでの使用に適していない場合があります。このトピックでの例をご自分のユースケースに照らして確認してください。

「動的計算」の計算順序はバッチ計算の計算順序と異なるため、一部のキューブ・アウトラインでは、特定のメンバーを「動的計算」としてタグ付けすると、異なる計算結果になる場合があります。この違いは、Essbaseで非対称型データを動的に計算したときに発生します。

対称型データの計算では、計算されるディメンションに関係なく、同じ結果が生成されます。

次の対称型の例のデータ・セットを使用して、Qtr1 -> Profitを計算すると、Timeとしてタグ付けされたディメンションに沿って計算しても、Accountsとしてタグ付けされたディメンションに沿って計算しても、同じ結果が生成されます。Timeディメンションに沿って計算すると、Jan、FebおよびMarの値が加算されます。

50+100+150=300 

Accountsディメンションに沿って計算すると、Qtr1 -> SalesからQtr1 -> COGSが減算されます。

600–300=300 

表22-1 対称型計算の例

Time -> Accounts Jan Feb Mar Qtr1

Sales

100

200

300

600

COGS

50

100

150

300

Profit (Sales – COGS)

50

100

150

300

非対称型データの計算では、ディメンションごとに異なる計算が行われます。

次の非対称型の例のデータ・セットを使用して、East -> Salesを計算すると、Marketディメンションに沿って計算した場合は正しい結果が生成されますが、Accountsディメンションに沿って計算した場合は間違った結果が生成されます。Marketディメンションに沿って計算すると、New York、FloridaおよびConnecticutの値が加算され、正しい結果が生成されます。

50 + 100 + 100 = 250

Accountsディメンションに沿って計算すると、East -> Priceの値とEast -> UnitsSoldの値が乗算され、間違った結果が生成されます。

15 * 50 = 750

表22-2 非対称型計算の例

Market -> Accounts New York Florida Connecticut East

UnitsSold

10

20

20

50

Price

5

5

5

15

Sales (Price * UnitsSold)

50

100

100

250

次のアウトラインでは、Eastが疎ディメンションで、Accountsが密ディメンションです。


このイメージは、Eastが疎ディメンションで、Accountsが密ディメンションであるアウトラインを示しています。

EastとSalesが動的計算としてタグ付けされている場合、Essbaseでは、EastとSalesが動的計算としてタグ付けされていない場合とは異なる結果が計算されます。

EastとSalesが動的計算メンバーでない場合、Essbaseでは次のディメンションが計算されて、正しい結果が生成されます。

  1. 密のAccountsディメンション(New York、FloridaおよびConnecticutのUnitsSold、PriceおよびSalesの値を計算します)

  2. 疎のEastディメンション(EastのSales値を得るために、New York、FloridaおよびConnecticutのUnitsSold、PriceおよびSalesの計算値を集約します)

EastとSalesが動的計算メンバーの場合、Essbaseでは次のディメンションが計算されて、間違った結果が生成されます。

  1. 疎のEastディメンション(Eastの値を得るために、New York、FloridaおよびConnecticutのUnitsSold、PriceおよびSalesの値を集約します)

  2. East -> Salesの値(Salesの値を得るために、Eastデータ・ブロック内の集約値を取得し、この集約値を使用して式の計算を実行します)

この問題を回避して必要な結果を確実に得るために、Salesメンバーを動的計算としてタグ付けしないでください。

ハイブリッド・モードでの解決順序

Essbaseでの解決順序によって、ハイブリッド・モードで動的計算が実行される順序が決まります。解決順序をカスタマイズするか、デフォルトをそのまま使用することができます。デフォルトは、高パフォーマンスおよび依存性分析用に最適化されています。

解決順序の概要は、動的メンバー式または計算スクリプトの動的依存性のいずれで開始されるかにかかわらず、動的計算の実行に適用されます。必要な計算の優先度を示す解決順序が指定されている場合を除き、マルチディメンショナル問合せでセルが評価されるときに計算が解決される順序はあいまいであることがあります。

ディメンションまたはメンバーの解決順序を設定するか、Essbaseのデフォルトの解決順序を使用できます。設定できる最小解決順序は0で、最大は127です。解決順序が大きいメンバーが後で計算されます。たとえば、解決順序が1のメンバーは解決順序が2のメンバーよりも前に解決されます。

ハイブリッド・モードが有効な場合、デフォルトの解決順序(計算順序とも呼ばれる)がブロック・ストレージ・データベースの解決順序に厳密に一致します。

ディメンション/メンバー・タイプ デフォルトの解決順序の値
保管済メンバー 0
疎ディメンション・メンバー 10
密の勘定科目ディメンション・メンバー 30
密の時間ディメンション・メンバー 40
密の標準のディメンション・メンバー 50
属性ディメンション・メンバー 90
2パス動的メンバー 100
MDX計算済メンバーまたは名前付きセット(MDX Withで定義) 120

まとめると、ハイブリッド・モードのデフォルトの解決順序では、アウトラインに表示される順序(上から下)で、保管済メンバーが動的計算メンバーの前に計算され、疎ディメンションが密ディメンションの前に計算されることが指定されています。

解決順序が指定されていない動的メンバーは(式の有無にかかわらず)、2パスとしてタグ付けされている場合を除き、そのディメンションの解決順序を継承します。

2パス計算は、正確な値を得るために2回計算する必要がある式を持つメンバーに、ブロック・ストレージ・モードで適用できる設定です。

ノート:

ハイブリッド・モード・キューブでは、2パス計算を使用しないでください。解決順序のみを使用します。

2パスはハイブリッド・モードでは適用できず、2パスとしてタグ付けされたメンバーは、属性の後に最後に計算されます。ハイブリッド・モードでは、デフォルトの解決順序が要件を満たさない場合は、2パスではなくカスタム解決順序を実装する必要があります。

ハイブリッド・モードでは、デフォルトの解決順序が次のシナリオに対して最適化されます。

  • 前方参照。動的メンバー式がアウトライン順序で後のメンバーを参照します。ハイブリッド・モードでは、アウトライン順序の依存性がありません。

  • アウトライン順序に基づく子の値の集約は、同等の式を使用した集約とより厳密に一致します。

  • 疎な式内の依存性としての動的な密メンバー。ハイブリッド・モードでは、疎な式が動的な密メンバーを参照する場合、疎ディメンションが最初に計算されるため、この参照は無視されます。この動作を変更するには、疎ディメンションに密ディメンションの解決順序より高い(密ディメンションより後で計算される)解決順序を割り当てます。

解決順序のカスタマイズ

ハイブリッド・モードでの動的計算の動作を調整する必要がある場合は、ディメンションおよびメンバーの解決順序をカスタマイズすると、アウトラインに大幅な変更を加えることなくそれを実現するために役立ちます。

カスタム解決順序を実装すると、デフォルトの解決順序がオーバーライドされます。メンバーまたはディメンションの解決順序が等しい場合は、アウトラインに表示される順序(上から下)によって競合が解決されます。

特定のメンバーの解決順序をカスタマイズした場合を除き、最上位ディメンション・メンバーの解決順序が、ディメンション内のすべての動的メンバーに適用されます。

解決順序を変更するには、Essbase Webインタフェースのアウトライン・エディタを使用するか、Smart Viewを使用します(選択したPOVでの解決順序の変更を参照)。

設定できる最小解決順序は0で、最大は127です。解決順序の値が大きいメンバーほど、後に計算されることになります。

解決順序のユースケースを詳しく確認するには、Essbaseのファイル・カタログにあるアプリケーション・ワークブックのギャラリの技術セクションで解決順序テンプレートを参照してください。

非ハイブリッド・モードでの解決順序に関するノート

集約ストレージ・キューブでは、

  • すべてのディメンションの解決順序が0に設定されます。

  • 集約は、次の例外を除き、アウトラインの順序で実行されます。

    • 保管階層のメンバーが最初に処理されます。
    • 動的階層のメンバーが次に処理されます。

ハイブリッドでないブロック・ストレージ・キューブでの、デフォルトの解決順序は

  • 密の前に疎

  • 時間の前に勘定科目

  • 最後に属性

ノート:

勘定科目メンバーの解決順序が時間メンバーの解決順序よりも大きくなるように手動で設定されている場合、勘定科目は動的時系列メンバーの後に評価されます。