@MDALLOCATE
Essbaseの@MDALLOCATE計算関数は、複数のディメンションの上位レベルで入力された値を下位レベルのメンバーに割り当てます。割当ては、別の変数の共有または分散に基づきます。丸めパラメータを指定し、丸め誤差を明らかにすることができます。
構文
@MDALLOCATE (amount, Ndim, allocationRange1 ... allocationRangeN,basisMbr, [roundMbr], method [, methodParams]
[, round [, numDigits][, roundErr]])
パラメータ
- amount
-
各allocationRangeに割り当てられる値を含む値、メンバー、またはディメンション間メンバー。値は定数である場合もあります。
-
amountがメンバーの場合、メンバーはallocationRangeが属するディメンションからのものである必要があります。
-
amountがディメンション間メンバーである場合、メンバーには、すべてのallocationRangeのすべてのディメンションのメンバーが含まれている必要があります。
-
メンバーまたはディメンション間メンバーがallocationRangeディメンションに属していない場合、Essbaseは警告メッセージを表示します。
amountパラメータがロードされた値である場合、動的計算メンバーにすることはできません。
-
- Ndim
-
値が割り当てられるディメンションの数。
- allocationRange1 ... allocationRangeN
-
amountからの値の割当て先の複数のディメンションのメンバー、メンバー・セット関数、または範囲関数のカンマ区切りのリスト。
- basisMbr
-
割当ての基本として使用される値を含む値、メンバー、またはディメンション間メンバー。指定したメソッドによって、基準データの使用方法が決まります。
- roundMbr
-
オプション。丸め誤差が加算されるメンバーまたはディメンション間メンバー。このメンバー(またはディメンション間メンバーの少なくとも1つのメンバー)は、allocationRangeに含まれている必要があります。
- method
-
値の割当て方法を決定する式。次のいずれかになります:
-
share: basisMbrを使用して占有率を計算します。占有率は、basisMbr内の値を、allocationRange内の現在のメンバーに対して、その基本メンバーのallocationRange全体の合計で除算することによって計算します。
amount * (@CURRMBR()-> basisMbr / @SUM(allocationRange -> basisMbr))
-
spread: amountをallocationRange全体で分散します。
amount * (1/@COUNT(SKIP,allocationRange))
-
SKIPNONE | SKIPMISSING | SKIPZERO | SKIPBOTH: 分散の計算中に無視される値。SKIPパラメータは、spreadに対してのみ指定する必要があります。
-
SKIPNONE: すべてのセルを含めます。
-
SKIPMISSING: すべての
#MISSING
値をbasisMbr内で除外し、#MISSING
をallocationRange内のbasisMbrがない値について格納します。 -
SKIPZERO: すべてのゼロ(0)の値をbasisMbr内で除外し、
#MISSING
をallocationRange内のbasisMbrがゼロの値について格納します。 -
SKIPBOTH: すべてのゼロ(0)の値とすべての
#MISSING
の値を除外し、#MISSING
をallocationRange内のbasisMbrがゼロ(0)または#MISSING
の値について格納します。
-
-
percent: basisMbrからallocationRange内の各メンバーのパーセント値を取得し、そのパーセント値をamountに適用します。
amount * (@CURRMBR()->basisMbr * .01).
-
add: basisMbrからallocationRange内の各メンバーの値を取得し、その値をamountに加算します。
amount + @CURRMBR()-> basisMbr
-
subtract: basisMbrからallocationRange内の各メンバーの値を取得し、その値をamountから除算します。
amount - @CURRMBR()->basisMbr
-
multiply: basisMbrからallocationRange内の各メンバーの値を取得し、その値をamountで乗算します。
amount * @CURRMBR()->basisMbr
-
divide: basisMbrからallocationRange内の各メンバーの値を取得し、その値をamountで除算します。
amount/@CURRMBR()->basisMbr
-
- round
-
オプション。次のいずれかになります:
-
noRound: 丸めません。これはデフォルトです。
-
roundAmt: 割り当てられた値を丸めることを示します。roundAmtを指定する場合は、丸める小数点以下の桁数を示すためにnumDigitsも指定する必要があります。
-
- numDigits
-
四捨五入する小数点以下の桁数を表す整数。numDigitsは、roundAmtを指定する場合に指定する必要があります。
-
numDigitsが0の場合、割り当てられた値は最も近い整数に丸められます。numDigitsのデフォルト値は0です。
-
numDigitsが0より大きい場合、割り当てられた値は、指定された小数点以下の桁数に丸められます。
-
numDigitsが負の値の場合、割り当てられた値は10乗に丸められます。
roundAmtを指定した場合、roundErrパラメータも指定できます。
-
- roundErr
-
オプション。丸め誤差を配置する場所を指定する式。roundAmtは、roundErrを指定するには指定する必要があります。roundErrを指定しないと、Essbaseは丸め誤差を破棄します。
roundErrを指定するには、次のいずれかを選択します。
-
errorsToHigh: 割り当てられた値が最も大きいメンバーに丸め誤差を追加します。割り当てられた値が同一である場合、allocationRangeの最初の値に丸め誤差を加算します。
-
errorsToLow: 割り当てられた値が最も小さいメンバーに丸め誤差を加算します。割り当てられた値が同一である場合、allocationRange内の最初の値に丸め誤差を加算します。
#MISSING
は、リスト内の最小値として扱われます。複数の値が#MISSING
の場合、丸め誤差がリスト内の最初の#MISSING
値に加算されます。 -
errorsToMbr: 指定されたroundMbrに丸め誤差を加算します。このメンバーは、allocationRange内に含まれている必要があります。
-
ノート
-
計算スクリプトでこの関数を使用する場合は、FIX文内で使用してください。たとえば、割当て量がロードされるメンバーに対するFIXです。FIXは必須ではありませんが、FIXを使用すると計算時間が減少する場合があります。
-
@MDALLOCATEのより複雑な使用例については、複数のディメンション全体での値の割当てを参照してください。
-
非常に大きなallocationRangeリストがある場合、Essbaseは計算中にエラー・メッセージを返す場合があります。
例
Sample Basicデータベースの次の例について考えます。500のデータ値が、JanとColasのBudget->Total Expenses->Eastにロードされます。この例では、Total Expensesは動的計算メンバーではないと想定しています。
Eastの各子に対し、各経費カテゴリに金額を割り当てる必要があります。Eastの各子への割当ては、Total Expenses->Actualの子の占有率に基づきます。
FIX("Total Expenses")
Budget = @MDALLOCATE(Budget->"Total Expenses"->East,2,
@CHILDREN(East),@CHILDREN("Total Expenses"),Actual,,share);
ENDFIX
この例では、次のレポートが作成されます:
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
関連項目