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

@ISACCTYPE

Il membro corrente ha un tag conto specificato (ad esempio, un tag Spese)

@ISANCEST

Il membro attuale è predecessore del membro specificato

@ISIANCEST

Il membro attuale è un predecessore del membro specificato oppure il membro specificato stesso

@ISCHILD

Il membro attuale è figlio del membro specificato

@ISICHILD

Il membro attuale è un figlio del membro specificato o il membro specificato stesso

@ISDESC

Membro corrente è un discendente del membro specificato

@ISIDESC

Il membro attuale è un discendente del membro specificato oppure il membro specificato.

@ISGEN

Il membro corrente della dimensione specificata è nella generazione specificata

@ISLEV

Il membro corrente della dimensione specificata si trova nel livello specificato

@ISMBR

Il membro corrente corrisponde a qualsiasi membro specificato

@ISPARENT

Il membro attuale è l'elemento padre del membro specificato

@ISIPARENT

Il membro attuale è l'elemento padre del membro specificato o il membro specificato

@ISSAMEGEN

Il membro attuale (della stessa dimensione del membro specificato) è nella stessa generazione del membro specificato

@ISSAMELEV

Il membro attuale (della stessa dimensione del membro specificato) si trova nello stesso livello del membro specificato

@ISSIBLING

Il membro attuale è un pari livello del membro specificato

@ISISIBLING

Il membro attuale è un pari livello del membro specificato oppure il membro specificato stesso

@ISUDA

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.