在维内分配值

Essbase 计算脚本示例使用 @ALLOCATE 函数为两个产品跨费用类别分配预算总费用。预算总费用是根据上一年的实际值分配的。

假设您对 Sample Basic 进行了以下更改,如下面所示的大纲所示:

  • 在“度量”维中的“总费用”下添加了“租赁”子项

  • 已将子项 PY Actual 添加到方案维

图 24-3 修改的度量和方案维


“基本大纲”部分示例,其中包含修改过的度量和方案维。

假设数据值 1000 和 2000 分别加载到“Budget(预算)”>“Total Expenses for Colas”和“Root Beer”。必须将这些值分配给每个费用类别,以便根据“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 会循环使用数据库,执行以下计算:

  1. 修复了总费用的子项。

    FIX 语句与 @ALLOCATE 一起使用可以提高计算性能。

  2. 对于“Budget(预算)”>“Colas(列)”>“Marketing(市场营销)”,将 1 除以“PY Actual(实际值)”>“Colas(每月)”中每个费用类别的非缺少值计数。

    在本例中,1 除以 3,因为“预算”->“科拉斯”有 3 个非缺少的费用值。

  3. 获取步骤 2 (.333) 中的值,将其乘以“预算”->“科拉斯”->“总费用”(1000) 的值,并舍入到最接近的美元 (333)。结果将放置在“Budget(预算)”>“Colas(科拉斯)”>“Marketing(营销)”中。

  4. 针对“预算”->“科拉斯”->“预算”->“根啤酒”的每个费用类别重复步骤 2 和 3。

  5. 如计算脚本中指定的那样,将分配的值舍入到最接近的整数。

    Essbase 再次遍历块,使舍入值的总和等于分配值(例如,1000 表示“预算”->“列”->“总费用”)。在此示例中,“Budget(预算)”>“Colas(列)”>“Total Expenses(总费用)”的取整错误为 1,因为费用类别总和为 999,而不是分配值 1000。由于所有分配的值都相同 (333),因此将舍入误差 1 添加到分配范围中的第一个值“预算”->“科拉斯”->“营销”(因此值为 334)。