@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:

    amountallocationRange全体で分散します。

    amount * (1/@COUNT(SKIP, allocationRange))

    SKIPNONE | SKIPMISSING | SKIPZERO | SKIPBOTH: 分散の計算中に無視される値。SKIPパラメータは、spreadに対してのみ指定する必要があります。

    • SKIPNONE: すべてのセルを含めます。

    • SKIPMISSING: すべての#MISSING値をbasisMbr内で除外し、#MISSINGallocationRange内のbasisMbrがない値について格納します。

    • SKIPZERO: すべてのゼロ(0)の値をbasisMbr内で除外し、#MISSINGallocationRange内のbasisMbrがゼロの値について格納します。

    • SKIPBOTH: すべてのゼロ(0)の値とすべての#MISSINGの値を除外し、#MISSINGallocationRange内の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

関連項目