Calcul ascendant et descendant

Dans un cube en mode "block storage" Essbase, les calculs descendants sont moins efficaces que les calculs ascendants, car plus de blocs sont calculés que nécessaire. Dans certains cas, des calculs descendants peuvent être nécessaires pour garantir l'exactitude des résultats.

Essbase effectue un calcul complet d'une outline de base de données à l'aide d'un calcul ascendant ou descendant. Par défaut, Essbase utilise le calcul ascendant dans les cubes en mode "block storage" qui ne sont pas en mode hybride.

Remarques :

Si votre cube utilise le mode hybride, qui est le mode par défaut dans Essbase 21c, vous pouvez ignorer les informations de cette rubrique. Les cubes en mode hybride sont déjà optimisés pour l'analyse dynamique des dépendances. Pour en savoir plus, voir Adopter le mode hybride pour le traitement analytique rapide.

Pour un calcul ascendant, Essbase détermine les blocs de données à calculer avant de calculer le cube. Essbase calcule ensuite uniquement les blocs qui doivent être calculés. Le calcul commence par le bloc existant dont le numéro de bloc est le plus petit et s'effectue dans l'ordre des numéros jusqu'à ce que le bloc existant dont le numéro de bloc est le plus élevé soit atteint. Voir Ordre de calcul des blocs.

Si l'outline contient une formule de membre complexe, Essbase effectue un calcul descendant pour le membre concerné.

Calculs ascendants et formules simples

Pour les formules simples, Essbase effectue un calcul ascendant afin de déterminer les blocs à calculer avant d'exécuter le calcul complet. Par exemple, pour une formule simple sur un membre (par exemple, A = B + C), A est calculé uniquement si B ou C existe dans la base de données. Autrement dit, la dépendance de la formule sur B et C est connue avant le début du calcul.

Calculs descendants et formules complexes

Avant de lancer un calcul, Essbase effectue une recherche dans l'outline et marque les formules complexes qui nécessitent un calcul descendant ; par exemple, une formule de membre contenant une référence interdimensionnelle. Lorsque Essbase atteint un membre avec une formule descendante, il effectue un calcul descendant pour le membre.

Lorsqu'une formule sur un membre est complexe, tous les blocs possibles pour le membre doivent être examinés pour voir si un bloc existant doit être modifié ou un bloc créé. Il est difficile de déterminer la dépendance que les blocs ont sur d'autres blocs avant le début du calcul. La méthode descendante ralentit les performances de calcul car Essbase doit rechercher les blocs appropriés à calculer pour exécuter la formule.

Lorsqu'une formule est compilée, si la formule doit être calculée de haut en bas, Essbase consigne un message dans le fichier journal de l'application.

Considérez la formule complexe suivante :

A = B -> D + C -> D

Pour calculer la formule, Essbase doit examiner toutes les combinaisons de A pour déterminer si B -> D ou C -> D existe.

Reportez-vous à Formules complexes de membres Essbase.

Forcer un calcul ascendant

Si cela est approprié pour le site, vous pouvez forcer un calcul ascendant sur une formule descendante.

Pour forcer un calcul ascendant, utilisez l'une des méthodes suivantes :

Le fait de forcer un calcul ascendant sur une formule augmente généralement le temps de performance. Si la formule contient des fonctions complexes (par exemple, des fonctions de plage) ou si les dépendances de la formule ne sont pas simples, un calcul ascendant peut produire des résultats différents de ceux d'un calcul descendant.

Attention :

Avant de modifier le paramètre CALCOPTFRMLBOTTOMUP ou d'utiliser la commande de script de calcul SET FRMLBOTTOMUP dans un environnement de production, vérifiez la validité des résultats de calcul en comparant, par rapport aux mêmes données, les résultats d'un calcul ascendant et les résultats d'un calcul descendant.