@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: 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: 丸めません。これはデフォルトです。

  • 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

関連項目

@ALLOCATE