Utiliser des opérateurs DAX
Vos formules DAX peuvent créer des expressions pouvant effectuer des calculs arithmétiques, comparer des valeurs, utiliser des chaînes ou des conditions de test à l’aide d’opérateurs.
Conseil
De nombreux opérateurs DAX et leur ordre de priorité sont les mêmes que dans Excel.
Opérateurs arithmétiques
Le tableau suivant répertorie les opérateurs arithmétiques :
| Opérateur | Description |
|---|---|
| + | Addition |
| - | Soustraction |
| * | Multiplication |
| / | Division |
| ^ | Élévation à une puissance |
N’oubliez pas que lorsque vous divisez deux expressions et que le dénominateur peut renvoyer zéro ou BLANK, il est plus efficace et plus sûr d’utiliser la fonction DIVIDE.
Opérateurs de comparaison
Le tableau suivant répertorie les opérateurs de comparaison permettant de comparer deux valeurs. Le résultat est TRUE ou FALSE.
| Opérateur | Description |
|---|---|
| = | Égal à |
| == | Strictement égal à |
| > | Supérieur à |
| < | Inférieur à |
| >= | Supérieur ou égal à |
| <= | Inférieur ou égal à |
| <> | Différent de |
Tous les opérateurs de comparaison, à l’exception de strictement égal à (==), traitent la valeur BLANK comme étant égale au nombre zéro, une chaîne vide (« »), la date du 30 décembre 1899 ou FALSE. Autrement dit, l’expression [Revenue] = 0 est TRUE lorsque la valeur de [Revenue] est zéro ou BLANK. En revanche, [Revenue] == 0 est TRUE seulement si la valeur de [Revenue] est zéro.
Opérateur de concaténation de texte
Connectez (ou concaténez) deux valeurs de texte à l’aide du caractère esperluette (&) afin de produire une valeur de texte continue. Prenons l’exemple de la définition de colonne calculée suivante :
Model Color = 'Product'[Model] & "-" & 'Product'[Color]
Opérateurs logiques
Combinez des expressions produisant un résultat unique à l’aide d’opérateurs logiques. Le tableau suivant répertorie tous les opérateurs logiques :
| Opérateur | Description |
|---|---|
| && | Crée une condition AND entre deux expressions où chacune a un résultat booléen. Si les deux expressions renvoient TRUE, la combinaison des expressions renvoie également TRUE ; sinon, la combinaison renvoie FALSE. |
| || (double barre verticale) | Crée une condition OR entre deux expressions logiques. Si l’une ou l’autre expression renvoie TRUE, le résultat est TRUE ; le résultat est FALSE seulement si les deux expressions renvoient FALSE. |
| IN | Crée une condition OR logique entre chaque ligne comparée à une table. Remarque : la syntaxe du constructeur de table utilise des accolades. |
| NOT | Inverse l’état d’une expression booléenne (FALSE à TRUE, et vice versa). |
Un exemple qui utilise l’opérateur logique IN est la définition de la mesure ANZ Revenue, qui applique un filtre spécifique de deux pays/régions, à savoir l’Australie et la Nouvelle-Zélande, à l’aide de la fonction CALCULATE.
Remarque
Vous allez découvrir la puissante fonction CALCULATE lorsque vous allez découvrir comment modifier le contexte de filtre.
ANZ Revenue =
CALCULATE(
[Revenue],
Customer[Country-Region] IN {
"Australia",
"New Zealand"
}
)
Priorité des opérateurs
Lorsque votre formule DAX comprend plusieurs opérateurs, DAX détermine l’ordre d’évaluation, appelé priorité des opérateurs, à l’aide de règles. Les opérations sont classées selon le tableau suivant :
| Opérateur | Description |
|---|---|
| ^ | Élévation à une puissance |
| - | Signe (comme dans -1) |
| * et / | Multiplication et division |
| NOT | NOT |
| + et - | Addition et soustraction |
| & | Concaténation de deux chaînes de texte |
| =,==,<,>,<=,>=,<> | Comparaison |
Lorsque les opérateurs ont une valeur de priorité égale, ils sont classés de gauche à droite.
En général, la priorité des opérateurs est identique à celle d’Excel. Si vous devez remplacer l’ordre d’évaluation, regroupez les opérations entre parenthèses.
Prenons l’exemple de la définition de colonne calculée suivante :
Extended Amount = Sales[Order Quantity] * Sales[Unit Price] * 1 - [Unit Price Discount Pct]
Cet exemple de définition de colonne calculée produit un résultat incorrect, car la multiplication se produit avant la soustraction. La définition de colonne calculée correcte suivante garantit que les soustractions se produisent avant les multiplications à l’aide de parenthèses.
Extended Amount = Sales[Order Quantity] * Sales[Unit Price] * (1 - [Unit Price Discount Pct])
Conseil
Il peut être difficile de mémoriser les règles de priorité des opérateurs, en particulier pour ceux qui découvrent DAX. Nous vous recommandons de tester minutieusement vos formules. Lorsque les formules ne produisent pas le résultat correct en raison d’un ordre d’évaluation incorrect, vous pouvez faire des essais en ajoutant des parenthèses pour ajuster l’ordre d’évaluation. Vous pouvez également ajouter des parenthèses pour améliorer la lisibilité de vos formules.
Pour en savoir plus sur les opérateurs DAX et l’ordre de priorité, consultez Opérateurs DAX.
Conversion implicite
Lorsque vous écrivez une formule DAX qui combine différents types de données à l’aide d’opérateurs, vous n’avez pas besoin de convertir explicitement les types. En général, DAX identifie automatiquement les types de données des objets de modèle référencés et effectue des conversions implicites si nécessaire pour terminer l’opération spécifiée.
Toutefois, il peut exister des limitations sur les valeurs qui peuvent être correctement converties. Si une valeur ou une colonne a un type de données incompatible avec l’opération actuelle, DAX renvoie une erreur. Par exemple, la tentative de multiplication d’une valeur de date génère une erreur, car elle n’est pas logique.
La valeur BLANK est gérée différemment selon l’opérateur utilisé. Elle est gérée de façon similaire à celle dont Excel traite BLANK, mais de manière différente de la façon dont les bases de données (SQL) traitent les valeurs nulles. La valeur BLANK est considérée comme égale à zéro lorsqu’elle est traitée par des opérateurs arithmétiques, et comme une chaîne vide lorsqu’elle est concaténée dans une chaîne.
Conseil
Il peut être difficile de mémoriser la façon dont la valeur BLANK est gérée, en particulier pour les utilisateurs qui découvrent DAX. Nous vous recommandons de tester minutieusement vos formules. Lorsque les valeurs BLANK créent des résultats inattendus, envisagez d'effectuer un test pour BLANK à l’aide des fonctions IF et ISBLANK, puis réagissez de manière appropriée.