Références à des champs, des mesures et des variables
Une expression peut contenir des références à des champs, des variables et des mesures.
Dans la plupart des cas, les expressions sont des agrégations, c'est-à-dire des calculs qui peuvent potentiellement couvrir différents enregistrements. Cela signifie que toutes les références de champ d'une expression doivent être enveloppées dans une fonction d'agrégation. Si aucune fonction d'agrégation n'est utilisée, la fonction Only() est utilisée.
Lorsque le nom d'une mesure est utilisé à l'intérieur d'une expression, il est interprété comme un alias de la mesure. Cela vous permet de réutiliser une entité déjà définie. Vous pouvez utiliser de cette manière les étiquettes des mesures principales et des mesures de graphique. Cependant, les mesures de graphique doivent figurer dans le même graphique. Vous ne pouvez pas utiliser les étiquettes de mesures d'autres graphiques.
Vous pouvez définir une mesure de manière récursive. En d'autres termes, la mesure peut contenir une référence à elle-même. Cependant, vous devriez le faire uniquement dans des graphiques contenant quelques lignes. Si le graphique contient de nombreuses lignes, cela entraîne une dégradation des performances. S'il contient des centaines de lignes, la définition récursive finit par s'arrêter complètement.
Il existe deux manières différentes d'utiliser une variable dans une référence directe ou dans une expansion $. Si vous utilisez une référence directe, la valeur de la variable sera utilisée dans le calcul. Si vous utilisez une expansion $, l'expansion $ toute entière sera remplacée par la valeur de la variable avant l'analyse de l'expression. C'est pourquoi les deux méthodes différentes peuvent renvoyer des résultats différents.
Interprétation des noms
Un nom à l'intérieur d'une expression peut être une référence à un champ, une variable, une fonction ou une mesure. Suivant la situation, le nom est interprété différemment.
La chaîne XXX représente un champ, une variable, une fonction ou une mesure. XXX sera interprété comme l'un de ces éléments selon la façon dont vous créez l'expression.
Expression | XXX interprété comme : |
---|---|
XXX | mesure, variable ou champ |
$(XXX) | variable |
Count(XXX) | champ ou variable |
XXX() | fonction |
Vous ne devriez pas utiliser le même nom pour un champ et pour une variable (ou une mesure). Cependant, si vous le faites et qu'il existe une ambiguïté, l'ordre de priorité suivant est utilisé :
-
Si le nom se trouve à l'intérieur d'une fonction d'agrégation, un champ est prioritaire sur une variable.
-
Si le nom se trouve à l'extérieur d'une fonction d'agrégation, une étiquette de mesure est prioritaire sur un nom de variable, qui, à son tour, est prioritaire sur un nom de champ.
Règles applicables aux expressions
Les règles suivantes s'appliquent aux expressions de graphique :
-
Si une référence de champ n'est pas enveloppée dans une fonction d'agrégation, la fonction Only() est utilisée par le moteur.
-
Toutes les expressions renvoient un nombre et/ou une chaîne, selon le cas.
-
Les opérateurs et les fonctions logiques renvoient 0 pour False et -1 pour True. Les conversions de nombres en chaînes et de chaînes en nombres sont implicites.
-
Les opérateurs et les fonctions logiques interprètent 0 comme False et toutes les autres valeurs comme True.
-
Les expressions impossibles à évaluer correctement, par exemple du fait de fonctions ou de paramètres incorrects, renvoient la chaîne NULL.