属性データの計算
Essbaseは、Essbaseによって作成されたシステム定義ディメンションのメンバーを使用して、取得時に属性データを動的に計算します。 このディメンションを使用すると、合計や平均などの様々な計算関数を同じ属性に適用できます。 属性ディメンションのメンバーに対して特定の計算を実行することもできます。たとえば、オンスでサイズ設定された製品の収益性をオンスで判断できます。
次の情報は、動的計算を含む属性ディメンションおよびEssbase計算の概念を理解していることを前提としています。 次の項を参照してください。
属性計算ディメンションの理解
アウトラインに最初の属性ディメンションを作成すると、Essbaseによって、デフォルト名Sum、Count、Min (minimum)、Max (maximum)およびAvg (average)を持つ5つのメンバーで構成される属性計算ディメンションも作成されます。 これらのメンバーをスプレッドシートまたはレポートで使用して、西部のコーラの平均年次販売などの属性データを動的に計算およびレポートできます。
属性計算ディメンションはアウトラインに表示されません。 これは、Smart Viewなど、ディメンション・メンバーを選択した場所に表示されます。
属性計算ディメンションには、次のプロパティがあります:
-
System-defined
アプリケーションで最初の属性ディメンションを作成すると、Essbaseによって属性計算ディメンションとそのメンバー(Sum、Count、Min、MaxおよびAvg)が作成されます。 各メンバーは、属性に対して実行される計算のタイプを表します。
「デフォルトの属性計算メンバーの理解」を参照してください。
-
ラベルのみ
すべてのラベルのみのディメンションと同様に、属性計算ディメンションは最初の子であるSumの値を共有します。
「メンバー・ストレージ・プロパティ」を参照してください。
-
動的計算
属性計算ディメンションのデータは、ユーザーがリクエストすると計算され、破棄されます。 計算された属性データはデータベースに格納できません。
「データ値の動的計算」を参照してください。
-
「アウトライン・エディタ」には表示されません
属性計算ディメンションは「アウトライン・エディタ」に表示されません。 このディメンションのメンバーは、スプレッドシートおよびレポートで表示できます。
属性ディメンションに沿った連結はありません。 属性データを計算するために、属性ディメンションのメンバーを集計記号(+や -など)またはメンバー式でタグ付けすることはできません。 「動的計算」メンバーとしての属性計算は、時間や計算順序の観点からバッチ計算には影響しません。
取得時に属性データを計算するために、Essbaseは次のタスクを実行します:
-
現在の問合せに存在する属性ディメンション・メンバーに関連付けられた基本ディメンション・メンバーを検索
-
現在の問合せの属性とメンバーの組合せの合計、件数、最小、最大または平均を動的に計算
-
スプレッドシートまたはレポートに結果を表示
-
計算された値を破棄します。つまり、値はデータベースに格納されません
ノート:
Essbaseでは、属性データの計算時に#MISSING値が除外されます。
たとえば、「図7-2」に示すように、スプレッドシート・ユーザーは、スプレッドシート・レポートで属性ディメンション(Ounces_16およびBottle)のメンバーと属性計算メンバー(Avg)を指定します。 取得時に、Essbaseでは、現在のメンバーの組合せに対して、次の属性に関連付けられているすべての製品の平均販売値が動的に計算されます(Actual -> Sales -> East -> Qtr1):
図7-2 属性計算メンバーの取得

「Smart Viewでの属性計算メンバーへのアクセス」を参照してください。
デフォルトの属性計算メンバーの理解
属性計算ディメンションには、属性データの計算およびレポートに使用される5つのメンバー(Sum、Count、Min、MaxおよびAvg)が含まれます:
-
合計-属性または属性の組合せを持つメンバーの値の合計を計算します。
-
カウント-データ値が存在する、指定した属性または属性の組合せを持つメンバーの数を計算します。 件数には、データ・ブロックが存在するメンバーのみが含まれます。 データ値があるかどうかに関係なく、特定の属性を持つすべてのメンバーの数を計算するには、@COUNT関数を@ATTRIBUTE関数と組み合せて使用します。
-
Avg-指定された属性または属性の組合せ(SumをCountで割った値)について、欠損していない値の算術平均(平均)を計算します。
-
Min-指定した属性または属性の組合せの最小データ値を計算します。
-
Max-指定した属性または属性の組合せの最大データ値を計算します。
ノート:
これらの各計算では、#MISSING値は除外されます。
これらのデフォルトのメンバー名は、標準メンバーと同じ命名規則に従って変更できます。 「属性計算ディメンションのメンバー名の変更」を参照してください。
属性計算の例の表示
Essbaseによる属性データの計算方法の例として、東部の次の年次販売データを考えてみます:
表7-7 サンプル属性データ
基本ディメンション・メンバー | 関連付けられた属性 | 属性とメンバーの組合せの販売値 |
---|---|---|
コーラ |
Ounces_12, Can |
23205 |
Diet Cola |
Ounces_12, Can |
3068 |
Diet Cream |
Ounces_12, Can |
1074 |
ワイン |
Ounces_32、ボトル |
6398 |
オレンジ |
Ounces_32、ボトル |
3183 |
イチゴ |
Ounces_32、ボトル |
5664 |
「図7-3」では、計算属性データがスプレッドシート・レポートでどのように表示されるかが示されます。 属性の複数の属性計算メンバーを取得できます。 たとえば、ボトルおよび缶の合計、カウント、平均、最小および最大を計算できます。
図7-3 属性データを含むサンプル・スプレッドシート

Smart Viewでの属性計算メンバーへのアクセス
Smart Viewの属性の計算ディメンションからメンバーにアクセスできます。 スプレッドシートから、ユーザーは次のいずれかのメソッドを使用して属性計算ディメンション・メンバーを表示できます:
-
シートへのメンバーの直接入力
-
クエリー・デザイナからのメンバーの選択
-
EssCellパラメータとしてのメンバーの入力
「Oracle Smart View for Officeの操作」を参照してください。
計算および取得のパフォーマンスの最適化
属性の計算および取得のパフォーマンスを最適化するには、次の点を考慮してください:
-
属性計算の計算順序は、動的計算の場合と同じです。 概要は、「動的計算の計算順序」を参照してください。
-
Essbaseでは、取得時に属性データが動的に計算されるため、属性の計算は、データベース全体(バッチ)の計算のパフォーマンスには影響しません。
-
基本ディメンション・メンバーを「動的計算」としてタグ付けすると、取得時間が長くなる可能性があります。
-
問合せにSumメンバーと、関連付けられた基本メンバーが2パスとしてタグ付けされている属性ディメンション・メンバーが含まれている場合、取得時間が遅くなる可能性があります。
-
属性取得のパフォーマンスを最大化するには、次のいずれかの方法を使用します:
-
「アウトライン・パフォーマンスの最適化」のヒントを使用してアウトラインを構成します。
-
データを取得する前に、最下位レベルのベース・ディメンションにドリルダウンします。 たとえば、Smart Viewでは、データなしでナビゲート機能をオンにして、レポートに含まれる基本ディメンションの最下位レベルにドリルダウンし、データを取得します。
-
基本ディメンションのメンバーが複数の属性ディメンションに関連付けられている場合は、その属性に従って基本ディメンションのメンバーをグループ化することを検討してください。 たとえば、Sample.Basicデータベースでは、すべての8オンス製品をグループ化できます。
-
計算式での属性の使用
属性計算ディメンションを使用して属性データを計算する以外に、標準ディメンションまたは基本ディメンションのメンバーに対して計算式を使用して、属性ディメンションのメンバーに対して特定の計算を実行できます。たとえば、オンスでサイズ設定された製品の収益性をオンスで判断できます。
式を属性ディメンションのメンバーに関連付けることはできません。
ノート:
2パス・メンバーに関連付けられた式で属性を使用する場合は、いくつかの制限が適用されます。 「属性ディメンションの2パス計算の理解」の2パス計算に関する行を参照してください。
次の関数を使用して、属性に対して特定の計算を実行できます:
表7-8 属性を計算する関数
関数 | 計算のタイプ |
---|---|
@ATTRIBUTE |
特定の属性を持つすべての基本メンバーのリストを生成します。 たとえば、Bottle属性を持つメンバーのリストを生成し、それらのメンバーの価格を上げます。 |
@ATTRIBUTEVAL @ATTRIBUTEBVAL @ATTRIBUTESVAL |
計算中の基本メンバーに関連付けられているレベル0の属性メンバーの値を戻します。
たとえば、計算される基本メンバー(Colaなど)のサイズ属性の数値(Ouncesのメンバー12の場合は12など)を戻します。 式で@ATTRIBUTEVALを使用するその他の例は、「属性式の計算」を参照してください。 |
@TODATE |
計算のために日付文字列を数値に変換します。 たとえば、@TODATEを@ATTRIBUTEVAL関数と組み合せて使用すると、特定の日付以降に開かれたストアの間接費を増やすことができます。 |
@WITHATTR |
指定した条件を満たす属性に関連付けられた基本ディメンション・メンバーのリストを生成します。 たとえば、20オンス以上の製品のリストを生成し、それらの製品の価格を上げます。 |
属性計算および共有メンバーの理解
属性計算はレベル0から始まり、最初の保管済メンバーで停止します。 したがって、アウトラインがアウトライン階層内の2つの共有メンバー間に保管済メンバーを配置している場合、計算結果に上位の共有メンバーが含まれないことがあります。
次の例では、属性の計算が実行されると、計算はレベル0のメンバー2から始まり、最初の保管済メンバーであるメンバーAが見つかると停止します。 したがって、メンバー1は計算に含まれません。
Member 1 (stored)
Member A (stored)
Member 2 (shared)
Member B (stored)
Member 1 (shared member whose referenced member is Member 1 above)
属性計算で予期しない結果が発生しないようにするには、共有メンバーと保管済メンバーを混在させないようにします。 この例では、メンバー2が共有されていない場合、またはメンバー1に対応する共有メンバーがアウトラインの他の場所にない場合、計算結果は予期したとおりになりません。
属性メンバーと非属性(保管済および動的計算)メンバーの計算の違い
属性ディメンション・メンバーの計算は、標準ディメンションのストアド・メンバーまたは「動的計算」メンバーの計算とは異なる動作をするように設計されています。
この違いの基礎は次のとおりです:
-
標準ディメンションのメンバー: 親メンバーの値は、子メンバーがレベル0であるか上位メンバーであるかに関係なく、親メンバーの子メンバーの値の集約に基づきます。 すべての子メンバー値は、親メンバーの値に影響します。
-
属性ディメンションのメンバー: 属性集約がリクエストされる親メンバーごとに、親メンバーの子孫リストが展開され、親メンバーの値を計算するために集約する必要がある依存レベル0のデータ・ブロックが含まれます。
これらの違いにより、共有メンバーが含まれ、複数の集計パスがある場合、属性ディメンション・メンバーの集計結果は標準ディメンション・メンバーの集計結果と異なる可能性があります。
この問題を回避するには、集計属性階層の下の重複する共有メンバーを削除するか、複数の集計パスが存在しないようにアウトラインを再モデリングします。