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. Le stesse informazioni sono tuttavia disponibili anche nel file calc_trace.txt
, che si trova nella directory dei file di 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 trace dei calcoli, l'amministratore deve attivare preventivamente il parametro di configurazione applicazione CALCTRACE. Dopo aver abilitato il trace dei calcoli per l'applicazione, esistono due modi per sfruttarne le caratteristiche:
Il calcolo interesserà l'ambito completo contenuto nello script, ma durante l'operazione il trace riguarderà solo il contesto della cella di dati evidenziata.
Se la cella di dati evidenziata non è stata modificata durante il calcolo, verrà visualizzato un messaggio per indicare tale condizione.
SET TRACE mbrList
(per attivare il trace dei calcoli su una lista di membri) e SET TRACE OFF
(per disabilitare il trace di calcolo finché non viene rilevato un nuovo comando SET TRACE nello script). Per usare il comando SET TRACE è necessario eseguire lo script di calcolo al di fuori di Smart View, utilizzando Cube Designer, il comando CLI calc, un Esegui calcolo job nell'interfaccia Web di Essbase oppure MaxL (istruzione esegui calcolo).Lo script di calcolo riportato di seguito viene eseguito su Sample Basic. Lo script include un comando SET TRACE che richiede la registrazione di informazioni dettagliate per l'intersezione (cella) che rappresenta le vendite di gennaio a budget, nel mercato californiano, 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:
È consigliato anche il comando SET TRACEID per evitare la sovrascrittura del file del trace dei calcoli.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 dei 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, le informazioni di trace riportate di seguito vengono registrate e visualizzate 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 interessata dal trace, al termine di tutti i calcoli, è 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 del log di trace intitolate Block from FIX scope
(Blocco dell'ambito FIX) e Actual block used in calculation
(Blocco effettivo utilizzato nel calcolo) vengono visualizzate solo se esiste una discrepanza tra i blocchi 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.