Allocates values from a member, from a cross-dimensional member, or
from a value across multiple dimensions. The allocation is based on a variety
This function allocates values that are input at an upper level to lower-level
members in multiple dimensions. The allocation is based upon a specified share
or spread of another variable. You can specify a rounding parameter for allocated
values and account for rounding errors.
@MDALLOCATE (amount, Ndim, allocationRange1 ... allocationRangeN,basisMbr, [roundMbr], method [, methodParams] [, round [, numDigits][, roundErr]])
|amount||A value, member, or cross-dimensional member that contains the value
to be allocated into each allocationRange.
The value may also be a constant.
If the amount parameter is a loaded
|Ndim||The number of dimensions across which values are allocated.|
|allocationRange1 … allocationRangeN||Comma-delimited lists of members, member set functions, or range functions
from the multiple dimensions into which values from amount are
|basisMbr||A value, member, or cross-dimensional member that contains the values
that are used as 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. This member (or at least one member of a cross-dimensional member)
must be included in an 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, Essbase discards
To specify roundErr, choose from
- When you use @MDALLOCATE 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 decrease calculation
- For a more complex example using the @MDALLOCATE function,
see the Oracle Essbase Database Administrator’s Guide.
- If you have very large allocationRange lists, Essbase may return error messages during the calculation. If
you receive error messages, you may need to raise the number for CALCLOCKBLOCK
DEFAULT or use CALCLOCKBLOCK HIGH in your calculation script.
Consider the following example from the Sample Basic database. A data
value of 500 is loaded to Budget->Total Expenses->East for Jan and Colas.
(For this example, assume that Total Expenses is not a Dynamic Calc member.)
You need to allocate the amount across each expense category for each
child of East. The allocation for each child of East is based on the child’s
share of Total Expenses->Actual:
FIX("Total Expenses") Budget = @MDALLOCATE(Budget->"Total Expenses"->East,2, @CHILDREN(East),@CHILDREN("Total Expenses"),Actual,,share); ENDFIX
This example produces the following report:
Jan Colas Marketing Payroll Misc Total Expenses ========= ======= ==== ============== Actual New York 94 51 0 145 Massachusetts 23 31 1 55 Florida 53 54 0 107 Connecticut 40 31 0 71 New Hampshire 27 53 2 82 East 237 220 3 460 Budget New York 102.174 55.435 0 #MI Massachusetts 25 33.696 1.087 #MI Florida 57.609 58.696 0 #MI Connecticut 43.478 33.696 0 #MI New Hampshire 29.348 57.609 2.173 #MI East #MI #MI #MI 500