Tests conditionnels
Vous pouvez définir des formules Essbase qui utilisent un test conditionnel ou une série de tests conditionnels pour contrôler le flux de calcul. En conjonction avec les commandes de flux, vous pouvez utiliser des fonctions booléennes qui renvoient TRUE ou FALSE (respectivement 1 ou 0) en fonction du résultat du test.
Les commandes IF et ENDIF définissent un bloc conditionnel. Les formules entre les commandes IF et ENDIF ne sont exécutées que si le test renvoie TRUE (1). Si le test renvoie FALSE (0), vous pouvez utiliser les commandes ELSE et ELSEIF pour spécifier d'autres actions. Les formules qui suivent chaque commande ELSE ne sont exécutées que si le test précédent renvoie FALSE (0). Les conditions qui suivent chaque commande ELSEIF ne sont testées que si la commande IF précédente renvoie FALSE (0).
Lorsque vous utilisez une formule conditionnelle dans un script de calcul, placez-la entre parenthèses et associez-la à un membre de l'outline de la base de données, comme indiqué dans les exemples de cette section.
En conjonction avec une commande IF, vous pouvez utiliser des fonctions qui renvoient TRUE ou FALSE (respectivement 1 ou 0) en fonction du résultat d'un test conditionnel. Ces fonctions sont appelées fonctions booléennes.
Utilisez les fonctions booléennes pour déterminer la formule à utiliser. La décision est basée sur les caractéristiques de la combinaison de membres actuelle. Par exemple, pour limiter un certain calcul aux membres de la dimension Product qui contiennent des données d'entrée, faites précéder le calcul d'un test IF basé sur @ISLEV(Product,0).
Si l'un des paramètres de la fonction est un membre inter-dimensionnel, tel que @ISMBR(Sales -> Budget), toutes les parties du membre inter-dimensionnel doivent correspondre aux propriétés de la cellule actuelle pour renvoyer la valeur TRUE (1).
Les fonctions booléennes suivantes spécifient des conditions :
Tableau 17-3 Liste des fonctions booléennes testant des conditions
| Fonction | Condition |
|---|---|
|
Le membre actuel a une balise de comptes spécifiée (par exemple, une balise Expense) |
|
|
Membre en cours est un ancêtre du membre indiqué |
|
|
Membre en cours est un ancêtre du membre indiqué, ou le membre indiqué lui-même |
|
|
Membre en cours est un enfant du membre indiqué |
|
|
Le membre actif est un enfant du membre indiqué ou un enfant du membre indiqué |
|
|
Le membre indiqué est un descendant du membre indiqué |
|
|
Le membre actuel est un descendant du membre indiqué ou un descendant du membre indiqué |
|
|
Le membre actuel de la dimension indiquée se trouve dans la génération indiquée |
|
|
Le membre actuel de la dimension indiquée se situe au niveau indiqué |
|
|
Le membre en cours correspond à l'un des membres indiqués |
|
|
Membre en cours est le parent du membre indiqué |
|
|
Ce membre est le parent du membre indiqué ou le membre indiqué lui-même |
|
|
Le membre en cours (de la même dimension que le membre indiqué) appartient à la même génération que le membre spécifié |
|
|
Le membre en cours (de la même dimension que le membre spécifié) est au même niveau que le membre spécifié |
|
|
Membre en cours est un semblable du membre indiqué |
|
|
Le membre indiqué est un semblable du membre indiqué, ou un semblable du membre indiqué |
|
|
Un attribut défini par l'utilisateur existe pour le membre actuel de la dimension indiquée |
Lorsque vous placez des formules dans l'outline de la base de données, vous ne pouvez utiliser que les commandes IF, ELSE, ELSEIF et ENDIF et les fonctions booléennes pour contrôler le flux des calculs. Vous pouvez utiliser des commandes de contrôle supplémentaires dans un script de calcul.
Pour plus d'informations sur le développement de scripts de calcul et sur leur utilisation pour contrôler la façon dont Essbase calcule une base de données, reportez-vous à Développement de scripts de calcul pour les cubes en mode "block storage".