Allocates values from a member, from a cross-dimensional member, or
from a value across a member list. The allocation is based on a variety of
This function allocates values that are input at an upper level to lower-level
members. The allocation is based upon a specified share or spread of another
variable. For example, you can allocate values loaded to a parent member to
all of that member’s children. You can specify a rounding parameter for allocated
values and account for rounding errors.
@ALLOCATE (amount, allocationRange, basisMbr, [roundMbr],method [, methodParams] [, round [, numDigits][, roundErr]])
|amount||A value, member, or cross-dimensional member that contains the value
to be allocated into allocationRange. The
value may also be a constant.
If the amount parameter is a loaded
|allocationRange||A comma-delimited list of members, member set functions, or range functions,
into which value(s) from amount are allocated. allocationRange should be from only one level (for
example, @CHILDREN(Total Expenses) rather than from multiple levels (for example,
|basisMbr||A value, member, or cross-dimensional member that contains the values
that provide the basis for the allocation. The method you
specify determines how the basis data is used.
|roundMbr||Optional. The member or cross-dimensional member to which rounding errors
are added. The member (or at least one member of a cross-dimensional member)
must be included in allocationRange.
|method||The expression that determines how values are allocated. One of the
|round||Optional. One of the following:
|numDigits||An integer that represents the number of decimal places to round to.
You must specify numDigits if you specify roundAmt.
If you specify roundAmt, you also
|roundErr||Optional. An expression that specifies where rounding errors should
be placed. You must specify roundAmt in
order to specify roundErr. If you do not
specify roundErr, rounding errors are discarded.
To specify roundErr, choose from
- When you use @ALLOCATE in a calculation script, use it within
a FIX statement; for example, FIX on the member to which the allocation amount
is loaded. Although FIX is not required, using it may improve calculation
- If you use @ALLOCATE in a member formula, your formula should
look like this:
Member Name = @ALLOCATE (...)
This is because allocation functions never return a value; rather, they
calculate a series of values internally based on the range specified.
- For an example that explains the use of rounding error processing
with the @ALLOCATE function, see the Oracle Essbase Database Administrator’s Guide.
Consider the following example from the Sample Basic database. The example
assumes that the Scenario dimension contains an additional member, PY Actual,
for the prior year’s actual expenses. Data values of 7000 and 8000 are loaded
into Budget->Total Expenses for Jan and Feb, respectively. (For this example,
assume that Total Expenses is not a Dynamic Calc member.)
You need to allocate values to each expense category (to each child
of Total Expenses). The allocation for each of child of Total Expenses is
based on the child’s share of actual expenses for the prior year (PY Actual).:
FIX("Total Expenses") Budget = @ALLOCATE(Budget->"Total Expenses",@CHILDREN("Total Expenses"), "PY Actual",,share); ENDFIX
This example produces the following report:
Product Market PY Actual Budget Jan Feb Jan Feb === === === === Marketing 5223 5289 3908.60 4493.63 Payroll 4056 4056 3035.28 3446.05 Misc 75 71 56.13 60.32 Total Expenses 9354 9416 7000 8000