Ordre de calcul des membres
L'ordre par défaut dans lequel Essbase calcule les membres de l'outline est, en général : Comptes, Temps, dense et dispersé, en tenant compte de l'ordre des dimensions dans l'outline et si des formules sont appliquées.
Lorsque vous effectuez un calcul par défaut (CALC ALL) sur une base de données, Essbase calcule les dimensions dans l'ordre suivant :
-
S'il existe à la fois une dimension marquée en tant que comptes et une dimension marquée en tant que temps et que des formules sont appliquées aux membres de la dimension Comptes, Essbase effectue les calculs dans l'ordre suivant :
-
Dimension marquée comme comptes
-
Dimension marquée comme temps
-
Autres dimensions denses (dans l'ordre dans lequel elles sont affichées dans l'outline de la base de données)
-
Autres dimensions dispersées (dans l'ordre dans lequel elles sont affichées dans l'outline de la base de données)
-
-
Sinon, Essbase effectue les calculs dans l'ordre suivant :
-
Dimensions denses (dans l'ordre dans lequel elles sont affichées dans l'outline de la base de données)
-
Dimensions dispersées (dans l'ordre dans lequel elles sont affichées dans l'outline)
-
Remarques :
Les dimensions d'attribut, qui ne sont pas incluses dans la consolidation de la base de données, n'ont aucune incidence sur l'ordre de calcul. Reportez-vous à Utilisation des attributs Essbase.
Dans la base de données Sample Basic, les dimensions sont calculées dans l'ordre suivant : Measures, Year, Scenario, Product et Market.
Vous pouvez remplacer l'ordre par défaut à l'aide d'un script de calcul. Reportez-vous à Développement de scripts de calcul pour les cubes de stockage de blocs.
Effets de calcul des relations entre membres
L'ordre de calcul au sein de chaque dimension Essbase dépend des relations entre les membres de l'outline. La façon dont les membres de l'outline se regroupent (consolidation) est comparable à un compteur kilométrique.
Dans chaque branche (hiérarchie) d'une dimension, les valeurs de niveau 0 sont calculées en premier, suivies de leur valeur parent de niveau 1. Ensuite, les valeurs de niveau 0 de la branche suivante sont calculées, suivies de leur valeur parent de niveau 1. Le calcul se poursuit ainsi jusqu'à ce que tous les niveaux soient calculés.
L'image suivante présente la dimension Year de la base de données Sample Basic. L'ordre de calcul de ses membres est indiqué à gauche de chaque membre. Cet exemple suppose que les membres parent ne sont pas balisés en tant que calcul dynamique.
Figure 19-3 Ordre de calcul pour la dimension Année de l'exemple de base

Jan est le premier membre de la première branche. Jan n'a pas de formule, elle n'est donc pas évaluée. Il en va de même pour Feb et Mar, les deux autres membres de la branche.
Essbase calcule Qtr1 en consolidant les mois Jan, Feb et Mar. Dans cet exemple, ces mois sont ajoutés, comme indiqué par l'opérateur de consolidation +, pour fournir une valeur pour Qtr1.
Essbase calcule ensuite les branches Qtr2 à Qtr4 de la même manière.
Enfin, Essbase calcule le membre Year en consolidant les valeurs de Qtr1 à Qtr4. Comme l'indiquent les opérateurs de consolidation +, ces trimestres sont ajoutés pour fournir une valeur pour l'année.
Consolider les membres
Vous pouvez choisir la façon dont Essbase consolide les membres dans un cube en mode "block storage" en appliquant un opérateur de calcul (+, -, /, *, %, ~, ^) aux membres de l'outline de base de données.
Si un membre de compte dispose d'une balise d'équilibre temps (premier, dernier ou moyen), Essbase la consolide en conséquence. Reportez-vous à la section Calculer les valeurs Premier, Dernier et Moyenne.
Si un membre parent possède un opérateur de libellé uniquement, Essbase ne calcule pas le parent à partir de ses enfants.
Si un membre possède un opérateur ~, Essbase ne consolide pas le membre jusqu'à son parent.
Si un membre possède un opérateur ^, Essbase ne consolide le membre dans aucune dimension.
Remarques :
Si vous utilisez des calculs dynamiques, Essbase peut utiliser un ordre de calcul différent. Voir Ordre de calcul pour le calcul dynamique.
Ordre des dimensions dans l'outline de la base de données
Pour garantir les résultats de calcul requis, tenez compte de l'ordre de calcul des dimensions dans l'outline Essbase s'il utilise des opérateurs de calcul pour diviser (/), multiplier (*), ou calculer les pourcentages (%) pour les membres, ou si certains membres ont des formules.
Vous n'avez pas besoin de tenir compte de l'ordre des calculs si vous utilisez uniquement des opérateurs de calcul pour ajouter (+) et soustraire (–) des membres dans l'outline de la base de données et que vous n'utilisez pas de formules dans l'outline.
Formules sur les membres dans l'outline de la base de données
Si vous placez des formules sur des membres dans l'outline Essbase, tenez compte de l'ordre de calcul des dimensions. Une formule associée à un membre d'une dimension peut être remplacée par un calcul ultérieur sur une autre dimension.
Par exemple, la base de données Sample Basic comporte une dimension Measures, marquée en tant que comptes, et une dimension Year, marquée en tant que temps.

Les mesures sont calculées en premier et en deuxième année. Si vous associez une formule à la marge sur la dimension Mesures, Essbase calcule la formule lorsqu'il calcule la dimension Mesures. Essbase remplace ensuite la formule lors de la consolidation de la dimension Année. Voir Ordre de calcul de la cellule.
Utilisation des opérateurs de calcul *, / et %
Si vous utilisez des opérateurs de calcul pour multiplier ( *), diviser ( / ) et calculer des pourcentages ( % ) pour les membres de l'outline Essbase, tenez compte de l'ordre de calcul des dimensions. Les valeurs calculées requises peuvent être remplacées par un calcul ultérieur sur une autre dimension.
Par exemple, la base de données Sample Basic comporte une dimension Measures, marquée en tant que comptes, et une dimension Year, marquée en tant que temps. Les mesures sont calculées en premier et en deuxième année. Si vous multipliez les membres de la dimension Mesures, les résultats calculés peuvent être écrasés lorsque Essbase consolide les valeurs de la dimension Année. Voir Ordre de calcul de la cellule.
Lorsque vous utilisez un opérateur de multiplication ( * ), de division ( / ) ou de pourcentage ( % ) pour consolider des membres, ordonnez soigneusement les membres de la branche pour obtenir le résultat requis.
La figure 19-4 présente les opérateurs de calcul tels qu'ils apparaissent dans une outline. Supposons que l'utilisateur souhaite diviser le total de Child 2 et Child 3 par Child 1. Toutefois, si Child 1 est le premier membre, Essbase commence par Child 1, en commençant par la valeur #MISSING et en le divisant par Child 1. Le résultat est #MISSING. Essbase ajoute ensuite Child 2 et Child 3. Il est évident que ce résultat n'est pas obligatoire.
Figure 19-4 Opérateurs de calcul dans l'outline de base de données

Pour calculer le résultat correct, faites de Child 1 le dernier membre de la branche.
Vous pouvez appliquer une formule à un membre de l'outline de la base de données pour obtenir le même résultat. Cependant, il est beaucoup plus efficace d'utiliser ces opérateurs de calcul sur les membres, comme illustré dans la figure 19-4.
Eviter les références de calcul aval
Pour obtenir les résultats attendus, assurez-vous que l'outline ne contient pas de références de calcul aval. Les références de calcul aval se produisent lorsque la valeur d'un membre de calcul dépend d'un membre que Essbase n'a pas encore calculé. Dans ce cas, Essbase risque de ne pas produire les résultats de calcul requis.
Prenons par exemple la dimension Product illustrée ci-dessous, qui comporte trois références de calcul aval : deux membres partagés (P100-20 et P300-20) et un membre non partagé (P500-20) :
Figure 19-5 Dimension Produit avec références de calcul aval

Dans l'éditeur d'outline, lorsque vous vérifiez l'outline, Essbase identifie les membres partagés avec des références de calcul aval. La vérification de l'outline n'identifie pas les membres non partagés qui ont des références de calcul aval. Vous pouvez enregistrer et utiliser une outline contenant des références de calcul aval.
Considérez les cinq membres sous Diet. Les membres P100-20, P300-20 et P500-20 ont des références de calcul en aval :
-
P100-20 (+) (Membre partagé) : Essbase calcule le membre partagé P100-20 avant de calculer le membre prototype P100-20. Etant donné que le membre prototype P100-20 a des enfants, Essbase doit calculer le membre prototype en ajoutant ses enfants avant de pouvoir calculer précisément le membre partagé P100-20.
-
P300-20 (+) (Membre partagé) : Essbase calcule le membre partagé P300-20 avant de calculer le membre prototype P300-20. Etant donné que le membre prototype P300-20 a une formule, Essbase doit calculer le membre prototype avant de pouvoir calculer avec précision le membre partagé P300-20.
-
P500-20 (+) ("P200-20" + "P300-20") : La formule appliquée à P500-20 fait référence aux membres qu'Essbase n'a pas encore calculés. L'un de ces prototypes, P300-20, a sa propre formule et Essbase doit calculer P300-20 avant de pouvoir calculer avec précision P500-20. Les membres P200-20 et P400-20 calculent correctement, car ils n'ont pas de références de calcul aval.
-
P200-20 (+) (Membre partagé) : P200-20 n'est pas une référence de calcul aval, bien qu'Essbase calcule le membre partagé P200-20 avant de calculer le membre prototype P200-20. Le prototype P200-20 n'a pas de dépendances de calcul (pas d'enfant ni de formule). Par conséquent, Essbase n'a pas besoin de calculer le membre prototype avant le membre partagé. Essbase prend simplement la valeur du membre prototype.
-
P400-20 (+) ("P200-10" * 2) : P400-20 n'est pas une référence de calcul aval, bien que la formule appliquée à P400-20 fasse référence à un membre que Essbase n'a pas encore calculé. Le prototype de membre de la formule ne comporte pas de dépendances de calcul. P200-10 est le seul membre de la formule et P200-10 n'a pas d'enfant ni de formule. Essbase calcule précisément P400-20.
Pour obtenir des résultats de calcul précis pour P100-20, P300-20 et P500-20, modifiez l'ordre des membres dans l'outline. En plaçant les membres partagés Diet après les membres réguliers, comme indiqué ci-dessous, vous assurez-vous qu'Essbase calcule les membres dans l'ordre requis.
Figure 19-6 Dimension Produit modifiée sans références de calcul aval

Essbase calcule désormais :
-
Le membre prototype P100-20 avant de calculer le membre partagé P100-20. Ainsi, P100-20 n'a plus de référence de calcul aval.
-
Le prototype de membre P300-20 avant le membre partagé P300-20. Ainsi, P300-20 n'a plus de référence de calcul aval.
-
Le membre avec une formule, P300-20, avant le membre P500-20. Ainsi, P500-20 n'a plus de référence de calcul aval.