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

@ISACCTYPE

Le membre actuel a une balise de comptes spécifiée (par exemple, une balise Expense)

@ISANCEST

Membre en cours est un ancêtre du membre indiqué

@ISIANCEST

Membre en cours est un ancêtre du membre indiqué, ou le membre indiqué lui-même

@ISCHILD

Membre en cours est un enfant du membre indiqué

@ISICHILD

Le membre actif est un enfant du membre indiqué ou un enfant du membre indiqué

@ISDESC

Le membre indiqué est un descendant du membre indiqué

@ISIDESC

Le membre actuel est un descendant du membre indiqué ou un descendant du membre indiqué

@ISGEN

Le membre actuel de la dimension indiquée se trouve dans la génération indiquée

@ISLEV

Le membre actuel de la dimension indiquée se situe au niveau indiqué

@ISMBR

Le membre en cours correspond à l'un des membres indiqués

@ISPARENT

Membre en cours est le parent du membre indiqué

@ISIPARENT

Ce membre est le parent du membre indiqué ou le membre indiqué lui-même

@ISSAMEGEN

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é

@ISSAMELEV

Le membre en cours (de la même dimension que le membre spécifié) est au même niveau que le membre spécifié

@ISSIBLING

Membre en cours est un semblable du membre indiqué

@ISISIBLING

Le membre indiqué est un semblable du membre indiqué, ou un semblable du membre indiqué

@ISUDA

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".