@ALLOCATE
Essbaseの@ALLOCATE計算関数は、メンバー、ディメンション間メンバー、またはメンバー・リスト全体の値から値を割り当てます。割当ては、様々な基準に基づきます。
この関数は、上位レベルで入力された値を下位レベルのメンバーに割り当てます。割当ては、別の変数の指定された共有または分散に基づきます。たとえば、親メンバーにロードされた値をそのメンバーのすべての子に割り当てることができます。割り当てられた値に丸めパラメータを指定し、丸め誤差を明らかにすることができます。
構文
@ALLOCATE (amount, allocationRange, basisMbr, [roundMbr],method [, methodParams] [, round [, numDigits][, roundErr]])
パラメータ
- amount
-
allocationRangeに割り当てられる値を含む値、メンバー、またはディメンション間メンバー。値は定数である場合もあります。
-
amountがメンバーの場合、メンバーはallocationRangeが属するディメンションからのものである必要があります。
-
amountがディメンション間メンバーである場合、そのメンバーの少なくとも1つは、allocationRangeが属するディメンションからのメンバーである必要があります。
-
allocationRangeが属するディメンションのメンバーまたはディメンション間メンバーがない場合、警告メッセージが表示されます。
amountパラメータがロードされた値である場合、動的計算メンバーにすることはできません。
-
- allocationRange
-
amountの値が割り当てられる、メンバー、メンバー・セット関数、または範囲関数のカンマ区切りのリスト。allocationRangeは、複数のレベル(@DESCENDANTS(Product)など)からでなく、1つのレベル(@CHILDREN(Total Expenses)など)からのものである必要があります。
- 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: 丸め処理なし。noRoundはデフォルトです。
-
roundAmt: 割り当てられた値を丸めることを示します。roundAmtを指定する場合は、丸める小数点以下の桁数を示すためにnumDigitsも指定する必要があります。
-
- numDigits
-
四捨五入する小数点以下の桁数を表す整数。numDigitsは、roundAmtを指定する場合に指定する必要があります。
-
numDigitsが0の場合、割り当てられた値は最も近い整数に丸められます。numDigitsのデフォルト値は0です。
-
numDigitsが0より大きい場合、割り当てられた値は、指定された小数点以下の桁数に丸められます。
-
numDigitsが負の値の場合、割り当てられた値は10乗に丸められます。
roundAmtを指定した場合、roundErrパラメータも指定できます。
-
- roundErr
-
オプション。丸め誤差を配置する場所を指定する式。roundAmtは、roundErrを指定するには指定する必要があります。roundErrを指定しないと、丸め誤差は破棄されます。
roundErrを指定するには、次のいずれかを選択します。
-
errorsToHigh: 割り当てられた値が最も大きいメンバーに丸め誤差を追加します。割り当てられた値が同一である場合、allocationRangeの最初の値に丸め誤差を加算します。このオプションの場合、Essbaseは#MI値とゼロ値を区別しません。
-
errorsToLow: 割り当てられた値が最も小さいメンバーに丸め誤差を加算します。割り当てられた値が同一である場合、allocationRange内の最初の値に丸め誤差を加算します。
#MISSING
は、リスト内の最小値として扱われます。複数の値が#MISSING
の場合、丸め誤差がリスト内の最初の#MISSING
値に加算されます。 -
errorsToMbr: 指定されたroundMbrに丸め誤差を加算します。このメンバーは、allocationRange内に含まれている必要があります。
-
ノート
-
計算スクリプトで@ALLOCATEを使用する場合は、FIX文内で使用してください。たとえば、割当て量がロードされるメンバーに対するFIXです。FIXは必須ではありませんが、FIXを使用すると計算パフォーマンスが向上する場合があります。
-
メンバー式で@ALLOCATEを使用すると、式は次のようになります。
Member Name = @ALLOCATE (...)
これは、割当て関数が値を返さないためです。むしろ、指定された範囲に基づいて内部的に一連の値を計算します。
-
@ALLOCATE関数での丸め誤差処理の使用を説明する例については、ディメンション内の値の割当てを参照してください。
例
Sample Basicキューブの次の例について考えます。この例では、シナリオ・ディメンションに、前年度の実際の費用の追加メンバーPY Actualが含まれていることを前提としています。7000と8000の各データ値は、それぞれ1月と2月のBudget->Total Expensesに読み込まれます。この例では、Total Expensesは動的計算メンバーではないと想定しています。
各経費カテゴリ(Total Expensesの各子)に値を割り当てる必要があります。Total Expensesの各子への割当ては、前年度(PY Actual)の実際の費用の子の占有率に基づきます。
FIX("Total Expenses")
Budget = @ALLOCATE(Budget->"Total Expenses",@CHILDREN("Total Expenses"),
"PY Actual",,share);
ENDFIX
この例では、次のレポートが作成されます:
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
関連項目