Eseguire il trace dei calcoli

Utilizzare il trace dei calcoli Essbase per ottenere approfondimenti sull'elaborazione della formula membro in modo da facilitare il debug e il perfezionamento degli script di calcolo della memorizzazione a blocchi. Abilitare CALCTRACE per il trace dei calcoli sensibile al contesto di Smart View oppure usare il comando SET TRACE per selezionare le intersezioni di cui eseguire il trace.

La funzione di trace dei calcoli consente di accedere alle informazioni relative a un calcolo registrate dopo l'esecuzione riuscita di uno script di calcolo su un cubo.

L'esecuzione del trace di un calcolo non modifica il funzionamento del calcolo. Se un calcolo viene avviato in Smart View e un amministratore ha abilitato il trace dei calcoli nel server connesso, Smart View visualizzerà una finestra di dialogo popup con i dettagli al termine dell'esecuzione del calcolo. Le informazioni di trace dei calcoli visualizzate nella finestra di dialogo popup possono essere incollate in un editor di testo. In alternativa, è possibile trovare le stesse informazioni in calc_trace.txt, che si trova nella directory di file del database in Essbase.

Le informazioni del trace dei calcoli facilitano l'esecuzione degli script di calcolo di debug, nel caso in cui i risultati del calcolo non siano quelli previsti.

Il trace dei calcoli non è supportato nelle applicazioni con gestione degli scenari abilitata.

Per abilitare il tracciamento dei calcoli, l'amministratore deve attivare preventivamente il parametro della configurazione applicazione CALCTRACE. Dopo aver abilitato il trace dei calcoli per l'applicazione, esistono due modi per sfruttarne le caratteristiche:

  • in Smart View è possibile utilizzare il trace contestuale per un singolo valore di cella;
    1. in Smart View collegare un foglio di query all'applicazione per la quale è stato abilitato il trace dei calcoli.
    2. Evidenziare la cella di dati per la quale si desidera eseguire il trace del valore calcolato.
    3. Nel Pannello dati della scheda Essbase fare clic sul pulsante Calcola e selezionare lo script di calcolo da eseguire. Verrà visualizzato il punto di vista dalla cella di dati nei prompt di runtime dei membri del trace.
    4. Fare clic su Avvia per eseguire lo script di calcolo.

      Il calcolo interesserà l'ambito completo contenuto nello script, ma durante l'operazione il trace riguarderà solo il contesto della cella di dati evidenziata.

    5. Al termine dell'esecuzione dello script di calcolo esaminare la finestra di dialogo Risultato calcolo, che mostra i risultati precedenti e successivi al calcolo per la cella di dati evidenziata.

      Se la cella di dati evidenziata non è stata modificata durante il calcolo, verrà visualizzato un messaggio per indicare tale condizione.

  • Negli script di calcolo è possibile utilizzare il comando del calcolo SET TRACE per selezionare le intersezioni dati di cui eseguire il TRACE. SET TRACE consente di eseguire il trace di più celle dati. È inoltre possibile eseguire il TRACE delle sezioni degli script di calcolo utilizzando una combinazione di SET TRACE mbrList (per attivare la traccia di calcolo su una lista di membri) e SET TRACE OFF (per disabilitare la traccia di calcolo finché non viene rilevato un nuovo comandi SET TRACE nello script). Per utilizzare il comando SET TRACE, è necessario eseguire lo script di calcolo al di fuori di Smart View, utilizzando Cube Designer, il comando CLI calc, un job Esegui calcolo nell'interfaccia Web di Essbase o MaxL (istruzione Esegui calcolo).

Lo script di calcolo riportato di seguito viene eseguito su Sample Basic. Lo script include un comando SET TRACE per la richiesta di registrazione di informazioni dettagliate per l'intersezione dati (cella) che rappresenta la vendita di gennaio a budget, nel mercato California, per il numero SKU di prodotto 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;

Nota

È inoltre consigliato il comando SET TRACEID per evitare che il file di trace di calcolo venga sovrascritto.

Sample Basic contiene due dimensioni sparse: Product e Market. La formula membro è in Sales, un membro della dimensione densa Measures. La lista dei membri dell'istruzione FIX contiene soltanto il membro sparso California, che appartiene alla dimensione Market.

Il numero di blocchi esistenti nell'ambito FIX determina il numero di esecuzioni del calcolo della cella interessata dal trace. In questo esempio, il calcolo viene eseguito su tutte le combinazioni di membri sparsi esistenti di California. Ognuna di queste combinazioni rappresenta un blocco.

Al termine dell'esecuzione del calcolo, vengono registrate e visualizzate le informazioni di trace seguenti in 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;
)

Il log di trace dei calcoli fornisce gli approfondimenti seguenti sul funzionamento del calcolo sulla cella di cui è stato eseguito il trace.

  • La cella interessata dal trace è stata calcolata numerose volte e il valore della cella è stato sovrascritto ogni volta con il nuovo valore (il conteggio degli aggiornamenti della cella segnalato si arresta a 8).

  • Il valore della cella, prima del calcolo, era 840.00.

  • Per ogni ricorrenza del calcolo vengono mostrati i valori dipendenti e i nuovi valori. I valori dipendenti provengono dalla formula membro nell'istruzione FIX.

  • Il valore finale della cella tracciata, al termine di tutti i calcolo, è 9, ma rappresenta il valore del prodotto "400-20"->California diviso per 10.

  • Le righe 91-93 dello script di calcolo, che contengono una formula membro per Sales, sono responsabili dei valori aggiornati.

Per ognuno dei blocchi interessati, Sales viene calcolato con questa formula:

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

La formula contiene un membro sparso a sinistra, che potrebbe far sì che il blocco di calcolo effettivo sia diverso dal blocco FIX iniziale. Ad esempio quando il calcolo raggiunge "California"->"100-20", i calcoli vengono effettivamente eseguiti in "California"->"100-10".

Le voci dei log di trace intitolate Block from FIX scope e Actual block used in calculation vengono stampate solo se esiste una discrepanza tra il blocco nell'istruzione FIX e il blocco rappresentato nella formula membro. Queste voci del log possono fornire indicazioni utili a capire la causa dell'esecuzione di calcoli duplicati, facilitando il debug degli script di calcolo.