Allouer des valeurs dans une dimension

Cet exemple de script de calcul Essbase utilise la fonction @ALLOCATE pour allouer les dépenses totales budgétées entre les catégories de dépenses pour deux produits. Les dépenses totales budgétées sont réparties en fonction des valeurs réelles de l'année précédente.

Supposons que vous ayez apporté les modifications suivantes à Sample Basic, comme indiqué dans l'outline illustrée ci-dessous :

  • Ajout d'un enfant, Lease, sous Total Expenses dans la dimension Measures

  • Ajout d'un enfant, PY Actual, à la dimension Scenario.

Figure 24-3 Mesures modifiées et dimensions de scénario


Exemple de section d'outline Basic, avec les dimensions Mesures et Scénario modifiées.

Supposons que les valeurs de données 1000 et 2000 soient chargées dans Budget -> Total Expenses pour Colas et Root Beer, respectivement. Ces valeurs doivent être allouées à chaque catégorie de charges, en répartissant uniformément les valeurs en fonction des enfants non manquants du total des dépenses de l'exercice précédent réel. Les valeurs allouées doivent être arrondies au dollar le plus proche.

Exemple de script:

/* Allocate budgeted total expenses based on prior year */

FIX("Total Expenses")
   Budget = @ALLOCATE(Budget->"Total Expenses",
   @CHILDREN("Total Expenses"),"PY Actual",,
   spread,SKIPMISSING,roundAmt,0,errorsToHigh)
ENDFIX

Résultats du script de calcul :

                             Budget   PY Actual
Colas       Marketing        334 *    150
            Payroll          #MI      #MI
            Lease            333      200
            Misc             333      100
            Total Expenses   1000     450
Root Beer   Marketing        500      300
            Payroll          500      200
            Lease            500      200
            Misc             500      400
            Total Expenses   2000     1100

* Des erreurs d'arrondi sont ajoutées à cette valeur.

Essbase parcourt la base de données en effectuant les calculs suivants :

  1. Fixes sur les enfants de Total Expenses.

    L'utilisation d'une instruction FIX avec @ALLOCATE peut améliorer les performances de calcul.

  2. Pour Budget -> Colas -> Marketing, divise 1 par le nombre de valeurs non manquantes pour chaque catégorie de charges dans PY Actual -> Colas pour chaque mois.

    Dans ce cas, 1 est divisé par 3, car il existe 3 valeurs de dépenses non manquantes pour Budget -> Colas.

  3. Prend la valeur de l'étape 2 (.333), la multiplie par la valeur de Budget -> Colas -> Total des dépenses (1000) et arrondit au dollar le plus proche (333). Le résultat est placé dans Budget -> Colas -> Marketing.

  4. Répéte les étapes 2 et 3 pour chaque catégorie de charges pour Budget -> Colas, puis pour Budget -> Bière racine.

  5. Comme indiqué dans le script de calcul, arrondit les valeurs allouées au dollar entier le plus proche.

    Essbase effectue une seconde passe dans le bloc pour que la somme des valeurs arrondies soit égale à la valeur d'allocation (par exemple, 1000 pour Budget -> Colas -> Total Expenses). Dans cet exemple, il existe une erreur d'arrondi de 1 pour Budget -> Colas -> Total des dépenses, car les catégories de dépenses totalisent 999, et non 1000, qui est la valeur d'allocation. Comme toutes les valeurs allouées sont identiques (333), l'erreur d'arrondi de 1 est ajoutée à la première valeur de la plage d'allocation, Budget -> Colas -> Marketing (donc une valeur de 334).