@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
-
配賦の基準として使用される値を含む値、メンバーまたはディメンション間メンバー。 指定したmethodによって、基準データの使用方法が決まります。
- roundMbr
-
オプション。 端数処理エラーが追加されるメンバーまたはディメンション間メンバー。 このメンバー(またはディメンション間メンバーのいずれかのメンバー)は、allocationRangeに含まれている必要があります。
- method
-
値の割当て方法を決定する式。 次のいずれかになります:
-
share: basisMbrを使用してシェア率を計算します。 配分率は、allocationRange->の現在のメンバーのbasisMbrの値を、その基準メンバーのallocationRange全体の合計で除算して計算されます:
amount * (@CURRMBR()-> basisMbr / @SUM(allocationRange -> basisMbr))
-
spread : amountをallocationRange全体に分散します :
amount * (1/@COUNT(SKIP,allocationRange))
-
SKIPNONE | SKIPMISSING | SKIPZERO | SKIPBOTH: 分散の計算中に無視される値。 SKIPパラメータは、spreadにのみ指定する必要があります。
-
SKIPNONE: すべてのセルを含めます。
-
SKIPMISSING: basisMbrのすべての
#MISSING
値を除外し、basisMbrが欠落しているallocationRangeの値の#MISSING
を格納します。 -
SKIPZERO: basisMbrのすべてのゼロ(0)値を除外し、basisMbrがゼロのallocationRangeの値に対して
#MISSING
を格納します。 -
SKIPBOTH: すべてのゼロ(0)値およびすべての
#MISSING
値を除外し、basisMbrがゼロ(0)または#MISSING
であるallocationRangeの値の#MISSING
を格納します。
-
-
percent : allocationRangeのメンバーごとにbasisMbrからパーセンテージ値を取得し、そのパーセンテージ値をamountに適用します :
amount * (@CURRMBR()->basisMbr * .01).
-
add : allocationRangeのメンバーごとにbasisMbrから値を取得し、その値をamountに追加します :
amount + @CURRMBR()-> basisMbr
-
subtract : allocationRangeのメンバーごとにbasisMbrから値を取得し、amountからその値を減算します :
amount - @CURRMBR()->basisMbr
-
multiply : allocationRangeのメンバーごとにbasisMbrから値を取得し、その値にamountを乗算します :
amount * @CURRMBR()->basisMbr
-
divide : allocationRangeのメンバーごとにbasisMbrから値を取得し、その値をamountで除算します :
amount/@CURRMBR()->basisMbr
-
- round
-
オプション。 次のいずれかになります:
-
noRound: 丸めは行われません。 これはデフォルトです。
-
roundAmt: 割り当てられた値を丸めることを示します。 roundAmtを指定する場合は、丸めの小数点以下の桁数を示すnumDigitsも指定する必要があります。
-
- numDigits
-
丸める小数点以下の桁数を表す整数。 roundAmtを指定する場合は、numDigitsを指定する必要があります。
-
numDigitsが0の場合、割り当てられた値は最も近い整数に丸められます。 numDigitsのデフォルト値は0です。
-
numDigitsが0より大きい場合、割り当てられる値は指定された小数点以下の桁数に丸められます。
-
numDigitsが負の値の場合、割り当てられる値は10の累乗に丸められます。
roundAmtを指定する場合は、roundErrパラメータも指定できます。
-
- roundErr
-
オプション。 丸めエラーを配置する場所を指定する式。 roundErrを指定するには、roundAmtを指定する必要があります。 roundErrを指定しない場合、Essbaseは丸めエラーを破棄します。
roundErrを指定するには、次のいずれかを選択します:
-
errorsToHigh: 割当て値が最も大きいメンバーに丸めエラーを追加します。 割り当てられた値が同一の場合、allocationRangeの最初の値に丸めエラーが追加されます。
-
errorsToLow: 割り当てられた値が最も小さいメンバーに丸めエラーを追加します。 割り当てられた値が同一の場合、allocationRangeの最初の値に丸めエラーが追加されます。
#MISSING
はリスト内の最小値として扱われます。複数の値が#MISSING
の場合、丸めエラーはリスト内の最初の#MISSING
値に追加されます。 -
errorsToMbr: 指定されたroundMbrに丸めエラーを追加します。これは、allocationRangeに含まれている必要があります。
-
ノート
-
計算スクリプトでこの関数を使用する場合は、FIX文内で使用します。たとえば、割当て量がロードされるメンバーに対してFIXを使用します。 FIXは必須ではありませんが、使用すると計算時間が短縮される可能性があります。
-
@MDALLOCATEを使用したより複雑な例は、「複数のディメンション間での値の割当て」を参照してください。
-
allocationRangeリストが非常に大きい場合は、計算中にEssbaseからエラー・メッセージが返されることがあります。
例
Sample Basicデータベースの次の例を考えてみます。 Budget->Total Expenses->East (JanおよびColas)にデータ値500がロードされます。 (この例では、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
関連項目