Modification de l'ordre de calcul dans le calcul dynamique
Calcul dynamique optimise les performances du calcul par lots et modifie l'ordre dans lequel Essbase calcule les valeurs. Les dimensions dispersées sont calculées en premier. Prenez des précautions lorsque vous utilisez Calcul dynamique dans des jeux de données asymétriques ou avec des membres à deux passes.
L'utilisation de valeurs de données calculées dynamiquement modifie l'ordre dans lequel Essbase calcule les valeurs et peut avoir des implications sur la façon dont vous administrez le cube.
Ordre de calcul pour le calcul dynamique
Lorsque vous utilisez Calcul dynamique, Essbase calcule d'abord les valeurs des dimensions dispersées, puis des dimensions denses. Les valeurs denses sont calculées dans l'ordre des comptes, du temps, des séries temporelles, des autres dimensions denses et, enfin, des attributs.
Lorsque Essbase calcule dynamiquement les valeurs de données, il calcule les données dans un ordre différent de l'ordre de calcul de la base de données batch.
Lors des calculs par lots, Essbase calcule la base de données dans l'ordre suivant :
-
Dimension marquée comme comptes
-
Dimension marquée comme temps
-
Autres dimensions denses (dans l'ordre dans lequel elles apparaissent dans l'outline de la base de données)
-
Autres dimensions dispersées (dans l'ordre dans lequel elles apparaissent dans l'outline de la base de données)
-
Calculs à deux passages
Reportez-vous à Ordre de calcul de la base de données Block Storage.
Pour les valeurs calculées dynamiquement, lors de l'extraction, Essbase calcule les valeurs en calculant la base de données dans l'ordre suivant :
-
Dimensions dispersées
-
Si la dimension marquée comme temps est dispersée et que l'outline de la base de données utilise des données de séries temporelles, Essbase base le calcul dispersé sur la dimension Temps.
-
Sinon, Essbase base le calcul sur la dimension qu'il utilise normalement pour un calcul par lots.
-
-
Dimensions denses
-
Dimension marquée comme comptes, si dense
-
Dimension marquée comme temps, si dense
-
Calculs de séries temporelles
-
Dimensions denses restantes
-
Calculs à deux passages
-
Attributs
-
Si votre extraction de données utilise des membres d'attribut, la dernière étape de l'ordre de calcul est la somme des attributs. Le calcul d'attribut effectue une agrégation à la volée sur les blocs de données qui correspondent aux membres d'attribut spécifiés dans la requête. Lorsque la requête contient des membres de calcul à deux passes, le calcul d'attribut applique la formule de membre de calcul à deux passes une fois toutes les valeurs agrégées collectées. Ce calcul à deux passes utilise les valeurs de données du calcul d'attribut, et non les valeurs d'un bloc de données réel.
Si vous utilisez des membres d'attribut dans votre requête, Essbase ignore la valeur du membre d'équilibre temps dans les calculs dynamiques. Lors des extractions qui n'utilisent pas d'attributs, la valeur du membre Time Balance est appliquée aux calculs. La différence de procédure de calcul entre l'utilisation et la non-utilisation de membres d'attribut génère des résultats différents pour tous les membres temporels de niveau supérieur qui sont calculés dynamiquement.
Lors des extractions qui n'utilisent pas d'attributs, ces membres calculés dynamiquement sont calculés à la dernière étape et, par conséquent, appliquent correctement la fonctionnalité d'équilibre temps. Cependant, lors des extractions qui utilisent des attributs, la somme de l'attribut est la dernière étape appliquée. La différence d'ordre de calcul produit deux résultats différents et prévisibles pour les membres temporels de niveau supérieur qui sont calculés dynamiquement.
Ordre de calcul pour le calcul dynamique des membres à deux passes
Calcul dynamique modifie l'ordre dans lequel Essbase calcule les valeurs. Prenez des précautions lors de l'utilisation de l'option Calcul dynamique avec des membres à deux passes. Envisagez plutôt d'utiliser le mode hybride avec l'ordre de résolution.
Tenez compte des informations suivantes pour vous assurer qu'Essbase génère le résultat de calcul requis lorsqu'il calcule dynamiquement les valeurs de données des membres balisés en tant que deux passes (reportez-vous à Calcul à deux passes).
Remarques :
N'utilisez pas le calcul à deux passes avec les cubes en mode hybride. Utilisez uniquement solve order.
Si plusieurs membres de dimension dense Calcul dynamique sont marqués comme deux passes, Essbase effectue le calcul dynamique lors de la première passe, puis calcule les membres à deux passes dans l'ordre suivant :
-
Membres à deux passes dans la dimension Comptes, le cas échéant
-
Membres à deux passes dans la dimension Temps, le cas échéant
-
Membres à deux passes dans les dimensions denses restantes dans l'ordre dans lequel les dimensions apparaissent dans l'outline
Par exemple, dans la base de données Sample.Basic, supposons ce qui suit :
-
Le pourcentage de marge dans la dimension Mesures denses (dimension marquée comme comptes) est marqué comme Calcul dynamique et deux passes.
-
La variance dans la dimension Scénario dense est marquée comme Calcul dynamique et deux passes.
Essbase calcule d'abord le membre de dimension Comptes. Par conséquent, Essbase calcule le pourcentage de marge (à partir de la dimension Mesures), puis la variance (à partir de la dimension Scénario).
Si la dimension Scénario est dispersée, Essbase calcule d'abord la variance, en suivant l'ordre de calcul standard pour les calculs dynamiques. Essbase calcule ensuite Margin%. Reportez-vous à Ordre de calcul pour le calcul dynamique.
Cet ordre de calcul ne produit pas le résultat requis, car Essbase doit calculer le pourcentage de marge -> Ecart à l'aide de la formule % de marge et non de la formule Ecart. Vous pouvez éviter ce problème en faisant du scénario une dimension dense. Ce problème ne se produit pas si la dimension Mesures (la dimension Comptes) est dispersée, car Essbase calcule toujours le pourcentage de marge en premier.
Ordre de calcul pour les données asymétriques
Le calcul dynamique Essbase peut ne pas être adapté à une utilisation avec des ensembles de données asymétriques. Consultez les exemples de cette rubrique par rapport à votre cas d'emploi.
Etant donné que l'ordre de calcul de calcul dynamique diffère de celui des calculs par lots, dans certains plans d'exécution de cube, vous pouvez obtenir des résultats de calcul différents si vous marquez certains membres comme calcul dynamique. Ces différences se produisent lorsque Essbase calcule dynamiquement des données asymétriques.
Les calculs de données symétriques produisent les mêmes résultats, quelle que soit la dimension calculée.
A l'aide de l'ensemble de données de l'exemple symétrique ci-dessous, le calcul de Qtr1-> Profit produit le même résultat que le calcul effectué le long de la dimension marquée comme temps ou la dimension marquée comme comptes. En calculant le long de la dimension Temps, ajoutez les valeurs Jan, Feb et Mar :
50+100+150=300 En calculant le long de la dimension Comptes, soustrayez Qtr1 -> CMV de Qtr1 -> Ventes :
600–300=300 Tableau 21-1 Exemple de calcul symétrique
| Heure -> Comptes | Jan | Feb | Mar | Qtr1 |
|---|---|---|---|---|
|
Sales |
100 |
200 |
300 |
600 |
|
COGS |
50 |
100 |
150 |
300 |
|
Profit (Ventes – Coût des marchandises vendues) |
50 |
100 |
150 |
300 |
Les calculs de données asymétriques sont calculés différemment selon les dimensions.
A l'aide du jeu de données de l'exemple asymétrique ci-dessous, le calcul de East -> Sales produit le résultat correct lorsque vous effectuez un calcul sur la dimension Market, mais produit un résultat incorrect lorsque vous effectuez un calcul sur la dimension Accounts. Le calcul le long de la dimension Market, l'ajout des valeurs pour New York, Floride et Connecticut produit les résultats corrects :
50 + 100 + 100 = 250En multipliant la valeur East -> Price par la valeur East -> UnitsSold, vous obtenez des résultats incorrects :
15 * 50 = 750Tableau 21-2 Exemple de calcul asymétrique
| Marché -> Comptes | New York | Floride | Connecticut | East |
|---|---|---|---|---|
|
Unités vendues |
10 |
20 |
20 |
50 |
|
Price |
5 |
5 |
5 |
15 |
|
Ventes (Prix * Unités vendues) |
50 |
100 |
100 |
250 |
Dans l'outline suivante, East est une dimension dispersée et Accounts est une dimension dense :

Si East et Sales sont marqués comme Calcul dynamique, Essbase calcule un résultat différent de celui obtenu si East et Sales ne sont pas marqués comme Calcul dynamique.
Si East et Sales ne sont pas des membres de calcul dynamique, Essbase génère le résultat correct en calculant les dimensions suivantes :
-
Dimension Comptes denses : calcul des valeurs UnitsSold, Price et Sales pour New York, Florida et Connecticut
-
Dimension Sparse East : agrégation des valeurs calculées pour UnitsSold, Price et Sales pour New York, Florida et Connecticut afin d'obtenir les valeurs Sales pour East
Si East et Sales sont des membres de calcul dynamique, Essbase génère un résultat incorrect en calculant les dimensions suivantes :
-
Dimension Sparse East : agréger les valeurs UnitsSold, Price et Sales pour New York, Florida et Connecticut afin d'obtenir les valeurs East
-
Valeurs pour East -> Sales : prendre les valeurs agrégées dans les blocs de données East et effectuer un calcul de formule avec ces valeurs pour obtenir la valeur Sales
Pour éviter ce problème et vous assurer d'obtenir les résultats requis, ne marquez pas le membre Sales comme calcul dynamique.
Ordre de résolution en mode hybride
L'ordre de résolution dans Essbase détermine l'ordre dans lequel le calcul dynamique est exécuté en mode hybride. Vous pouvez personnaliser l'ordre de résolution ou garder celui par défaut, qui est optimisé pour des performances élevées et l'analyse des dépendances.
Le concept d'ordre de résolution s'applique à l'exécution du calcul dynamique, qu'il soit initié par une formule de membre dynamique ou une dépendance dynamique dans un script de calcul. Lorsqu'une cellule est évaluée dans une requête multidimensionnelle, l'ordre dans lequel les calculs doivent être résolus peut être ambigu, sauf si l'ordre de résolution est indiqué pour donner la priorité de calcul requise.
Vous pouvez définir l'ordre de résolution des dimensions ou des membres, ou vous pouvez utiliser l'ordre de résolution Essbase par défaut. L'ordre de résolution minimum qui peut être défini est 0 et le maximum est 127. Un ordre de résolution plus important signifie que le membre est calculé plus tard. Par exemple, un membre avec un ordre de résolution de 1 est résolu avant un membre avec un ordre de résolution de 2.
Lorsque le mode hybride est activé, l'ordre de résolution par défaut (également appelé ordre de calcul) correspond à celui des bases de données en mode "block storage" :
| Dimension/Type de membre | Valeur d'ordre de résolution par défaut |
|---|---|
| Membres stockés | 0 |
| Membres de dimension dispersée | 10 |
| Membres de dimension Compte dense | 30 |
| Membres de dimension Temps dense | 40 |
| Membres de dimension standard dense | 50 |
| Membres de dimension d'attribut | 90 |
| Membres dynamiques à deux passes | 100 |
| Ensembles nommés ou membres calculés MDX (définis dans MDX With) | 120 |
En résumé, l'ordre de résolution par défaut en mode hybride impose que les membres stockés soient calculés avant les membres de calcul dynamique et que les dimensions dispersées soient calculées avant les dimensions denses, selon l'ordre lequel ils apparaissent dans l'outline (de haut en bas).
Les membres dynamiques (avec ou sans formules) qui ne disposent pas d'un ordre de résolution indiqué héritent de l'ordre de résolution de leur dimension, sauf s'ils sont balisés comme étant à deux passes.
Le calcul à deux passes est un paramètre que vous pouvez appliquer, en mode "block storage", aux membres avec des formules qui doivent être calculées deux fois pour produire la valeur correcte.
Remarques :
N'utilisez pas le calcul à deux passes avec les cubes en mode hybride. Utilisez uniquement solve order.
Le calcul à deux passes n'étant pas applicable en mode hybride, tous les membres balisés à deux passes sont calculés en dernier, après les attributs. En mode hybride, vous devez implémenter un ordre de résolution personnalisé, au lieu du calcul à deux passes, si l'ordre de résolution par défaut ne correspond pas à vos besoins.
L'ordre de résolution par défaut en mode hybride est optimisé pour les scénarios suivants :
-
Les références d'avance, dans lesquelles une formule de membre dynamique fait référence à un membre qui arrive plus tard dans l'ordre d'outline. Il n'existe aucune dépendance d'ordre d'outline en mode hybride.
-
L'agrégation de valeurs enfant basées sur un ordre d'outline, qui correspond étroitement à l'agrégation à l'aide de formules équivalentes.
-
Les membres denses dynamiques en tant que dépendances dans des formules dispersées. En mode hybride, si une formule dispersée fait référence à un membre dynamique dense, la référence est ignorée, car les dimensions dispersées sont calculées en premier. Pour modifier cela, affectez un ordre de résolution à la dimension dispersée qui est supérieur à (calculé après) l'ordre de résolution de la dimension dense.
Personnalisation de l'ordre de résolution
Si vous avez besoin d'ajuster le comportement des calculs dynamiques en mode hybride, vous pouvez y arriver en personnalisant l'ordre de résolution des dimensions et des membres sans apporter de modifications majeures à l'outline.
Si vous implémentez un ordre de résolution personnalisé, il remplace l'ordre par défaut. Si les membres ou les dimensions possèdent le même ordre de résolution, l'ordre dans lequel ils apparaissent dans l'outline (de haut en bas) résout le conflit.
L'ordre de résolution du membre de dimension supérieur s'applique à tous les membres dynamiques de la dimension, sauf si vous avez personnalisé un ordre de résolution pour certains membres.
Pour modifier l'ordre de Résolution, utilisez l'éditeur d'outline dans l'interface Web d'Essbase ou utilisez Smart View (reportez-vous à Modification de l'ordre de Résolution d'un PDV sélectionné).
L'ordre de résolution minimum qui peut être défini est 0 et le maximum est 127. Un ordre de résolution plus élevé signifie que le membre est calculé plus tard.
Pour explorer les cas d'emploi de l'ordre de résolution, reportez-vous aux modèles d'ordre de résolution dans la section technique de la galerie des classeurs d'application, que vous pouvez trouver dans le catalogue de fichiers d'Essbase.
Remarques concernant l'ordre de résolution en mode non hybride
Dans les cubes en mode "aggregate storage", procédez comme suit :
-
L'ordre de résolution est défini sur 0 pour toutes les dimensions.
-
L'agrégation est exécutée dans l'ordre de l'outline, cependant :
- Les membres de hiérarchie stockés sont traités en premier.
- Les membres de hiérarchie dynamiques sont traités ensuite.
Dans des cubes en mode "block storage" non hybride, l'ordre de résolution par défaut est le suivant :
-
dispersé avant dense
-
comptes avant heure
-
attributs en dernier
Remarques :
Si l'ordre de résolution des membres de Comptes est défini manuellement comme supérieur à l'ordre de résolution des membres de Temps, les membres de Comptes seront évalués après les membres de Série chronologique dynamique.