ブロック・ストレージ・データベース用の計算スクリプトの例の確認

この項の内容:

これらの計算スクリプトの例について

差異の計算

データベース・サブセットの計算

新しい予算値のロード

製品のシェア値と市場のシェア値の計算

製品をまたがるコストの割当て

次元内での値の割当て

複数の次元での値の割当て

LOOPコマンドを使用したゴールシーク計算

将来値の予測

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

集約ストレージとブロック・ストレージの比較。も参照してください。

これらの計算スクリプトの例について

この章のすべての例は、Sample.Basicデータベースに基づいています。

高機能計算コマンドSET UPDATECALCとSET CLEARUPDATESTATUSを使用する例は、SET CLEARUPDATESTATUSの使用例の確認複数パス計算の例と解決策の確認を参照してください。

差異の計算

次の例には、Budget値とActual値の間の差異パーセンテージの計算が含まれています。

図135は、VarianceおよびVariance %が動的計算、2パス・メンバーとしてタグ付けされているアウトラインを示しています。

図 135. シナリオ次元のVarianceおよびVariance %

この図は、動的計算、2パス・メンバーとしてタグ付けされているVarianceおよびVariance %を示しています。

デフォルト計算では、Essbaseによって、市場次元と製品次元の値が集約されます。パーセンテージ値は正確に集約されないので、デフォルトの計算後にVariance %式を再計算する必要があります。

Variance %は、動的計算、2パス・メンバーとしてタグ付けされているため、Essbaseでは、Variance %値の取得時にその値を動的に計算します。動的計算によって、正しくない値が正しく計算されたパーセンテージで上書きされます。

Variance %を動的計算、2パス・メンバーとしてタグ付けしない場合は、次の計算スクリプトを使用して、デフォルト計算を実行し、Variance %の式を再計算します。この計算スクリプトでは、高機能計算がオン(デフォルト)になっていることを前提とします:

      CALC ALL;
SET UPDATECALC OFF;
SET CLEARUPDATESTATUS AFTER;
"Variance %";
   

Essbaseでは、次のアクションを実行します:

  1. データベースのデフォルト計算を実行します(CALC ALL)。

    計算スクリプトを使用せずに、データベース・アウトラインのデフォルト計算を実行することもできます。

  2. 高機能計算をオフにします(SET UPDATECALC OFF)。

  3. 差異計算がデータベースの部分計算の場合でも、計算スクリプトの差異式によって計算されたブロックに消去のマークを付けます(CLEARUPDATESTATUS AFTER)。

    デフォルトでは、データ・ブロックは、データベースのフル計算が実行された後にのみ、消去としてマークされます。

  4. データベースを循環して、Variance %の式を計算します。

2パス計算タグまたは計算スクリプトの選択2パス計算の使用を参照してください。

統計的な差異の計算の詳細は、『Oracle Essbaseテクニカル・リファレンス』を参照してください。

データベース・サブセットの計算

次の例は、地域のマーケティング・マネージャがデータベースの各領域を計算する方法を示しています。計算スクリプトでは、@DESCENDENTS(East)を使用して計算をEast地域に限定し、Eastの各子の年次元、メジャー次元および製品次元を計算します。

図136は、市場次元のEast、West、SouthおよびCentralのメンバーのアウトラインを示しています:

図 136. 市場次元のEast、West、SouthおよびCentralのメンバー

この図は、この図の前のテキストで説明されている市場次元のアウトラインを示しています。

スクリプト例:

      /* Calculate the Budget data values for the descendants of East */

FIX(Budget, @DESCENDANTS(East))
   CALC DIM(Year, Measures, Product);
ENDFIX

/* Consolidate East */

FIX(Budget)
   @DESCENDANTS(East);
ENDFIX
   

Essbaseでは、次のアクションを実行します:

  1. Eastの子孫のBudget値を確定します。

  2. Eastの子孫の各Budget値に対して、年次元、メジャー次元および製品次元をデータベースの1パスで計算します。

  3. 他の次元のすべてのメンバーに対するBudget値を確定します。

  4. Eastの子孫を集約し、その結果をEastに置きます。

新しい予算値のロード

次の例では、Budget値を計算して、VarianceとVariance %メンバーを再計算します。

スクリプト例:

      /* Calculate all Budget values */

FIX(Budget)
   CALC DIM(Year, Product, Market, Measures);
ENDFIX

/* Recalculate the Variance and Variance % formulas, which requires two passes */

Variance;
"Variance %";
   

Essbaseでは、次のアクションを実行します:

  1. Budget値を確定します。

  2. すべてのBudget値を計算します。

    CALC DIMコマンドによって、Budgetを含むシナリオ次元以外のすべての次元が計算されます。

  3. データベース・アウトラインのVarianceに適用される式を計算します。

  4. データベース・アウトラインのVariance %に適用される式を計算します。

製品のシェア値と市場のシェア値の計算

次の例では、市場と製品ごとに製品のシェア値と市場のシェア値を計算します。シェア値は次のように計算されます:

  • 合計に対する各メンバーのパーセンテージ

  • 親に対する各メンバーのパーセンテージ

次の4つのメンバーをメジャー次元に追加していることを前提とします:

  • Market Share

  • Product Share

  • Market %

  • Product %

スクリプト例:

      /* First consolidate the Sales values to ensure that they are accurate */

FIX(Sales)
   CALC DIM(Year, Market, Product);
ENDFIX

/* Calculate each market as a percentage of the total market for each product */

"Market Share" = Sales % Sales -> Market;

/* Calculate each product as a percentage of the total product for each market */

"Product Share" = Sales % Sales -> Product;

/* Calculate each market as a percentage of its parent for each product */

"Market %" = Sales % @PARENTVAL(Market, Sales);

/* Calculate each product as a percentage its parent for each market */

"Product %" = Sales % @PARENTVAL(Product, Sales);
   

Essbaseでは、次のアクションを実行します:

  1. Sales値を確定し、すべてのSales値を集計します。

    CALC DIMコマンドを使用して、年次元、市場次元および製品次元を計算します。メジャー次元にはSalesメンバーが含まれているので、集計されません。シナリオ次元はラベルのみなので、集計する必要はありません。

  2. データベースを循環し、各月の各市場における各製品のSales値を取得し、このSales値を、各製品のすべての市場の合計Salesのパーセンテージとして計算することで、Market Shareを計算します(Sales -> Market)。

  3. 各月の各市場における各製品のSales値を取得し、このSales値を、各市場のすべての製品の合計Salesのパーセンテージとして計算することで、Product Shareを計算します(Sales -> Product)。

  4. 各月の各市場における各製品のSales値を取得し、このSales値を、市場次元の現在のメンバーの親のSales値のパーセンテージとして計算することで、Market %を計算します。

    @PARENTVAL関数を使用して、市場次元の親のSales値を取得します。

  5. 各月の各市場における各製品のSales値を取得し、このSales値を、製品次元の現在のメンバーの親のSales値のパーセンテージとして計算することで、Product %を計算します。

    @PARENTVAL関数を使用して、製品次元の親のSales値を取得します。

製品をまたがるコストの割当て

次の例では、各月の各市場における各製品に間接費を割り当てます。間接費は、各製品のSales値に基づいて、すべての製品の合計Salesのパーセンテージとして割り当てられます。

次の2つのメンバーをメジャー次元に追加していることを前提とします:

  • OH_Costs(割り当てる間接費用)

  • OH_TotalCost(合計間接費)

スクリプト例:

      /* Declare a temporary array called ALLOCQ based on the Year dimension */

ARRAY ALLOCQ[Year];

/* Turn the Aggregate Missing Values setting off. If this is your system default, omit this line */

SET AGGMISSG OFF;

/* Allocate the overhead costs for Actual values */

FIX(Actual)
   OH_Costs (ALLOCQ=Sales/Sales->Product; OH_Costs = 
   OH_TotalCost->Product * ALLOCQ;);

/* Calculate and consolidate the Measures dimension */

   CALC DIM(Measures);
ENDFIX
   

Essbaseでは次の計算を実行します:

  1. 各メンバーの組合せについて、合計SalesのパーセンテージとしてSales値を一時的に保管するために、ALLOCQという1次元の配列を作成します。

    ALLOCQのサイズは、年次元のメンバー数によって決まります。

  2. #MISSING値はその親に集約されません(SET AGGMISSG OFF)。親レベルで保管されているデータ値は上書きされません。

    SET AGGMISSG OFFがシステムのデフォルトの場合、この行を省略します。#MISSING値の集計を参照してください。

    • Actual値を確定します。

    • Actualに対するメンバーの組合せを循環して、OH_Costsを計算します。

    • 各月の各市場における各製品のSales値を取得して、その値を、各市場のすべての製品の合計Salesのパーセンテージとして計算します(Sales -> Product)。その結果はALLOCQに配置されます。

    • すべての製品の合計間接費を取得して(OH_TotalCost -> Product)、その値に前の手順でALLOCQに配置された値を掛けます。その結果はOH_Costsに配置されます。

      両方の等式が丸カッコ( )で囲まれ、OH_Costsのメンバー: OH_Costs(equation1; equation2;)に関連付けられていることに注意してください。

  3. メジャー次元を計算し、集計します。

次元内での値の割当て

次の例では、@ALLOCATE関数を使用して、2つの製品の支出カテゴリに合計支出の予算を割り当てます。合計支出の予算は、前年の実績値に基づいて割り当てられます。

図137のアウトラインに示すように、次の変更が行われていることを前提とします:

  • メジャー次元のTotal Expensesの下に子Leaseが追加されている

  • シナリオ次元に子PY Actualが追加されている

  • Total Expensesメンバーから「動的計算」タグが削除されている

図 137. 変更されたメジャー次元とシナリオ次元

この図は、この図の前のテキストで説明されている、変更されたメジャー次元とシナリオ次元のアウトラインを示しています。

ColasとRoot Beerについて、それぞれデータ値1000と2000がBudget -> Total Expensesにロードされていることを前提とします。この値は、PY ActualのTotal Expensesの欠落していない子に基づいて値を均等に分配して、各支出カテゴリに割り当てる必要があります。割当て値は、最も近いドルに丸める必要があります。

スクリプト例:

      /* Allocate budgeted total expenses based on prior year */

FIX("Total Expenses")
   Budget = @ALLOCATE(Budget->"Total Expenses",
   @CHILDREN("Total Expenses"),"PY Actual",,
   spread,SKIPMISSING,roundAmt,0,errorsToHigh)
ENDFIX
   

計算スクリプトの結果:

                                   Budget   PY Actual
Colas       Marketing        334 *    150
            Payroll          #MI      #MI
            Lease            333      200
            Misc             333      100
            
      Total Expenses
         
      1000
           
      450
      
Root Beer   Marketing        500      300
            Payroll          500      200
            Lease            500      200
            Misc             500      400
            
      Total Expenses
         
      2000
           
      1100
   

* 丸め誤差がこの値に追加されています。手順5を参照してください。

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

  1. Total Expensesの子を確定します。

    FIXステートメントに@ALLOCATEを付けて使用すると、計算パフォーマンスが向上することがあります。

  2. Budget -> Colas -> Marketingの場合、各月のPY Actual -> Colasにおける、各支出カテゴリの欠落していない値の合計数で、1を除算します。

    この場合は、Budget -> Colasに対する欠落していない支出値が3つなので、1を3で除算します。

  3. 手順2の値(.333)を取得し、その値にBudget -> Colas -> Total Expensesの値(1000)を掛け、最も近いドル(333)に丸めます。その結果はBudget -> Colas -> Marketingに配置されます。

  4. Budget -> Colasの各支出カテゴリに対して手順2手順3を繰り返し、次にBudget -> Root Beerに対して同じ手順を繰り返します。

  5. 計算スクリプトで指定されたとおりに、割当て値を最も近いドルの整数に丸めます。

    Essbaseは、ブロックに2回目のパスを行い、丸められた値の合計を割当て値に等しくします(たとえば、Budget -> Colas -> Total Expensesの場合は1000)。この例では、支出カテゴリの合計は1000ではなく999なので、Budget -> Colas -> Total Expensesに1の丸め誤差があります。すべての割当て値は同じ((333)なので、丸め誤差1が割当て範囲の最初の値Budget -> Colas -> Marketingに追加されます(このため、値が334になります)。

複数の次元での値の割当て

次の例では、@MDALLOCATE関数を使用して3つの次元に合計支出の予算のロードされた値を割り当てます。合計支出の予算は、前年の実績値に基づいて割り当てられます。

次の変更が行われていることを前提とします:

  • シナリオ次元に子PY Actualが追加されている

  • Actualのデータが、PY Actualにコピーされている

  • Budgetのデータが消去されている

この例の場合、Eastの州全体で製品100の子の支出カテゴリに値750(Budget -> Total Expenses -> Product -> East -> Jan)を割り当てる必要があります。割当てでは、PY Actualからの値を使用して、各カテゴリの比率を決定します。

スクリプト例:

      /* Allocate budgeted total expenses based on prior year, across 3 dimensions */

SET UPDATECALC OFF;
FIX (East, “100”, “Total Expenses”)
   BUDGET = @MDALLOCATE(750,3,@CHILDREN(“100”),@CHILDREN("Total Expenses"),@CHILDREN(East),"PY Actual",,share);
ENDFIX
   

PY Actualの値:

               Jan 
         PY Actual
                         Marketing    Payroll   Misc   Total Expenses
100–10   New York        94           51        0      145
         Massachusetts   23           31        1      55
         Florida         27           31        0      58
         Connecticut     40           31        0      71
         New Hampshire   15           31        1      47
100-20   New York        199          175       2      376
         Massachusetts   #MI          #MI       #MI    #MI
         Florida         #MI          #MI       #MI    #MI
         Connecticut     26           23        0      49
         New Hampshire   #MI          #MI       #MI    #MI
100-30   New York        #MI          #MI       #MI    #MI
         Massachusetts   26           23        0      49
         Florida         #MI          #MI       #MI    #MI
         Connecticut     #MI          #MI       #MI    #MI
         New Hampshire   #MI          #MI       #MI    #MI
100      New York        #MI          #MI       #MI    #MI
         Massachusetts   12           22        1      35
         Florida         12           22        1      35
         Connecticut     94           51        0      145
         New Hampshire   23           31        1      55 
         East            237          220       3      460
   

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

  1. East、100の子およびTotal Expensesを確定します。

    FIXステートメントに@MDALLOCATEを付けて使用すると、計算パフォーマンスが向上することがあります。

  2. 割当てを実行する前に、各製品と州の組合せについて、PY Actualでの各支出カテゴリの比率を使用して、750の各支出カテゴリへの配分比率(割り当てる値)を決定します。PY Actual -> 100-10 -> New Yorkから始めて、Essbaseでは最初の支出カテゴリMarketingの値を、PY Actual-> 100-10 -> East -> Total Expensesの値で割って、そのカテゴリの比率を計算します。

    たとえば、EssbaseでPY Actual -> 100-10 -> New York -> Marketingの値(94)をPY Actual -> 100-10 -> East -> Total Expensesの値(460)で割ると、Marketingカテゴリの比率(約20.4%)が算出されます。

  3. 各支出カテゴリ、各製品と州の組合せに対して、手順2を繰り返します。

  4. 割当て時にEssbaseでは、手順2手順3で計算した比率を使用して、各製品と州の組合せに対して、BudgetのTotal Expensesの各子への750の配分比率を決定します。

    たとえば、Marketingの場合、Essbaseでは手順手順2で計算した20.4%という数値を使用して、750の20.4%(約153)を取得して、その割当て値をBudget -> 100-10 -> New York -> Marketingに配置します(この手順の下に記載されている結果を参照してください)。

  5. 手順2手順3で計算したPY Actualでの比率を使用して、各支出カテゴリおよび各製品と州の組合せに対して、手順4を繰り返します。

  6. 支出カテゴリを集計し、Total Expensesの値を算出します。

Budgetの割当ての結果:

               Jan 
         Budget
                         Marketing    Payroll   Misc   Total Expenses
100–10   New York        153.26       83.15     0      236.41
         Massachusetts   37.50        50.54     1.63   89.67
         Florida         44.02        50.54     0      94.56
         Connecticut     65.22        50.54     0      115.76
         New Hampshire   24.26        50.54     1.63   76.63
100-20   New York        #MI          #MI       #MI    #MI
         Massachusetts   #MI          #MI       #MI    #MI
         Florida         42.39        37.50     0      79.89
         Connecticut     #MI          #MI       #MI    #MI
         New Hampshire   #MI          #MI       #MI    #MI
100-30   New York        #MI          #MI       #MI    #MI
         Massachusetts   #MI          #MI       #MI    #MI
         Florida         #MI          #MI       #MI    #MI
         Connecticut     #MI          #MI       #MI    #MI
         New Hampshire   19.57        35.87     1.63   57.07
100      New York        153.26       83.15     0      236.41
         Massachusetts   37.50        50.54     1.63   89.67
         Florida         86.41        88.04     0      174.46
         Connecticut     65.22        50.54     0      115.76
         New Hampshire   44.02        86.41     3.26   133.70
         East            386.41       358.70    4.89   750
   

LOOPコマンドを使用したゴールシーク計算

次の例は、特定の製品で特定の利益を得るために達成する必要がある売上高を計算する方法を示しています。この例では、計算スクリプトで、1月の目標15,000 Profitを達成するためにSalesのBudget値を調整します。

図138のアウトラインに示すように、「動的計算」のタグが付けられているメンバーがないこと、および(メジャー次元のRatiosの下にある) Profit per Ounceメンバーが計算に含まれていないことを前提とします。

図 138. メジャー次元

この図は、この図の前のテキストで説明されているメジャー次元のアウトラインを示しています。

ゴールシーク計算スクリプトを実行する前のデータ値は次のようになっているとします:

      Product, Market, Budget   Jan
Profit                    12,278.50
   Margin                 30,195.50
      Sales               49,950.00
      COGS                19,755.00
   Total Expenses         17,917.00
      Marketing           3,515.00
      Payroll             14,402.00
      Misc                0
Inventory                 Label Only member
Ratios                    Label Only member
   Margin %               60.45
   Profit %               24.58
   

スクリプト例:


      /* Declare the temporary variables and set their initial values*/

VAR
   Target = 15000,
   AcceptableErrorPercent = .001,
   AcceptableError,
   PriorVar,
   PriorTar,
   PctNewVarChange = .10,
   CurTarDiff,
   Slope,
   Quit = 0,
      DependencyCheck,
      NxtVar;

/*Declare a temporary array variable called Rollback based on the Measures dimension */

ARRAY Rollback [Measures];

/* Fix on the appropriate member combinations and perform the goal-seeking calculation*/

FIX(Budget, Jan, Product, Market)
   LOOP (35, Quit)
      Sales (Rollback = Budget;
      AcceptableError = Target * (AcceptableErrorPercent);
      PriorVar = Sales;
      PriorTar = Profit;
      Sales = Sales + PctNewVarChange * Sales;);
      CALC DIM(Measures);
      Sales (DependencyCheck = PriorVar - PriorTar;
      IF(DependencyCheck <> 0) CurTarDiff = Profit - Target;
         IF(@ABS(CurTarDiff) > @ABS(AcceptableError))
            Slope = (Profit - PriorTar) / (Sales - PriorVar);
            NxtVar = Sales - (CurTarDiff / Slope);
            PctNewVarChange = (NxtVar - Sales) / Sales;
         ELSE
            Quit = 1;
         ENDIF;
      ELSE
         Budget = Rollback;
         Quit = 1;
      ENDIF;);
   ENDLOOP
   CALC DIM(Measures);
ENDFIX
   

  Essbaseでは、次の計算を実行します:

  1. VARコマンドを使用して必要な一時変数を宣言します。該当する場合は、初期値が設定されます。

  2. Budget値を保管するためのRollbackという1次元配列を宣言します。

    Rollbackのサイズは、メジャー次元のメンバー数によって決まります。

  3. ProductとMarketのすべてのメンバーに対して、Jan -> Budgetの値を確定します。

  4. LOOPとENDLOOPの間のコマンドが、メンバーの組合せに対して35回循環されます。ただし、Quit変数が1に設定された場合、LOOPは中断され、計算はENDLOOPコマンドの後に続行されます。

  5. メンバーの組合せを循環して、次の計算を実行します:

    1. Budget -> Sales値をRollback一時配列変数に置きます。

    2. Target値(15000)とAcceptableErrorPercent値(0.001)を乗算し、許容誤差を計算します。その結果はAcceptableError変数に配置されます。

    3. 現在のSales値を保持して、現在のメンバーの組合せのSales値をPriorVar一時変数に置きます。

    4. 現在のProfit値を保持して、現在のメンバーの組合せのProfit値をPriorTar一時変数に置きます。

    5. PctNewVarChange値(0.1)と現在のSales値を乗算し、現在のSales値を加算して、新しいSales値を計算します。その結果はSalesに配置されます。

    6. メジャー次元を計算し、集計します。

    7. PriorVar値からPriorTar値を減算して、その結果をDependencyCheck一時変数に置きます。

    8. DependencyCheckが0(ゼロ)でないことを確認します(IF)。

      • DependencyCheckが0でない場合、現在のProfitからTarget値(15000)を減算し、その結果をCurTarDiff一時変数に置きます。

        IFコマンドによって、CurTarDiffの絶対値(+符号または-符号を無視した値)がAcceptableErrorの絶対値よりも大きいかどうかが検査されます:

        • AcceptableErrorより大きい場合、Slope、NxtVarおよびPctNewVarChange一時変数を計算します。

        • AcceptableError以下の場合、Quitの値を1に設定して、LOOPコマンドを中断します。計算は、ENDLOOPコマンドの後に続行されます。

      • DependencyCheckが0の場合、Rollback配列の値をBudgetに置きます。EssbaseはQuitの値を1に設定して、LOOPコマンドを中断します。計算は、ENDLOOPコマンドの後に続行されます。

  6. メジャー次元を計算し、集計します。

製品100-10の結果:

      Product, Market, Budget   Jan
Profit                    15,000.00
   Margin                 32,917.00
      Sales               52,671.50
      COGS                19,755.00
   Total Expenses         17,917.00
      Marketing           3,515.00
      Payroll             14,402.00
      Misc                0
Inventory                 Label Only member
Ratios                    Label Only member
   Margin %               28.47839913
   Profit %               62.49489762
   

将来値の予測

次の例では、線形回帰予測法を使用して、選択した前月の既知のデータ値から始まり、既知の値に基づく予測値へと続くトレンド(@TREND)、つまり線を作成します。また、既知のデータ値への適合度について、トレンドの結果を検査する方法を示します。この例では、計算スクリプトで、6月から12月の売上高データを予測します。5月までのデータが揃っていることを前提とします。

メジャー次元に子ErrorLRが追加されていることを前提とします。この子には、適合度の結果が配置されます。

スクリプト例:

      Sales
(@TREND(@LIST(Jan,Mar,Apr),@LIST(1,3,4),,
  @RANGE(ErrorLR,@LIST(Jan,Mar,Apr)),
    @LIST(6,7,8,9,10,11,12),
      Jun:Dec,LR););
   

表89に、予測計算スクリプトで使用されるパラメータを示します:

表 89. 将来値を予測するための計算スクリプト例で使用されるパラメータ

パラメータ

説明

@LIST(Jan,Mar,Apr)

Ylist、つまり既知のデータ値を含むメンバーを表します。

@LIST関数は、3つのメンバーをカンマ区切りのリストとしてグループ化し、そのリストを他のパラメータとは別に保管します。

@LIST(1,3,4)

Xlist、つまり基になる変数値を表します。2月と5月はスキップされるので、EssbaseではYlist値を1、3、4とします。

,

Xlistパラメータの後ろの追加のカンマは、パラメータ(weightList)がスキップされていることを示します。

この例では、デフォルトの加重1を使用します。

@RANGE(ErrorLR,@LIST(Jan,Mar,Apr)

errorList、つまりYlistに対するトレンド線の適合度の結果が配置されるメンバー・リストを示します。

errorListに配置される値は、Ylistのデータ・ポイントと作成されたトレンド線上のデータ・ポイントの間の差異です。

@RANGE関数では、ErrorLRメンバーとYlist(Jan, Mar, Apr)を結合して、メンバー・リストを作成します。

@LIST(6,7,8,9,10,11,12)

XforecastList、つまり予測をシークする基となる変数値を表します。この例では、6月から12月の値を連続して予測します。このため、値は6、7、8、9、10、11、12となります。

Jun:Dec

YforecastList、つまり予測値が配置されるメンバー・リストを表します。この例では、1月、3月および4月の値に基づいて6月から12月の値を予測します。

LR

線形回帰法を指定します。

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

  1. YlistXlistパラメータで指定されたとおりに、トレンドで基になる既知のデータ値(Jan、Mar、AprのSales)を検索します。

  2. YforecastListパラメータで指定されたとおりに、線形回帰を使用してトレンド線を計算し、その結果をJunからDecのSalesに置きます。

  3. Jan、MarおよびAprのデータ値に対するトレンド線の適合度を計算し、その結果をそれぞれの月のErrorLRに置きます。

    たとえば、1月のErrorLR値(4.57)は、Essbaseによってトレンド線が計算された結果、1月のSales値(2339)とトレンド線上の1月の値の間の差異が4.57であることを意味します。2月と5月は、Ylistに含まれていないので、そのErrorLR値は#MISSINGです。

計算スクリプトの結果:

      
      100 West Actual
      Sales     ErrorLR
Jan   2339      4.57
Feb   2298      #MI
Mar   2313      -13.71
Apr   2332      9.14
May   2351      #MI
Jun   2315.14   #MI
Jul   2311.29   #MI
Aug   2307.49   #MI
Sep   2303.57   #MI
Oct   2299.71   #MI
Nov   2295.86   #MI
Dec   2292      #MI