ディメンション内での値の割当て

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

次の図のアウトラインに示すように、Sample Basicに次の変更が行われているものとします:

  • MeasuresディメンションのTotal Expensesの下に子Leaseが追加されている

  • Scenarioディメンションに子PY Actualが追加されている

図24-3 変更されたMeasuresディメンションとScenarioディメンション


MeasuresおよびScenarioディメンションが変更されたSample Basicアウトライン・セクション。

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

* この値には丸め誤差が追加されています。

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になります)。