ディメンション内での値の割当て
このEssbase計算スクリプトの例では、@ALLOCATE関数を使用して、2つの製品の費用カテゴリに費用合計の予算を割り当てます。費用合計の予算は、前年の実績値に基づいて割り当てられます。
次の図のアウトラインに示すように、Sample Basicに次の変更が行われているものとします:
-
MeasuresディメンションのTotal Expensesの下に子Leaseが追加されている
-
Scenarioディメンションに子PY Actualが追加されている
図24-3 変更されたMeasuresディメンションとScenarioディメンション

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はデータベースを一巡して次の計算を実行します。
-
Total Expensesの子を確定します。
-
Budget -> Colas -> Marketingの場合、各月のPY Actual -> Colasにおける、各費用カテゴリの欠落していない値の数で1を除算します。
この場合、Budget -> Colasの欠落していない費用の値が3であるため、1を3で除算します。
-
ステップ2の値(.333)を取得し、その値にBudget -> Colas -> Total Expensesの値(1000)を乗算し、最も近いドル(333)に丸めます。結果はBudget -> Colas -> Marketingに配置されます。
-
Budget -> Colasの各費用カテゴリに対してステップ2と3を繰り返した後、Budget -> Root Beerに対して同様にします。
-
計算スクリプトで指定されたとおりに、割当て値を最も近いドルに丸めます。
Essbaseは、ブロックに2回目のパスを行い、丸められた値の合計を割当て値に等しくします(たとえば、Budget -> Colas -> Total Expensesの場合は1000)。この例では、費用カテゴリの合計が1000ではなく999のため、Budget -> Colas -> Total Expensesに1の丸め誤差があります。すべての割当て値は同じ(333)になるため、丸め誤差1が割当て範囲の最初の値、Budget -> Colas -> Marketingに追加されます(このため、値が334になります)。