Utiliser les opérateurs DAX

Effectué

Vos formules DAX peuvent utiliser des opérateurs pour créer des expressions qui peuvent effectuer des calculs arithmétiques, comparer des valeurs, utiliser des chaînes ou tester des conditions.

Conseil

Beaucoup d’opérateurs DAX et leur ordre de priorité sont les mêmes que dans Excel.

Opérateurs arithmétiques

Le tableau ci-dessous répertorie les opérateurs arithmétiques.

Opérateur Description
+ Addition
- Soustraction
* Multiplication
/ Division
^ Élévation à la puissance

N’oubliez pas que lorsque vous divisez deux expressions et que le dénominateur peut retourner zéro ou vide, il est plus efficace et plus sûr d’utiliser la fonction DAX DIVIDE.

Opérateurs de comparaison

Le tableau suivant répertorie les opérateurs de comparaison, qui sont utilisés pour 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 à
<> Non égal à

Tous les opérateurs de comparaison, à l’exception de Strictement égal à (==), traitent BLANK comme étant égal au nombre zéro, une chaîne vide (« »), la date du 30 décembre 1899 ou FALSE. Cela signifie que l’expression [Revenue] = 0 est TRUE quand la valeur de [Revenue] est de zéro ou BLANK. En revanche, [Revenue] == 0 a la valeur TRUE uniquement quand la valeur de [Revenue] est égale à zéro.

Opérateur de concaténation de texte

Utilisez le caractère esperluette (&) pour connecter, ou concaténer, deux valeurs de texte afin de produire une valeur de texte continue. Par exemple, considérez la définition de colonne calculée suivante :

Model Color = 'Product'[Model] & "-" & 'Product'[Color]

Opérateurs logiques

Utilisez les opérateurs logiques pour combiner des expressions et produire un résultat unique. 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 retournent TRUE, la combinaison des expressions retourne également TRUE ; sinon, la combinaison retourne FALSE.
|| (double barre verticale) Crée une condition OR entre deux expressions logiques. Si l’une des expressions retourne TRUE, le résultat est TRUE. Le résultat est FALSE uniquement quand les deux expressions sont 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 utilise la fonction DAX CALCULATE pour appliquer un filtre spécifique de deux pays : Australie et Nouvelle-Zélande.

Notes

Vous allez découvrir la puissante fonction CALCULATE quand vous apprendrez à 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 utilise des règles pour déterminer l’ordre d’évaluation, qu’on appelle priorité des opérateurs. 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

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

Par exemple, considérez 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 utilise des parenthèses pour garantir que les soustractions se produisent avant les multiplications.

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. Par conséquent, 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 plus d’informations sur les opérateurs DAX et l’ordre de priorité, consultez Opérateurs DAX.

Conversion implicite

Lorsque vous écrivez une formule DAX qui utilise des opérateurs pour combiner différents types de données, vous n’avez pas besoin de convertir explicitement les types. En règle générale, 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 qui est incompatible avec l'opération actuelle, DAX retourne une erreur. Par exemple, la tentative de multiplication d’une valeur de date génère une erreur, car elle n’est pas logique.

BLANK est gérée différemment en fonction de l’opérateur utilisé. Elle est gérée de façon similaire à celle dont Excel traite la valeur BLANK, mais de manière différente de la façon dont les bases de données (SQL) traitent les valeurs NULL. BLANK est considéré comme égal à zéro lorsqu’il est traité par des opérateurs arithmétiques, et comme une chaîne vide lorsqu’il est concaténé dans une chaîne.

Conseil

Il peut être difficile de mémoriser la façon BLANK est géré, en particulier pour ceux qui découvrent. Par conséquent, nous vous recommandons de tester minutieusement vos formules. Lorsque les espaces créent des résultats inattendus, envisagez d’utiliser les fonctions DAX IF et ISBLANK pour tester la présence d’espaces ; agissez alors de manière appropriée.