在多个维之间分配值
此 Essbase 计算脚本示例使用 @MDALLOCATE 函数为三个维的预算总费用分配加载值。预算总费用是根据上一年的实际值分配的。
假设您进行了以下更改:
-
已将子项 PY Actual 添加到方案维
-
将数据从实际复制到 PY 实际
-
已从预算中清除数据
在此示例中,必须将值 750(对于“预算”->“总费用”->“产品”->“东部”->“一月”)分配给东部各州的产品 100 子项的每个费用类别。分配使用 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);
ENDFIXPY 实际值:
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 460Essbase 会循环使用数据库,执行以下计算:
-
修复了东部、100 个子女和总费用。
将 FIX 语句与 @MDALLOCATE 一起使用可以提高计算性能。
-
在执行分配之前,使用 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% 的百分比份额。
-
对每个产品状态组合的每个费用类别重复步骤 2。
-
在分配期间, Essbase 使用在步骤 2 和步骤 3 中计算的百分比份额来确定应将 750 的份额分配给每个产品状态组合的“总预算费用”的每个子项。
例如,对于 Marketing, Essbase 使用步骤 2 中计算的 20.4% 的数字,占 750 的 20.4%(大约 153),并将分配的值放置在“预算”>“100-10”>“纽约”>“营销”中(请参阅此过程后面的结果)。
-
使用在步骤 2 和步骤 3 中计算的 PY 实际百分比份额,对每个费用类别和每个产品状态组合重复步骤 4。
-
合并费用类别以生成“总费用”的值。
预算的分配结果:
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