Calcolo bottom-up e top-down
In un cubo di memorizzazione a blocchi Essbase, i calcoli dall'alto verso il basso sono meno efficienti dei calcoli dal basso verso l'alto, poiché vengono calcolati più blocchi di quanto necessario. In alcuni casi possono essere necessari calcoli top-down per garantire che i risultati del calcolo siano corretti.
Essbase esegue un calcolo completo di un profilo di database utilizzando il calcolo bottom-up o il calcolo top-down. Per impostazione predefinita, Essbase utilizza il calcolo bottom-up nei cubi di memorizzazione a blocchi che non sono in modalità ibrida.
Nota
Se il cubo utilizza la modalità ibrida, che è quella predefinita in Essbase 21c, è possibile saltare le informazioni in questo argomento. I cubi della modalità ibrida sono già ottimizzati per l'analisi dinamica delle dipendenze. Per ulteriori informazioni, vedere Adotta la modalità ibrida per l'elaborazione analitica rapida.Per un calcolo bottom-up, Essbase determina quali blocchi di dati devono essere calcolati prima di calcolare il cubo. Essbase calcola quindi solo i blocchi da calcolare. Il calcolo inizia con il blocco esistente con il numero di blocco più basso e funziona attraverso ogni blocco in ordine di numero fino a raggiungere il blocco esistente con il numero di blocco più alto. Vedere Ordine di calcolo a blocchi.
Se il profilo contiene una formula membro complesso, Essbase esegue un calcolo dall'alto verso il basso per il membro pertinente.
Calcoli bottom-up e formule semplici
Per le formule semplici, Essbase esegue un calcolo bottom-up per determinare i blocchi da calcolare prima di eseguire il calcolo completo. Ad esempio, per una formula semplice su un membro (ad esempio A = B + C), A viene calcolato solo se B o C esiste nel database. Cioè, la dipendenza della formula su B e C è nota prima che il calcolo sia iniziato.
Calcoli dall'alto verso il basso e formule complesse
Prima di iniziare un calcolo, Essbase esegue la ricerca nel profilo e contrassegna formule complesse che richiedono un calcolo dall'alto verso il basso, ad esempio una formula membro contenente un riferimento cross-dimensionale. Quando Essbase raggiunge un membro con una formula dall'alto verso il basso, esegue un calcolo dall'alto verso il basso per il membro.
Quando una formula su un membro è complessa, tutti i blocchi possibili per il membro devono essere esaminati per vedere se un blocco esistente deve essere cambiato o un nuovo blocco creato; è difficile determinare la dipendenza che i blocchi hanno su altri blocchi prima dell'inizio del calcolo. Il metodo dall'alto verso il basso rallenta le prestazioni di calcolo perché Essbase deve cercare i blocchi appropriati da calcolare per eseguire la formula.
Quando viene compilata una formula, se la formula deve essere calcolata dall'alto verso il basso, Essbase registra un messaggio nel file di log dell'applicazione.
Si consideri la seguente formula complessa:
A = B -> D + C -> DPer calcolare la formula, Essbase deve esaminare tutte le combinazioni di A per vedere se esiste B -> D o C -> D.
Fare riferimento alla sezione Formule membro Essbase complesse.
Esecuzione forzata di un calcolo bottom-up
Se è appropriato per il sito, è possibile forzare un calcolo bottom-up su una formula top-down.
Per forzare un calcolo bottom-up, utilizzare uno dei metodi riportati di seguito.
-
Funzione di calcolo: @CALCMODE in una formula
-
Comando script di calcolo: SET FRMLBOTTOMUP
-
Impostazioni di configurazione:
La forzatura di un calcolo bottom-up su una formula in genere aumenta i tempi di prestazione. Se la formula contiene funzioni complesse (ad esempio, funzioni intervallo) o se le dipendenze della formula non sono semplici, un calcolo bottom-up può produrre risultati diversi da quelli di un calcolo top-down.
Attenzione
Prima di modificare l'impostazione CALCOPTFRMLBOTTOMUP o utilizzare il comando script di calcolo SET FRMLBOTTOMUP in un ambiente di produzione, verificare la validità dei risultati di calcolo confrontando, rispetto agli stessi dati, i risultati di un calcolo bottom-up e i risultati di un calcolo top-down.