ブロック・ストレージ・データベース用の式の例の確認

この項の内容:

期間累計値の計算

移動値の計算

毎月の資産変動の計算

#MISSING値のテスト

属性の式の計算

この章の情報は、ブロック・ストレージ・データベースのみに適用され、集約ストレージ・データベースとは関係がありません。

関連項目:

期間累計値の計算

アウトラインに勘定科目タグが付けられた次元が含まれている場合は、@PTD関数を使用して期間累計値を計算できます。

この例では、次のように、Sample.Basicデータベースのメジャー次元のInventory分岐を使用します:

      Inventory (~) (Label Only)
   Opening Inventory (+) (TB First) (Expense Reporting) 
      IF(NOT @ISMBR(Jan))
   Additions (~) (Expense Reporting)
   Ending Inventory (~) (TB Last) (Expense Reporting)

   

年および現在の四半期の期間累計値を計算するには、年次元に次の2つのメンバーを追加します: 四半期累計用のQTDおよび年次累計用のYTD。例:

      QTD (~) @PTD(Apr:May)
YTD (~) @PTD(Jan:May);
   

現在の月が5月(May)である場合、次の式をQTDメンバーに追加します:

      @PTD(Apr:May);
   

さらに次の式をYTDメンバーに追加します:

      @PTD(Jan:May);
   

Essbaseにより、月の範囲の値が適宜合計されます。ただし、期首在庫高(Opening Inventory)にはタイム・バランス・タグFirstがあり、期末在庫高(Ending Inventory)にはタイム・バランス・タグLastがあります。Essbaseでは、これらの値が別々に処理されます。期首、期末および平均の値の計算を参照してください。

表61は、Inventory分岐内のメンバーおよびSalesメンバーについての計算結果の例を示しています:

表 61. 結果: 期間累計値を計算するための計算スクリプト例

Measures->Time

Jan

Feb

3月

4月

5月

QTD

YTD

Opening Inventory

100

110

120

110

140

110

100

Additions

110

120

100

160

180

340

670

Sales

100

110

110

130

190

320

640

Ending Inventory

110

120

110

140

130

130

130

SalesとAdditionsの値は合計されています。

Opening InventoryにはFirstタグがあります。QTDの場合、Essbaseでは、当四半期内の最初の値であるAprが使用されます。YTDの場合、年の最初の値であるJanが使用されます。

Ending InventoryにはLastタグがあります。QTDの場合、Essbaseでは、当四半期内の最後の値であるMayが使用されます。YTDの場合、年の最後の値でもあるMayが使用されます。

注:

動的時系列メンバーを使用して、期間累計値を計算することもできます。時系列データの計算。を参照してください。

移動値の計算

@AVGRANGE関数を使用すれば、移動平均を計算できます。また、@ACCUM関数を使用すれば、移動による年次累計値を計算できます。

たとえば、データベースに、毎月のSalesのデータ値が含まれており、データベース・アウトラインに、メンバーAVG_SalesとYTD_Salesが登録されているとします。

AVG_Salesメンバーに次の式を追加します:

      @AVGRANGE(SKIPNONE, Sales, @CURRMBRRANGE(Year, LEV, 0, , 0));
   

さらに次の式をYTD_Salesメンバーに追加します:

      @ACCUM(Sales);
   

Essbaseにより、時間のタグが付けられた次元内の各月のSales値の平均が計算されます。SKIPNONEパラメータは、#MISSING値を含むすべての値が含まれることを意味します。結果は、EssbaseによってAVG_Sales内に置かれます。#MISSING値の集計を参照してください。

表62は、Essbaseで累計売上の値が計算されてから、YTD_Sales内に結果が置かれる際の結果を示しています:

表 62. 結果: 移動値を計算するための計算スクリプト例

Measures->Time

1月

Feb

Mar

第1四半期

Sales

100

200

300

600

AVG_Sales

100

150

200

#MISSING

YTD_Sales

100

300

600

#MISSING

AVG_Salesの値は、月次累計の平均です。たとえば、AVG_Sales -> Marは1月、2月および3月の売上(Sales)の平均です。

YTD_Salesは当月までの値の累積値です。したがって、YTD_Sales -> FebはSales -> JanおよびSales -> Febの合計になります。

毎月の資産変動の計算

@PRIOR関数を使用すると、前月の値に基づいて値を計算できます。

たとえば、データベースに月次ベースで保管される資産のデータ値が含まれているとします。連続する月の資産値の差分(資産変動)は、当月の値から前月の値を減算することで計算できます。

データベースでは、次の3つのメンバーで資産値が管理されているものとします:

  • 毎月の資産値を表すAssets

  • 資産変動値を表すAsset_MVNT

  • 年初の資産値を表すOpening_Balance

1月のAsset_MVNT値は、1月の値からOpening_Balance値を減算して算出されます。

次の式をAsset_MVNTメンバーに追加します:

      IF(@ISMBR(Jan)) Asset_MVNT = Assets - Opening_Balance;
   ELSE Asset_MVNT = Assets - @PRIOR(Assets);
ENDIF;
   

表63は、連続する月の資産値の差分を、Essbaseで計算した結果を示したものです:

表 63. 結果: 毎月の資産変動を計算するための計算スクリプト例

Assets -> Time

Opening_Balance

1月

Feb

3月

Assets

1200

1400

1300

1800

Asset_MVNT

200

-100

500

Essbaseでは、月の値を循環して、次の計算が実行されます:

  1. IFステートメントと@ISMBR関数により、年次元の現在のメンバーが1月であるかどうかが確認されます。この確認が必要なのは、1月のAsset_MVNT値は、前月の値の減算では算出できないためです。

  2. 年次元の現在のメンバーが1月である場合、Essbaseで、Jan -> Assetsの値からOpening_Balanceの値が減算され、結果がJan -> Asset_MVNTに置かれます。

  3. 年次元の現在のメンバーが1月でない場合、@PRIOR関数は前月の資産値を取得します。Essbaseにより、現在の月の資産から前月の資産が減算されます。結果は、現在の月のAsset_MVNT値に入力されます。

#MISSING値のテスト

データベース内の#MISSING値をテストできます。#MISSING値の集計を参照してください。

データベース・アウトラインにCommissionという名前のメンバーが含まれているとします。現在のメンバーの組合せのSalesの値が#MISSINGでない場合、売上高の10%の歩合(Commission)が支払われます。データベース・アウトライン内のCommissionメンバーに適用した場合、次の式で歩合が計算されます:

      IF(Sales <> #MISSING) Commission = Sales * .1;
   ELSE Commission = #MISSING;
ENDIF;
   

計算スクリプト内に式を記述する場合は、その式を次のようにCommissionメンバーと関連付ける必要があります:

      Commission(IF(Sales <> #MISSING) Commission = Sales * .1;
   ELSE Commission = #MISSING;
ENDIF;);
   

Essbaseでは、データベース内を循環して、次の計算が実行されます:

  1. IFステートメントで、現在のメンバーの組合せに対するSalesメンバーの値が確認されます。

  2. Salesが#MISSINGでない場合は、Essbaseで、Salesメンバーの値と0.1とが乗算され、結果がCommissionメンバーに置かれます。

  3. Salesが#MISSINGである場合、Essbaseによって、Commissionメンバーに#MISSINGが置かれます。

属性の式の計算

データベース内の属性次元メンバーに対して特定の計算を実行できます。属性データの計算を参照してください。

たとえば、オンス・サイズの製品のオンスごとの収益性を計算するには、計算式で@ATTRIBUTEVAL関数を使用します。Sample.Basicデータベースのメジャー次元のRatios分岐には、Profit per Ounceという名前のメンバーが含まれています。このメンバーに対する式は、次のとおりです:

      Profit/@ATTRIBUTEVAL(@NAME(Ounces));
   

Essbaseでは、製品次元を循環して、次の計算が実行されます:

  1. Ounces属性次元のメンバーに関連付けられている各基本メンバーに対して、@ATTRIBUTEVAL関数が数値属性値(たとえば、Ouncesの下のメンバー12に対して12)を戻します。

    注:

    文字列Ouncesは、@NAME関数で処理してから@ATTRIBUTEVAL関数に渡す必要があります。

  2. 次に、Essbaseにより、Profitが@ATTRIBUTEVALの結果で除算され、Profit per Ounceが得られます。

注:

計算式での属性の使用を参照してください。@ATTRIBUTEVAL関数の詳細は、『Oracle Essbaseテクニカル・リファレンス』を参照してください。