Référence des opérateurs DAX

 

Le langage DAX (Data Analysis Expressions) utilise des opérateurs pour créer des expressions qui comparent des valeurs, effectuent des calculs arithmétiques ou utilisent des chaînes.Cette section décrit l'utilisation de chaque opérateur.

Types d'opérateurs

Il existe quatre différents types d'opérateurs de calcul : arithmétique, comparaison, concaténation de texte et logique.

Opérateurs arithmétiques

Pour réaliser des opérations mathématiques de base, telles que l'addition, la soustraction ou la multiplication, combiner des nombres et générer des résultats numériques, utilisez les opérateurs arithmétiques suivants.

Opérateur arithmétique Signification Exemple
+ (signe plus) Addition 3+3
- (signe moins) Soustraction ou signe 3–1–1
* (astérisque) Multiplication 3*3
/ (barre oblique) Division 3/3
^ (accent circonflexe) Élévation à la puissance 16^4

Notes


Le signe plus peut fonctionner à la fois comme un opérateur binaire et comme un opérateur unaire.Un opérateur binaire requiert des nombres des deux côtés de l'opérateur et effectue l'addition.Lorsque vous utilisez des valeurs dans une formule DAX des deux côtés de l'opérateur binaire, DAX essaie de convertir les valeurs en types de données numériques si ce ne sont pas déjà des nombres.Par opposition, l'opérateur unaire peut être appliqué à tout type d'argument.Le signe plus n'affecte pas le type ni la valeur et est simplement ignoré, alors que l'opérateur moins crée une valeur négative, s'il est appliqué à une valeur numérique.

Opérateurs de comparaison

Vous pouvez comparer deux valeurs avec les opérateurs suivants.Lorsque deux valeurs sont comparées à l'aide de ces opérateurs, le résultat est une valeur logique (TRUE ou FALSE).

Opérateur de comparaison Signification Exemple
= Égal à [Region] = "USA"
> Supérieur à [Sales Date] > "Jan 2009"
< Inférieur à [Sales Date] < "Jan 1 2009"
>= Supérieur ou égal à [Amount] >= 20000
<= Inférieur ou égal à [Amount] <= 100
<> Différent de [Region] <> "USA"

Opérateur de concaténation de texte

Utilisez l'esperluette (&) pour joindre ou concaténer deux chaînes de texte ou plus, afin de générer un seul élément de texte.

Opérateur de texte Signification Exemple
& (esperluette) Connecte ou concatène deux valeurs pour produire une valeur texte continue [Region] & ", " & [City]

Opérateurs logiques

Utilisez les opérateurs logiques (&&) et (||) pour combiner des expressions et produire un résultat unique.

Opérateur de texte Signification Exemples
&& (double esperluette) Crée une condition AND entre deux expressions qui ont chacune un résultat booléen.Si les deux expressions retournent TRUE, la combinaison des expressions retourne également TRUE ; sinon, la combinaison retourne FALSE. (([Region] = "France") && ([BikeBuyer] = "yes"))
|| (symbole de barre verticale double) 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 lorsque les deux expressions ont la valeur FALSE. (([Region] = "France") || ([BikeBuyer] = "yes"))

Opérateurs et priorité

Dans certains cas, l'ordre dans lequel le calcul est effectué peut affecter la valeur de retour ; par conséquent, il est important de comprendre la façon dont l'ordre est déterminé et comment vous pouvez le modifier pour obtenir les résultats voulus.

Ordre de calcul

Une expression évalue les opérateurs et valeurs dans un ordre spécifique.Toutes les expressions commencent toujours par un signe égal (=).Le signe égal indique que les caractères qui suivent constituent une expression.

À la suite du signe égal figurent les éléments à calculer (opérandes), séparés par des opérateurs de calcul.Les expressions sont toujours lues de gauche à droite, mais l'ordre dans lequel les éléments sont regroupés peut être contrôlé dans une certaine mesure à l'aide de parenthèses.

Priorité des opérateurs

Si vous combinez plusieurs opérateurs dans une formule unique, les opérations sont classées d'après la table suivante.Si les opérateurs ont une valeur de priorité égale, ils sont classés de gauche à droite.Par exemple, si une expression contient à la fois un opérateur de multiplication et de division, ils sont évalués dans l'ordre dans lequel ils s'affichent dans l'expression, de gauche à droite.

Opérateur Description
^ Élévation à la puissance
Signe (comme dans -1)
* et / Multiplication et division
! NOT (opérateur unaire)
+ et – Addition et soustraction
& Connecte deux chaînes de texte (concaténation)
=< ><=>=<> Comparaison

Utilisation de parenthèses pour contrôler l'ordre de calcul

Pour modifier l'ordre d'évaluation, vous devez mettre entre parenthèses la partie de la formule qui doit être calculée en premier.Par exemple, la formule suivante produit 11 parce que la multiplication est calculée avant l'addition.La formule multiplie 2 par 3, puis ajoute 5 au résultat.

=5+2*3

Par opposition, si vous utilisez des parenthèses pour modifier la syntaxe, l'ordre est modifié afin d'additionner 5 et 2, puis le résultat est multiplié par 3 pour produire 21.

=(5+2)*3

Dans l'exemple suivant, les parenthèses autour de la première partie de la formule obligent le calcul à évaluer l'expression (3 + 0.25) en premier, puis à diviser le résultat par le résultat de l'expression, (3 - 0.25).

=(3 + 0.25)/(3 - 0.25)

Dans l'exemple suivant, l'opérateur d'élévation à la puissance est appliqué en premier, conformément aux règles de priorité des opérateurs, puis l'opérateur de signe est appliqué.Le résultat de cette expression est -4.

=-2^2

Pour vous assurer que l'opérateur de signe sera appliqué en premier à la valeur numérique, vous pouvez utiliser des parenthèses afin de contrôler les opérateurs, comme indiqué dans l'exemple suivant.Le résultat de cette expression est 4.

= (-2)^2

Remarques sur la compatibilité

DAX gère et compare facilement différents types de données de façon très semblable à Microsoft Excel.Toutefois, le moteur de calcul sous-jacent est basé sur SQL Server Analysis Services et fournit les fonctionnalités avancées supplémentaires d'une banque de données relationnelle, notamment une meilleure prise en charge des types de date et d'heure.Par conséquent, les résultats des calculs ou le comportement des fonctions peuvent ne pas être dans certains cas les mêmes que dans Excel.De plus, DAX prend en charge plus de types de données qu'Excel.Cette section décrit les différences clés.

Forçage de types de données d'opérandes

En général, les deux opérandes sur les côtés droit et gauche de tout opérateur doivent être du même type de données.Toutefois, si les types de données sont différents, DAX les convertit en un type de donnée commun pour la comparaison, comme suit :

  1. En premier lieu, les opérandes sont convertis vers le plus grand type de donnée commun possible.

  2. Les opérandes sont ensuite comparés.

Par exemple, vous souhaitez combiner deux nombres.Un nombre résulte d'une formule, tel que =[Price] * .20, et le résultat peut contenir un grand nombre de décimales.L'autre nombre est un entier qui a été fourni comme une valeur de chaîne.

Dans ce cas, DAX convertira les deux nombres en nombres réels sous un format numérique, en utilisant le plus grand format numérique qui peut stocker les deux types de nombres.DAX compare ensuite les valeurs.

Par opposition, Excel essaie de comparer des valeurs de différents types sans les forcer d'abord en un type commun.Pour cette raison, vous pouvez visualiser des résultats différents dans DAX et dans Excel pour la même expression de comparaison.

Types de données utilisés dans DAX Types de données utilisés dans Excel
Nombres (I8, R8)

Booléen

Chaîne

DateTime

Monétaire (Currency)
Nombres (R8)

Booléen

Chaîne

Variant

Monétaire (Currency)

Différences dans l'ordre de priorité

L'ordre de priorité des opérations dans les formules DAX est fondamentalement le même que celui utilisé par Microsoft Excel, mais certains opérateurs Excel ne sont pas pris en charge, tels que le pourcentage.Les plages ne sont pas non plus prises en charge.

Par conséquent, chaque fois que vous copiez et collez des formules à partir d'Excel, veillez à examiner la formule avec soin, car certains opérateurs ou éléments dans les formules peuvent ne pas être valides.Lorsqu'il existe un doute sur l'ordre dans lequel les opérations sont effectuées, nous vous recommandons d'utiliser des parenthèses pour contrôler l'ordre des opérations et lever toute ambiguïté sur le résultat.

Voir aussi

Référence syntaxique de DAX