Utilisez le traçage de calcul Essbase pour mieux comprendre le traitement des formules de membre, ce qui vous permet de déboguer et d'affiner vos scripts de calcul de stockage par blocs. Activez CALCTRACE pour un traçage de calcul contextuel Smart View, ou utilisez la commande SET TRACE pour sélectionner les intersections de données à tracer.
Le traçage de calcul vous permet d'accéder aux informations enregistrées concernant un calcul, après l'exécution réussie du script de calcul sur un cube.
Le traçage d'un calcul ne modifie en rien le comportement de calcul. Si un calcul est lancé dans Smart View et si le traçage de calcul est activé par un administrateur sur le serveur connecté, Smart View affiche des détails dans une boîte de dialogue contextuelle au terme de l'exécution du calcul. Les informations de traçage de calcul peuvent être collées à partir de la boîte de dialogue contextuelle dans un éditeur de texte. Sinon, ces informations sont aussi disponibles dans calc_trace.txt
, situé dans le répertoire des fichiers de base de données dans Essbase.
Les informations de traçage de calcul peuvent vous aider à déboguer l'exécution d'un script de calcul si les résultats du calcul sont inattendus.
Le traçage de calcul n'est pas pris en charge par les applications pour lesquelles la gestion de scénario est activée.
Pour activer le traçage de calcul, l'administrateur doit d'abord activer le paramètre de configuration de l'application CALCTRACE. Une fois que le traçage de calcul est activé pour l'application, deux moyens vous permettent d'en tirer parti.
L'étendue complète du calcul contenu dans le script sera calculée, mais seul le contexte de la cellule de données en surbrillance sera tracée pendant le calcul.
Si la cellule de données en surbrillance n'a pas été modifiée pendant le calcul, vous verrez un message l'indiquant.
SET TRACE mbrList
(pour activer le traçage de calcul sur la liste de membres) et SET TRACE OFF
(pour le désactiver jusqu'à une nouvelle commande SET TRACE dans le script). Pour utiliser la commande SET TRACE, vous devez exécuter le script de calcul en dehors de Smart View, à l'aide du concepteur de cube, de la commande calc de l'interface de ligne de commande, d'une tâche Exécuter un calcul dans l'interface Web d'Essbase ou de MaxL (énoncé exécuter un calcul).Le script de calcul suivant est exécuté sur Sample Basic. Le script inclut une commande SET TRACE qui requiert l'enregistrement d'informations détaillées pour l'intersection de données (cellule) représentant les ventes budgétisées en janvier, pour le marché "Californie", pour le numéro de produit UGS 100-10.
SET TRACEID "id042" SET TRACE ("100-10", "California", "Jan", "Sales", "Budget"); FIX("California", "Budget") "Sales" ( "100-10" = @MEMBER(@CONCATENATE(@NAME(@PARENT("Product")), "-20")) / 10; ); ENDFIX;
Note :
La commande SET TRACEID est également recommandée pour éviter que votre fichier de traçage de calcul ne soit remplacé.Sample Basic propose deux dimensions dispersées : Produit et Marché. La formule de membre se trouve sur Sales (Ventes), un membre de Mesures, qui constitue une dimension dense. La liste de membre de l'énoncé FIX ne contient qu'un membre dispersé, "Californie", qui appartient à la dimension Marché.
Le nombre de blocs présent dans la portée FIX détermine le nombre de calculs de la cellule tracée. Dans cet exemple, le calcul se répète pour toutes les combinaisons existantes de membres dispersés de "Californie". Chacune de ces combinaisons représente un bloc.
Une fois le calcul terminé, les informations de traçage suivantes sont enregistrées et affichées dans calc_trace_id042.txt
:
Tracing cell: [100-10][California][Jan][Sales][Budget] (Cell update count: 1) Previous value: 840.00 Dependent values: [100-20][California][Jan][Sales][Budget] = 140.00 New value: [100-10][California][Jan][Sales][Budget] = 14.00 Computed in lines: [91 - 93] using: "Sales"( "100-10"=@MEMBER(@CONCATENATE(@NAME(@PARENT("Product")),"-20"))/10; ) Tracing cell: [100-10][California][Jan][Sales][Budget] (Cell update count: 2) Block from FIX scope: [100-30][California] Actual block used in calculation: [100-10][California] Previous value: 14.00 Dependent values: [100-20][California][Jan][Sales][Budget] = 140.00 New value: [100-10][California][Jan][Sales][Budget] = 14.00 Computed in lines: [91 - 93] using: "Sales"( "100-10"=@MEMBER(@CONCATENATE(@NAME(@PARENT("Product")),"-20"))/10; ) Tracing cell: [100-10][California][Jan][Sales][Budget] (Cell update count: 3) Block from FIX scope: [200-10][California] Actual block used in calculation: [100-10][California] Previous value: 14.00 Dependent values: [200-20][California][Jan][Sales][Budget] = 520.00 New value: [100-10][California][Jan][Sales][Budget] = 52.00 Computed in lines: [91 - 93] using: "Sales"( "100-10"=@MEMBER(@CONCATENATE(@NAME(@PARENT("Product")),"-20"))/10; ) [...calc iterations 4-7 are omitted from example...] Tracing cell: [100-10][California][Jan][Sales][Budget] (Cell update count: 8) Block from FIX scope: [400-30][California] Actual block used in calculation: [100-10][California] Previous value: 9.00 Dependent values: [400-20][California][Jan][Sales][Budget] = 90.00 New value: [100-10][California][Jan][Sales][Budget] = 9.00 Computed in lines: [91 - 93] using: "Sales"( "100-10"=@MEMBER(@CONCATENATE(@NAME(@PARENT("Product")),"-20"))/10; )
Le journal de traçage de calcul fournit les indications suivantes à propos du fonctionnement du calcul sur la cellule tracée :
La cellule tracée a été calculée plusieurs fois et la valeur de la cellule a été remplacée chaque fois par la nouvelle valeur (le compte de mise à jour de cellule s'arrête à 8).
La valeur de la cellule avant le calcul s'élevait à 840,00.
Pour chaque répétition du calcul, les valeurs dépendantes et les nouvelles valeurs s'affichent. Les valeurs dépendantes proviennent de la formule de membre dans l'énoncé FIX.
La valeur finale de la cellule tracée, à la fin de tous les calculs, est 9, mais elle représente la valeur du produit "400-20"->California
divisée par 10.
Les lignes 91 à 93 du script de calcul, qui contiennent une formule de membre applicable à "Sales", sont responsables des valeurs mises à jour.
Pour chacun des blocs ayant fait l'objet d'un calcul, la valeur Sales (Ventes) est calculée à l'aide de la formule :
"100-10"=@MEMBER(@CONCATENATE(@NAME(@PARENT("Product")),"-20"))/10
La formule contient un membre dispersé sur le côté gauche susceptible de causer une différence entre la valeur réelle du bloc de calcul et celle du bloc FIX initial. Par exemple, lorsque le calcul se répète pour "Californie"->"100-20", les calculs sont réellement effectués sur la base de "Californie"->"100-10".
Les entrées du journal de trace intitulées Block from FIX scope
et Actual block used in calculation
n'apparaissent que s'il existe un écart entre les blocs de l'énoncé FIX et le bloc représenté dans la formule de membre. Ces entrées de journal peuvent fournir des indications qui expliquent la présence de calculs en double vous aidant ainsi à déboguer vos scripts de calcul.