Traçage de calculs

Vous pouvez utiliser le traçage de calcul pour analyser le traitement des formules de membre et affiner vos scripts de calcul.

Une fois le script de calcul exécuté par rapport à un cube, le traçage de calcul permet d'accéder aux informations journalisées concernant un calcul.

Le traçage d'un calcul ne modifie en rien son comportement. Si un calcul est lancé dans Smart View et qu'un administrateur active le traçage de calcul sur le serveur connecté, Smart View affiche une boîte de dialogue instantanée contenant des détails après l'exécution du calcul. Les informations de traçage de calcul peuvent être collées dans un éditeur de texte à partir de la boîte de dialogue instantanée. Vous pouvez également trouver ces informations dans le fichier calc_trace.txt, qui se trouve dans le répertoire de fichiers de la base de données sur le service cloud.

Les informations de traçage de calcul peuvent vous aider à déboguer l'exécution du script de calcul, dans le cas où les résultats du calcul ne sont pas ceux que vous attendiez.

Le traçage de calcul n'est pas pris en charge sur les applications pour lesquelles la gestion de scénarios 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, il existe deux manières d'en tirer parti :

  • Dans Smart View, vous pouvez utiliser un traçage contextuel pour une seule valeur de cellule.
    1. Dans Smart View, connectez une feuille de requête à l'application pour laquelle vous avez activé le traçage de calcul.
    2. Mettez en surbrillance une cellule de données dont vous voulez tracer la valeur calculée.
    3. Dans le panneau Données de l'onglet Essbase, cliquez sur le bouton Calculer et sélectionnez un script de calcul à exécuter. Le point de vue s'affiche dans la cellule de données mise en surbrillance dans les invites d'exécution du membre de trace.
    4. Cliquez sur Lancer pour exécuter le script de calcul.

      La portée complète du calcul comme contenue dans le script sera calculée, mais seul le contexte de la cellule de données mise en surbrillance sera tracée lors du calcul.

    5. A la fin du script de calcul, examinez la boîte de dialogue Résultat du calcul, qui affiche les résultats avant et après le calcul pour la cellule de données mise en surbrillance.

      Si la cellule de données mise en surbrillance n'a pas été modifiée lors du calcul, un message s'affiche indiquant que la cellule n'a pas été modifiée.

  • Dans les scripts de calcul, vous pouvez utiliser la commande de calcul SET TRACE pour sélectionner les croisements de données à tracer. La commande SET TRACE permet de tracer plusieurs cellules de données. Par ailleurs, vous pouvez tracer des sections de scripts de calcul en combinant les commandes SET TRACE mbrList (pour activer le traçage de calcul sur une liste de membres) et SET TRACE OFF (pour désactiver le traçage de calcul jusqu'à ce qu'une nouvelle commande SET TRACE soit trouvée 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 cubes ou de la page Jobs du service cloud.
Le script de calcul suivant est exécuté sur Sample Basic. Le script inclut une commande SET TRACE, qui demande de journaliser des informations détaillées pour le croisement de données (cellule) qui représente les ventes budgétées pour le mois de janvier, sur le marché californien, pour la SKU de produit dont le numéro est 100-10.
SET TRACE ("100-10", "California", "Jan", "Sales", "Budget");
FIX("California", "Budget")
   "Sales" (
      "100-10" = @MEMBER(@CONCATENATE(@NAME(@PARENT("Product")), "-20")) / 10;
   );
ENDFIX;

Sample Basic comporte deux dimensions dispersées : Product et Market. La formule de membre est établie sur Sales, membre de Measures, qui est une dimension dense. La liste des membres de l'instruction FIX ne contient qu'un membre dispersé, California, qui appartient à la dimension Market.

Le nombre de blocs existants dans l'instruction FIX détermine le nombre de calculs de la cellule tracée. Dans cet exemple, le calcul parcourt toutes les combinaisons de membres dispersés existantes de California. Chacune de ces combinaisons représente un bloc.

Une fois le calcul terminé, les informations de traçage suivantes sont journalisées et affichées :

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 analyses suivantes sur le fonctionnement du calcul pour la cellule tracée :

  • La cellule tracée a été calculée plusieurs fois et la valeur de cellule a été remplacée à chaque fois par la nouvelle valeur (le décompte de mise à jour de la cellule signalée s'arrête à 8).

  • La valeur de la cellule, avant le calcul, était de 840.00.

  • Pour chaque occurrence de calcul, des valeurs dépendantes et de nouvelles valeurs sont présentes. Les valeurs dépendantes proviennent de la formule de membre dans l'instruction FIX.

  • La valeur finale de la cellule tracée une fois le calcul terminé 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 sur Sales, sont responsables des valeurs mises à jour.

Pour chacun des blocs parcourus, Sales est calculé à l'aide de la formule suivante :

"100-10"=@MEMBER(@CONCATENATE(@NAME(@PARENT("Product")),"-20"))/10

La formule contient un membre dispersé sur la gauche, qui pourrait être à l'origine de différences entre le bloc de calcul réel et le bloc FIX initial. Par exemple, lorsque le calcul parcourt "California"->"100-20", les calculs sont en réalité effectués dans "California"->"100-10".

Les entrées du journal de trace intitulées Block from FIX scope et Actual block used in calculation sont imprimées uniquement s'il existe une différence entre les blocs de l'instruction FIX et le bloc représenté dans la formule de membre. Ces entrées de journal peuvent fournir des indications sur la raison pour laquelle certains calculs sont en double, et ainsi vous aider à déboguer vos scripts de calcul.