17 Essbaseデータベースの計算
Essbaseデータベース(キューブ)には、入力データと、入力データから計算された値が含まれています。Essbaseでは、アウトライン集計と計算スクリプトという2つの計算方法があります。
この章の情報は、ブロック・ストレージ・データベースのみに適用され、集約ストレージ・データベースとは関係がありません。
データベースの計算について
データベースには、2つのタイプの値が含まれています。
-
入力する値(入力データと呼ばれます)
-
入力データから計算される値
例:
-
様々な製品の地域ごとの売上高を入力します。それぞれの合計売上を計算します。
-
いくつかの地域のいくつかの製品について、売上原価の予算値および実績値を入力します。各地域の製品ごとに、予算値と実績値の差異を計算します。
-
データベースには、全製品の地域ごとの売上高および価格が含まれています。ある地域である製品の価格を5%引き上げた場合に、全体の利益がどうなるかを計算します。
異なるプラットフォームで計算を実行すると、オペレーティング・システムの数学ライブラリの相違により、セル値の精度にわずかな差異が発生する場合があります。
ノート:
ほとんどのコンピュータでは数値はバイナリで表現されるため、実数値は概算でのみ表されます。バイナリ・コンピュータでは小数点以下の無限のビット数を保持できないため、1/3 (0.3333...)のような分数を終点を持つ小数として表現できません。正確に表現できる実数値は、分母が2の累乗(0.50など)または10の累乗(0.10など)の分数のみです。浮動小数点数表現のIEEE標準754 (IEEE、1985)を参照してください。
Essbaseには、データベースの計算方法が2つあります。
-
アウトラインの計算
-
計算スクリプトの計算
選択する方法は、実行する計算のタイプによって異なります。
アウトラインの計算
アウトラインの計算は、最も簡単な計算方法です。Essbaseでは、データベース・アウトラインでのメンバー間の関係およびアウトラインでメンバーに関連付けられている式に基づいて、データベースの計算が行われます。
たとえば、次のイメージは、Sample.BasicデータベースでのMarketディメンションのメンバー間の関係を示しています。New York、Massachusetts、Florida、ConnecticutおよびNew Hampshireの値が加算されて、Eastの値が計算されます。East、West、SouthおよびCentralの値が加算されて、Marketの合計値が計算されます。
図17-1 Marketディメンションのメンバー間の関係

親の値を取得するためにMarketの子メンバーが加算されるのは、メンバー集計演算子が(+)に設定されているためです。
次のイメージは、Sample.BasicデータベースのScenarioディメンションを示しています。VarianceおよびVariance %メンバーは、それらに付加された式を使用して計算されます。
図17-2 VarianceとVariance %の計算

メンバーの組合せによっては、通常のデータベース計算中ではなく、データを取得するときに計算した方が効率的になる場合があります。動的計算を使用して、取得時にデータを計算できます。データ値の動的計算を参照してください。
計算スクリプトの計算
計算スクリプトの計算が2番目の計算方法です。計算スクリプトを使用すると、データベースの計算方法を厳密に選択できます。たとえば、データベースの一部を計算したり、メンバー間でデータ値をコピーできます。
計算スクリプトには、一連の計算コマンド、等式および式が含まれています。たとえば、次の計算スクリプトは、New York地域のマーケティングの実績費用を5%増やします。
FIX (Actual, “New York”)
Marketing = Marketing *1.05;
ENDFIX;
「ブロック・ストレージ・キューブの計算スクリプトの開発」を参照してください。
マルチディメンショナル計算の概念について
単純化されたデータベースに基づく次のアウトラインは、マルチディメンショナル計算の性質を示しています。
図17-3 マルチディメンショナル・データベースの計算

このデータベースには、Accounts、TimeおよびScenarioの3つのディメンションがあります。
Accountsディメンションには、次の4つのメンバーがあります。
-
入力値であるSalesとCOGS
-
Margin = Sales - COGS
-
Margin% = Margin % Sales (SalesのパーセンテージとしてのMargin)
Timeディメンションには4つの四半期があります。この例では、Qtr1のメンバーであるJan、FebおよびMarのみが表示されています。
シナリオ・ディメンションには、予定値を示すBudgetおよび実績値を示すActualの2つの子メンバーがあります。
アウトラインは、3ディメンショナル・キューブとして示されています。
図17-4 3ディメンショナル・データベースの図

メンバーの交差部(各ディメンションの1つのメンバー)はデータ値を表します。データ値はデータベース内の1つのセルに保管されます。マルチディメンショナル・データベース内の特定のデータ値を参照するには、各ディメンションでそれぞれのメンバーを指定する必要があります。Essbaseでは、メンバーの組合せはディメンション間演算子(->)で示されます。ディメンション間演算子は、ハイフン(-)と大なり記号(>)を使用して作成します。ディメンション間演算子とメンバーの間にはスペースを入れないでください。
次のイメージに示すように、Sales、Jan、Actualのデータ値を含む単一のセルは、Sales -> Jan -> Actualと記述されます。
図17-5 データベースのSales、Jan、Actualスライス

前のイメージに示すように、Salesを参照するときは、次の8つの値を含むデータベースのスライスを参照することになります。
-
Sales -> Jan -> Actual
-
Sales -> Feb -> Actual
-
Sales -> Mar -> Actual
-
Sales -> Qtr1 -> Actual
-
Sales -> Jan -> Budget
-
Sales -> Feb -> Budget
-
Sales -> Mar -> Budget
-
Sales -> Qtr1 -> Budget
図17-6 データベースのSales、Actual、Budgetスライス

次のイメージに示すように、Actual Salesを参照するときは、次の4つの値を参照することになります。
-
Sales -> Jan -> Actual
-
Sales -> Feb -> Actual
-
Sales -> Mar -> Actual
-
Sales -> Qtr1 -> Actual
図17-7 データベースのActual、Salesスライス

Essbaseが式Margin% = Margin % Salesを計算する場合、各Margin値を取得し、対応するSales値のパーセンテージとして計算します。
Essbaseはデータベースを一巡して次のようにMargin%を計算します。
-
Margin -> Jan -> ActualをSales -> Jan -> Actualのパーセンテージとして計算します。
結果はMargin% -> Jan -> Actualに配置されます。
-
Margin -> Feb -> ActualをSales -> Feb -> Actualのパーセンテージとして計算します。
結果はMargin% -> Feb -> Actualに配置されます。
-
Margin -> Mar -> ActualをSales -> Mar -> Actualのパーセンテージとして計算します。
結果はMargin% -> Mar -> Actualに配置されます。
-
Margin -> Qtr1 -> ActualをSales -> Qtr1 -> Actualのパーセンテージとして計算します。
結果はMargin% -> Qtr1 -> Actualに配置されます。
-
Margin -> Jan -> BudgetをSales -> Jan -> Budgetのパーセンテージとして計算します。
結果はMargin% -> Jan -> Budgetに配置されます。
-
Essbaseは、データベース内のメンバーのすべての組合せに対するMargin%の計算が終わるまで、データベース全体で処理を繰り返します。
計算順序の定義を参照してください。
デフォルトの計算の設定
デフォルトでは、データベースの計算はデータベース・アウトラインのCALC ALLです。CALC ALLは、すべてのディメンションとメンバーを集計して、アウトラインのすべての式を計算します。
ただし、任意の計算スクリプトをデフォルトのデータベース計算として指定できます。このため、計算を実行するたびにスクリプトをロードするのではなく、頻繁に使用するスクリプトをデータベースに割り当てることができます。データベース・レベルで定義した計算設定を使用して計算スクリプトが機能するようにする場合は、その計算スクリプトをデフォルトの計算として設定する必要があります。
デフォルトの計算を設定するには、alter database MaxL文を使用します。
データベースの計算
データベース更新の役割を持つユーザーにはキューブでデフォルトの計算を実行するためのアクセス権がありますが、特定の計算スクリプトを実行するためのアクセス権はありません。アプリケーション・マネージャまたはデータベース・マネージャの役割を持つユーザーには、すべての計算を実行する権限があります。データの計算についてを参照してください。
データベースを計算するには、execute calculation MaxL文を使用します。
計算の取消
Essbaseが計算を完了する前にその計算を停止するには、計算の実行中に「取消」ボタンをクリックします。
計算を取り消すと、Essbaseにより、次のいずれかの操作が実行されます。
-
すべての値を前の状態に戻します
-
取消前に計算されたすべての値を保持します
並列計算とシリアル計算
Essbaseは、並列計算とシリアル計算をサポートしています。
-
シリアル計算(デフォルト): 計算のすべてのステップが単一のスレッドに含まれます。各タスクが完了してから次のタスクが開始されます。
-
並列計算: Essbaseの計算機では計算を分析できます。さらに、場合によっては複数のCPU (最大4つ)にタスクを割り当てることもできます。
並列計算の使用方法を参照してください。