Formule negli script di calcolo
Quando si definiscono formule di Essbase negli script di calcolo, queste hanno la precedenza su qualsiasi formula applicata ai membri nel profilo del cubo. L'utilizzo delle formule in questo modo offre ai calcoli batch ulteriore flessibilità oltre alle relazioni codificate nella struttura del cubo.
È possibile scrivere formule per calcolare utilizzando equazioni di base, equazioni condizionali e formule interdipendenti.
In uno script di calcolo Essbase è possibile eseguire entrambe le operazioni riportate di seguito.
-
Calcolare una formula membro esistente nel profilo cubo
-
Definire una nuova formula che dura per la durata dell'esecuzione dello script di calcolo
Per calcolare una formula esistente applicata a un membro nel profilo, utilizzare il nome del membro seguito da un punto e virgola (;). Ad esempio, il comando seguente in uno script di calcolo calcola la formula applicata al membro Variance nel profilo:
Variance;Per eseguire l'override dei valori risultanti dal calcolo del profilo, è possibile applicare manualmente una formula nello script di calcolo. Ad esempio, la seguente formula in uno script di calcolo esegue il ciclo del cubo, aggiungendo i valori nei membri Ciclo paghe, Marketing e Varie e inserendo il risultato nel membro Spese. Questa formula sostituisce qualsiasi formula inserita nel membro Expenses nel profilo:
Expenses = Payroll + Marketing + Misc;Nota
Non è possibile applicare formule ai membri condivisi o solo ai membri etichetta.
Vedere anche: Sviluppo di formule per cubi di storage a blocchi.
Equazioni di base negli script di calcolo di Essbase
Negli script di calcolo di Essbase, è possibile utilizzare le equazioni per assegnare valori ai membri del profilo cubo. L'assegnazione dura per la durata dell'esecuzione dello script di calcolo.
La sintassi di un'equazione in uno script di calcolo Essbase è la seguente:
member = mathematical_expression;membro è un nome membro della struttura e espressione_mathematical è qualsiasi espressione matematica valida.
Essbase valuta l'espressione e assegna il valore al membro specificato.
Nell'esempio seguente, Essbase esegue il ciclo del database, sottraendo i valori in COGS dai valori in Sales e inserendo il risultato in Margin:
Margin = Sales - COGS;In questo esempio, Essbase esegue il ciclo nel database, sottraendo i valori in Costo dai valori in Retail, calcolando i valori risultanti come percentuale dei valori in Retail e inserendo i risultati in Markup:
Markup = (Retail - Cost) % Retail;È inoltre possibile utilizzare gli operatori logici > (maggiore di) e < (minore di) nelle equazioni.
Nell'esempio seguente, se le vendite di febbraio sono maggiori delle vendite di gennaio, il flag Aumento vendite restituisce un valore pari a 1; se false, il risultato è un valore pari a 0:
Sales Increase Flag = Sales -> Feb > Sales -> Jan;Equazioni condizionali negli script di calcolo di Essbase
È possibile utilizzare equazioni condizionali nelle formule degli script di calcolo di Essbase per definire la logica if/else e controllare il flusso di eventi durante il calcolo.
Quando si utilizza un'istruzione IF come parte di una formula membro in uno script di calcolo, è necessario:
-
Associare l'istruzione IF a un singolo membro
-
Racchiudere l'istruzione IF tra parentesi
Nell'esempio seguente, l'intera istruzione IF…ENDIF è racchiusa tra parentesi e associata al membro Profit, Profit (IF(...)...):
Profit
(IF (Sales > 100)
Profit = (Sales - COGS) * 2;
ELSE
Profit = (Sales - COGS) * 1.5;
ENDIF;)Essbase esegue cicli nel database ed esegue i calcoli riportati di seguito.
-
L'estratto conto IF verifica se il valore di Vendite per la combinazione di membri corrente è maggiore di 100.
-
Se Sales è maggiore di 100, Essbase sottrae il valore in COGS dal valore in Sales, moltiplica la differenza per 2 e inserisce il risultato in Profit.
-
Se Sales è minore o uguale a 100, Essbase sottrae il valore in COGS dal valore in Sales, moltiplica la differenza per 1,5 e inserisce il risultato in Profit.
Per ulteriori informazioni sui comandi condizionali e sul controllo del flusso degli script di calcolo, vedere Gruppi di comandi di calcolo.
Formule interdipendenti negli script di calcolo di Essbase
Come per le formule nel profilo, una formula in uno script di calcolo calcola le relazioni matematiche tra i membri nel profilo del cubo Essbase.
Un buon esempio di formula interdipendente in Essbase è una valutazione del flusso di cassa, in cui il magazzino di apertura dipende dal magazzino di chiusura del mese precedente.
Quando si utilizza una formula interdipendente in uno script di calcolo, tenere presente che si applicano le stesse regole dell'istruzione IF. A questo scopo, è necessario:
-
Associare la formula a un singolo membro
-
Racchiudere la formula tra parentesi
Nell'esempio seguente, l'intera formula interdipendente è racchiusa tra parentesi e associata al membro Inventario di apertura:
"Opening Inventory"
(IF(NOT @ISMBR (Jan))
"Opening Inventory" = @PRIOR("Ending Inventory");
ENDIF;)
"Ending Inventory" = "Opening Inventory" - Sales + Additions;Formule script di calcolo e stato calcolo intelligente
Le formule sui membri delle dimensioni sparse che contengono funzioni di relazione o finanziarie causano sempre il ricalcolo, anche se il calcolo intelligente di Essbase contrassegna i blocchi come puliti.
Si supponga di disporre di una formula su un membro della dimensione sparsa e che la formula contenga uno dei seguenti tipi di funzione:
-
Relazione (ad esempio, @PRIOR o @NEXT)
-
Dati finanziari (ad esempio, @NPV o @INTEREST)
Essbase ricalcola sempre il blocco di dati che contiene la formula, anche se il blocco è contrassegnato come pulito ai fini del calcolo intelligente.
Vedere Calcolo intelligente dei blocchi di dati e Calcolo intelligente dei cubi di storage a blocchi.
Formule di gruppo e dimensioni nello script
È possibile ottenere miglioramenti significativi delle prestazioni di calcolo raggruppando accuratamente formule e dimensioni membro Essbase in uno script di calcolo.
Calcola una serie di formule membro
Quando si calcolano le formule, assicurarsi di utilizzare correttamente le parentesi.
Nell'esempio riportato di seguito, le parentesi posizionate in modo errato fanno sì che Essbase esegua due passaggi di calcolo nel cubo: una volta calcolate le formule nei membri Qtr1 e Qtr2 e una volta calcolata la formula in Qtr3:
(Qtr1;
Qtr2;)
Qtr3;Al contrario, le configurazioni riportate di seguito consentono a Essbase di scorrere il cubo una sola volta, calcolando le formule nei membri Qtr1, Qtr2 e Qtr3.
Qtr1;
Qtr2;
Qtr3;o
(Qtr1;
Qtr2;
Qtr3;)Analogamente, le formule riportate di seguito fanno sì che Essbase esegua un ciclo continuo nel cubo, calcolando entrambe le formule in un passaggio.
Profit = (Sales - COGS) * 1.5;
Market = East + West;Calcolare una serie di dimensioni
Quando si calcola una serie di dimensioni, è possibile ottimizzare le prestazioni raggruppando le dimensioni ove possibile.
Ad esempio, la formula seguente consente a Essbase di scorrere il cubo una sola volta:
CALC DIM(Year, Measures);Al contrario, la sintassi riportata di seguito consente a Essbase di scorrere il cubo due volte, una volta per ogni comando CALC DIM.
CALC DIM(Year);
CALC DIM(Measures);