Référence des opérateurs DAX pour PowerPivot
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 |
[!REMARQUE]
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 |
---|---|---|
& (et commercial) |
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 et commercial) |
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 :
En premier lieu, les opérandes sont convertis vers le plus grand type de donnée commun possible.
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) Boolean String DateTime Currency |
Nombres (R8) Booléen Chaîne Variant Monétaire |
Pour plus d'informations sur la conversion implicite de types de données, consultez Types de données prises en charge dans les classeurs PowerPivot.
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.