計算の定義
計算は、特定のタイプのデータを導出するために不可欠です。 計算から導出されるデータは計算済データと呼ばれ、計算されないソース・データは入力データと呼ばれます。
次のトピックでは、TBCアプリケーションの製品およびMeasuresディメンションを使用して、多数のEssbaseデータベースにあるいくつかのタイプの一般的な計算について説明します。
ディメンションとメンバーの連結
標準ディメンションのメンバーを定義すると、Essbaseによってメンバーに+集計演算子(加算を表すプラス記号)が自動的にタグ付けされます。つまり、連結時にメンバーが追加されて親の値が導出されます。 必要に応じて、メンバー集計プロパティを変更できます。
連結は、Essbaseで最も頻繁に使用される計算です。 このトピックでは、Productディメンションを使用して連結を説明します。
TBCアプリケーションには、複数の統合パスがあります:
-
個々の製品は製品ファミリにロールアップされ、製品ファミリは製品に統合されます。 TBCアウトラインには複数の統合パスも必要です。一部の製品は複数のカテゴリに統合する必要があります。
-
州はリージョンにロールアップされ、リージョンは市場に統合されます。
-
月は四半期にロールアップされ、四半期は年に連結されます。
次の各トピックでは、連結について詳しく説明します:
集計演算子は、Essbaseが親に分岐する各メンバーのデータをロールアップする方法を定義します。 たとえば、デフォルトの加算(+)演算子を使用すると、次に示すように、Essbaseによって100-10、100-20および100-30が加算され、その結果が親である100に格納されます。
図1-7 TBC Productディメンション

Productディメンションには、ほとんどの場合、メンバーの各グループが親に追加およびロールアップされることを示す加算(+)演算子が含まれます。 Dietにはチルダ(~)演算子があり、EssbaseがDietメンバーを親Productへの連結に含めないことを示します。 Dietメンバーは、完全に共有されるメンバーで構成されます。 TBC製品管理グループは、レポートでダイエット・ドリンクを分離することを希望しているため、TBCは連結全体に影響しない個別のダイエット・メンバーを作成しました。
連結に対する位置と演算子の影響
Essbaseは、ブランチのデータをトップダウンの順序で計算します。 たとえば、加算(+)演算子でタグ付けされた2つのメンバーと乗算(*)演算子でタグ付けされた3つ目のメンバーが順番にある場合、Essbaseは最初の2つを加算し、その合計に3つ目のメンバーを乗算します。
Essbaseは連結時に常に最上位メンバーから始まるため、メンバーの順序とラベルは重要です。 「メンバー集計演算子の理解」を参照してください。
メジャー・ディメンションの例のタグおよび演算子
Measuresディメンションは、時間データと勘定科目データの両方を使用するため、TBCアウトラインの最も複雑なディメンションです。 また、Essbaseによるアウトラインの計算に役立つ式および特別なタグも含まれています。 このトピックでは、TBCがMeasuresディメンションに含めた式およびタグ(勘定科目としてタグ付けされたディメンション)について説明します。
TBCによって定義されたMeasuresディメンション・タグを調べます。 Measuresディメンションのプロパティの多くは、前のトピックで説明しています : 加算(+)、減算(-)および連結なし(~)演算子、勘定科目およびラベルのみのタグ:
-
InventoryおよびRatiosメンバー名は、データ・ナビゲーションでユーザーを支援します。 データは含まれていないため、ラベルのみのタグを受け取ります。
-
Measuresディメンション自体にはラベルのみのタグがあります。 メジャーの一部のメンバーには「動的計算」タグがあります。
-
メジャーの一部のメンバーには、タイム・バランス・タグ(TB FirstまたはTB Last)があります。
図1-8 TBCメジャー・ディメンション

勘定科目ディメンションの計算
このトピックでは、勘定科目としてタグ付けされたディメンションの2つの形式の計算について説明します。
タイム・バランス・プロパティ
タイム・バランス・タグまたはプロパティでは、勘定科目としてタグ付けされたディメンションのデータを計算する方法について、Essbaseに説明します。 タグを使用するには、勘定科目としてタグ付けされたディメンションと時間としてタグ付けされたディメンションが必要です。 最初、最後、平均および費用タグは、勘定科目ディメンション・メンバーでのみ使用できます。
TBCMeasuresディメンションでは、インベントリの開始データは、TBCが毎月初めに保持するインベントリを表します。 期首インベントリの四半期値は、四半期の最初の月の期首値と等しくなります。 インベントリをオープンするには、タイム・バランス・タグTBが最初に必要です。
期末インベントリ・データは、TBCが毎月末に保持するインベントリを表します。 終了インベントリの四半期値は、四半期の最終月の終了値と等しくなります。 期末インベントリにはタイム・バランス・タグTBが必要です。 次の表に、勘定科目ディメンションのタイム・バランス・タグを定義します。
表1-6 勘定科目メンバー・タグ
タグ | 説明 |
---|---|
タイム・バランス(最後) |
最後の子メンバーの値が親に引き継がれます。 たとえば、MarchはQtr1に転送されます。 |
最初のタイム・バランス |
最初の子の値は親に引き継がれます。 たとえば、JanはQtr1に送られます。 |
次の表で、Qtr1 (右側の2列目)およびYear (右側の列)は、時間ディメンションの連結が勘定科目ディメンションのタイム・バランス・プロパティの影響を受ける様子を示しています。 データは最初の四半期についてのみ表示されます。
表1-7 タイム・バランス・プロパティの影響を受けるTBC連結
Dimensions | 1月 | 2月 | 3月 | Qtr1 | Year |
---|---|---|---|---|---|
Accounts Member1 |
11 |
12 |
13 |
36 |
Qtr1 + Qtr2 + Qtr3 + Qtr4 |
Accounts Member2 (TB First) |
20 |
25 |
21 |
20 |
20 |
Accounts Member3 (TB Last) |
25 |
21 |
30 |
30 |
Qtr4の値 |
通常、時間ディメンションの親の計算は、親の子の集計および式に基づきます。 ただし、アカウント・ブランチのメンバーがTB Firstとしてマークされている場合、時間ディメンションの親はTB Firstとしてマークされているメンバーと一致します。
例については、「タイム・バランス・プロパティの設定」を参照してください。
差異レポート
TBC Essbase要件の1つは、実績データと予算データの差異レポートを実行できることです。 差異レポートの計算では、会社の経費を表すアイテムに経費精算書タグが必要です。 インベントリ・メンバー、費用合計メンバーおよび売上原価メンバーは、それぞれ差異レポート用の経費精算書タグを受け取ります。
Essbaseには、差異レポートのプロパティとして-expenseとnonexpense (デフォルト)があります。 差異レポート・プロパティは、Essbaseがメンバー式で@VARまたは@VARPER関数を使用してメンバーの実績データと予算データの差異を計算する方法を定義します。
メンバーを費用としてタグ付けすると、@VAR関数によってBudget - Actualが計算されます。 たとえば、予算金額が$100で実績金額が$110の場合、差異は -10になります。
経費精算書タグがない場合、@VAR関数はActual - Budgetを計算します。 たとえば、予算金額が$100で実績金額が$110の場合、差異は10です。
式と関数
式は、データベース・アウトラインのメンバー間の関係を計算します。 アウトラインのメンバーに式を適用することも、計算スクリプトに式を配置することもできます。 このトピックでは、TBCが式を使用してデータベースのパフォーマンスを最適化する方法について説明します。
関数は、特殊な計算を実行し、メンバーのセットまたはデータ値のセットを戻す事前定義済ルーチンです。 式は、演算子と関数、およびディメンション名、メンバー名、数値定数で構成されます。
Essbaseでは、次の演算子がサポートされます:
-
算術演算子、算術演算を実行します
-
論理条件を計算に組み込む条件演算子
-
ディメンション間演算子。特定のデータベース・メンバーの組合せのデータ値を指します
Essbase関数には、Essbaseの計算機能を拡張するための175を超える事前定義済ルーチンが含まれています。 Essbaseには、次の機能があります:
-
ブール関数。TRUEまたはFALSE値を返すことで条件付きテストを提供
-
特殊な数学的計算を実行する算術関数
-
関係関数。現在のメンバーの位置に基づいて計算中にデータベース内のデータ値を検索
-
Range関数。別の関数またはコマンドの引数としてメンバーの範囲を宣言
-
特殊な財務計算を実行する財務機能
-
指定したメンバーに基づき、メンバーのリストを生成するメンバー・セット関数
-
割当て関数:親レベルで入力された値を子メンバー全体に割り当てます
-
データの平滑化、データの内挿または将来の値の計算のためにデータを操作する予測関数
-
高度な統計を計算する統計関数
-
計算式で日付と時間の特性を使用する日付と時間の関数
-
計算モード関数: Essbaseで式の計算に使用される計算モードを指定
Measuresディメンションでは、次の式を使用します:
-
マージン=販売 - COGS
-
費用合計=マーケティング+給与+その他
-
利益=マージン - 費用合計
-
利益% = 利益 % 販売
-
マージン% =マージン%販売
-
オンス当たりの利益 = 利益 / @ATTRIBUTEVAL(@NAME(Ounces))
Essbaseでは、「集計演算子」を使用して、Margin、Total ExpensesおよびProfitメンバーを計算します。 「Margin%」式では、%演算子を使用します。これは、「マージンを販売のパーセンテージとして表す」ことを意味します。 「Profit%」式では、同じ%演算子を使用します。 オンス当たりの利益式では、除算演算子(/)および関数(@ATTRIBUTEVAL)を使用して、オンスでサイズ設定された製品の収益性をオンスで計算します。
ノート:
「Profit per Ounce」式では、@ATTRIBUTEVAL関数の文字列「Ounces」の処理にも@NAME関数が使用されます。
演算子、関数および構文の完全なリストは、「計算関数リスト」を参照してください。 「ブロック・ストレージ・データベースの式の開発」も参照してください。
動的計算
データベース全体の計算を設計する場合、メンバーを「動的計算」メンバーとして定義できます。 メンバーを「動的計算」としてタグ付けすると、Essbaseは、通常のデータベース計算時にメンバーの組合せを事前計算するのではなく、データの取得時にそのメンバーの組合せを計算します。 動的計算により、通常のデータベース計算時間が短縮されますが、動的に計算されるデータ値の取得時間が長くなる場合があります。
次のアウトラインでは、TBCMeasuresディメンションに、「動的計算」-Profit、Margin、Total Expenses、Margin %およびProfit %としてタグ付けされた複数のメンバーが含まれています。
図1-9 TBCメジャー・ディメンション、「動的計算」タグ

データベース全体の計算が実行されると、「動的計算」メンバーおよび対応する式は計算されません。 これらのメンバーは、ユーザーがSmart Viewなどから問い合せたときに計算されます。 Essbaseでは、問合せ値は格納されず、後続のすべての問合せの値が再計算されます。
データ値を動的に計算するタイミングを決定するには、次の領域での優先順位を考慮してください:
-
最適な標準計算時間(バッチ計算)
-
ディスク領域使用量が少ない
-
データベース再構築時間の短縮
-
ユーザーのための迅速なデータ取得
-
バックアップ時間の短縮
「データ値の動的計算」を参照してください。
2パス計算
TBCデータベースでは、Margin %およびProfit %に2パスのラベルが含まれます。 このラベルは、一部のメンバー式を2回計算して目的の値を生成する必要があることを示します。 2パス・プロパティは、勘定科目としてタグ付けされたディメンションのメンバーおよび「動的計算」としてタグ付けされたメンバーに対してのみ機能します。
次の例は、Profit % (式Profit % Salesに基づく)に2パス・タグがある理由を示しています。 表には5つの列(列ヘッダーには、左から順にディメンション、Jan、Feb、MarおよびQtr1というラベルが付けられています)と3つの行(Profit、SalesおよびProfit %というラベルが付けられています。 Jan、Feb、MarおよびQtr1は、Yearディメンションのメンバーです。 Profit、SalesおよびProfit %は、メジャー(勘定科目)ディメンションのメンバーです。
次の例では、Essbaseにロードする初期データを定義します。 Profit -> Jan、Profit -> FebおよびProfit -> Marのデータ値は100です。 Sales -> Jan、Sales -> FebおよびSales -> Marのデータ値は1000です。
表1-8 Essbaseにロードされたデータ
Dimension | 1月 | 2月 | 3月 | Qtr1 |
---|---|---|---|---|
Profit |
100 |
100 |
100 |
N/A |
売上高 |
1000 |
1000 |
1000 |
N/A |
利益% |
N/A |
N/A |
N/A |
N/A |
最初に、EssbaseによってMeasuresディメンションが計算されます。 次の表では、Profit % -> Jan、Profit % -> FebおよびProfit % -> Marのデータ値は10%です。
表1-9 Essbaseによるメジャー・ディメンション計算後のデータ
Dimension | 1月 | 2月 | 3月 | Qtr1 |
---|---|---|---|---|
Profit |
100 |
100 |
100 |
|
売上高 |
1000 |
1000 |
1000 |
|
利益% |
10% |
10% |
10% |
N/A |
次に、EssbaseによってYearディメンションが計算されます。 データはディメンション全体でロールアップされます。 次の表では、Profit -> Qtr1 (300)およびSales -> Qtr1 (3000)のデータ値が正しいことを示しています。 Profit %は2パス計算としてタグ付けされているため、Profit % -> Qtr1 (30%)のデータ値は正しくありません。
表1-10 EssbaseによるYearディメンションの計算後のデータ
Dimension | 1月 | 2月 | 3月 | Qtr1 |
---|---|---|---|---|
Profit |
100 |
100 |
100 |
300 |
売上高 |
1000 |
1000 |
1000 |
3000 |
利益% |
10% |
10% |
10% |
30% |
Essbaseは、メンバーProfit %が出現するたびに利益率を再計算します。 次の表では、Profit % -> Qtr1 (10%)のデータ値は、2回目のパスの後に正しい値になっています。
表1-11 Essbaseによる利益率の再計算後のデータ
Dimension | 1月 | 2月 | 3月 | Qtr1 |
---|---|---|---|---|
Profit |
100 |
100 |
100 |
300 |
売上高 |
1000 |
1000 |
1000 |
3000 |
利益% |
10% |
10% |
10% |
10% |