ディメンション内での値の割当て
この例では、@ALLOCATE関数を使用して、2つの製品の費用カテゴリ全体に予算合計費用を配賦します。 予算費用合計は、前年の実績値に基づいて配賦されます。
次のアウトラインに示すように、次の変更を行ったとします:
-
Measuresディメンションの費用合計の下にリースという子が追加されました
-
Scenarioディメンションに子PY Actualを追加しました
-
Total Expensesメンバーから「動的計算」タグを削除しました
図25-3 変更されたメジャーおよびシナリオ・ディメンション

1000および2000のデータ値が、それぞれColasとRoot BeerのBudget -> Total Expensesにロードされているとします。 これらの値は、PY実績からの費用合計の欠落していない子に基づいて値を均等に分散して、各費用カテゴリに配賦する必要があります。 割り当てられた値は、最も近いドルに丸められる必要があります。
スクリプトの例:
/* 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はデータベースを循環し、次の計算を実行します:
-
費用合計の子を修正します。
@ALLOCATEでFIX文を使用すると、計算のパフォーマンスが向上する場合があります。
-
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およびそしてBudget -> Root Beerの各経費カテゴリについて、ステップ2と3を繰り返します。
-
計算スクリプトで指定されたとおりに、割り当てられた値を最も近い整数のドルに丸めます。
Essbaseでは、ブロックを通じた2回目のパススルーによって、端数処理された値の合計が割当て値と等しくなります(たとえば、Budget -> Colas -> Total Expensesの場合は1000)。 この例では、費用カテゴリの合計が1000(配賦値)ではなく999になるため、Budget -> Colas -> Total Expensesに端数処理エラー1があります。 割り当てられた値はすべて同一(333)であるため、割当範囲の最初の値であるBudget -> Colas -> Marketing (つまり334の値)に端数処理エラー1が追加されます。