Test condizionali
È possibile definire formule di Essbase che utilizzano un test condizionale o una serie di test condizionali per controllare il flusso di calcolo. In combinazione con i comandi di flusso, è possibile utilizzare funzioni booleane che restituiscono TRUE o FALSE (1 o 0, rispettivamente) in base al risultato del test.
I comandi IF e ENDIF definiscono un blocco condizionale. Le formule tra i comandi IF e ENDIF vengono eseguite solo se il test restituisce TRUE (1). Se la verifica restituisce FALSE (0), è possibile utilizzare i comandi ELSE e ELSEIF per specificare azioni alternative. Le formule che seguono ogni comando ELSE vengono eseguite solo se il test precedente restituisce FALSE (0). Le condizioni che seguono ogni comando ELSEIF vengono testate solo se il precedente comando IF restituisce FALSE (0).
Quando si utilizza una formula condizionale in uno script di calcolo, racchiuderla tra parentesi e associarla a un membro nel profilo del database, come mostrato negli esempi in questa sezione.
In combinazione con un comando IF, è possibile utilizzare funzioni che restituiscono TRUE o FALSE (1 o 0, rispettivamente) in base al risultato di un test condizionale. Queste funzioni sono note come Funzioni booleane.
Utilizzare le funzioni booleane per determinare la formula da utilizzare. La decisione si basa sulle caratteristiche della combinazione di membri corrente. Ad esempio, per limitare un determinato calcolo ai membri della dimensione Prodotto che contengono dati di input, eseguire la prefazione del calcolo con un test IF basato su @ISLEV(Product,0).
Se uno dei parametri della funzione è un membro cross-dimensionale, ad esempio @ISMBR(Sales -> Budget), tutte le parti del membro cross-dimensionale devono corrispondere alle proprietà della cella corrente per restituire un valore TRUE (1).
Le seguenti funzioni booleane specificano le condizioni:
Tabella 17-3 Elenco delle funzioni booleane che testano le condizioni
| Funzione | Condizione |
|---|---|
|
Il membro corrente ha un tag conto specificato (ad esempio, un tag Spese) |
|
|
Il membro attuale è predecessore del membro specificato |
|
|
Il membro attuale è un predecessore del membro specificato oppure il membro specificato stesso |
|
|
Il membro attuale è figlio del membro specificato |
|
|
Il membro attuale è un figlio del membro specificato o il membro specificato stesso |
|
|
Membro corrente è un discendente del membro specificato |
|
|
Il membro attuale è un discendente del membro specificato oppure il membro specificato. |
|
|
Il membro corrente della dimensione specificata è nella generazione specificata |
|
|
Il membro corrente della dimensione specificata si trova nel livello specificato |
|
|
Il membro corrente corrisponde a qualsiasi membro specificato |
|
|
Il membro attuale è l'elemento padre del membro specificato |
|
|
Il membro attuale è l'elemento padre del membro specificato o il membro specificato |
|
|
Il membro attuale (della stessa dimensione del membro specificato) è nella stessa generazione del membro specificato |
|
|
Il membro attuale (della stessa dimensione del membro specificato) si trova nello stesso livello del membro specificato |
|
|
Il membro attuale è un pari livello del membro specificato |
|
|
Il membro attuale è un pari livello del membro specificato oppure il membro specificato stesso |
|
|
Esiste un attributo definito dall'utente specificato per il membro corrente della dimensione specificata |
Quando si inseriscono formule nel profilo del database, è possibile utilizzare solo i comandi IF, ELSE, ELSEIF e ENDIF e le funzioni booleane per controllare il flusso dei calcoli. È possibile utilizzare comandi di controllo aggiuntivi in uno script di calcolo.
Per informazioni su come sviluppare script di calcolo e su come utilizzarli per controllare il modo in cui Essbase calcola un database, vedere Sviluppo di script di calcolo per cubi di memorizzazione a blocchi.