SWITCH
s’applique à :colonne calculéetable calculéemesurecalcul visuel
Évalue une expression par rapport à une liste de valeurs et retourne l’une des plusieurs expressions de résultat possibles. Cette fonction peut être utilisée pour éviter d’avoir plusieurs instructions de IF imbriquées.
Syntaxe
SWITCH(<expression>, <value>, <result>[, <value>, <result>]…[, <else>])
Paramètres
Terme | Définition |
---|---|
expression |
Toute expression DAX qui retourne une valeur scalaire unique où l’expression doit être évaluée plusieurs fois (pour chaque ligne/contexte). |
value |
Valeur constante à mettre en correspondance avec les résultats de expression . |
result |
Toute expression scalaire à évaluer si les résultats de expression correspondent à la value correspondante. |
else |
Toute expression scalaire à évaluer si le résultat de expression ne correspond à aucun des arguments value . |
Valeur de retour
S’il existe une correspondance avec un value
, une valeur scalaire de la result
correspondante est retournée. S’il n’existe pas de correspondance avec un value
, une valeur de else
est retournée. Si aucune des correspondances values
et else
n’est spécifiée, BLANK est retournée.
Remarques
- La
expression
à évaluer peut être une valeur constante ou une expression. Une utilisation courante de cette fonction consiste à définir le premier paramètre surTRUE
. Voir les exemples ci-dessous. - Toutes les expressions
result
et l’expressionelse
doivent être du même type de données. - L’ordre des conditions est important. Dès qu’une
value
correspond, laresult
correspondante est retournée et d’autresvalues
ultérieures ne sont pas évaluées. Assurez-vous que lesvalues
les plus restrictives à évaluer sont spécifiées avantvalues
moins restrictives. Voir les exemples ci-dessous.
Exemples
Une utilisation courante de SWITCH consiste à comparer expression
avec des values
constantes. L’exemple suivant crée une colonne calculée de noms de mois :
= SWITCH (
[Month Number Of Year],
1, "January",
2, "February",
3, "March",
4, "April",
5, "May",
6, "June",
7, "July",
8, "August",
9, "September",
10, "October",
11, "November",
12, "December",
"Unknown month number"
)
Une autre utilisation courante de SWITCH consiste à remplacer plusieurs instructions IF imbriquées. Pour ce faire, définissez l’expression sur TRUE
, comme indiqué dans l’exemple suivant, qui compare reorder le niveau de point et de stock de sécurité sur les produits afin d’identifier les risques potentiels d’épuisement des stocks :
= SWITCH (
TRUE,
[Reorder Point] > [Safety Stock Level], "Good: Safety stock level exceeded",
[Reorder Point] = [Safety Stock Level], "Minimal: Safety stock level met",
[Reorder Point] < [Safety Stock Level], "At risk: Safety stock level not met",
ISBLANK ( [Reorder Point] ), "Incomplete: Reorder point not set",
ISBLANK ( [Safety Stock Level] ), "Incomplete: Safety stock level not set",
"Unknown"
)
L’ordre de values
compte. Dans l’exemple suivant, la deuxième result
n’est jamais retournée, car la première valeur est moins restrictive que la seconde. Le résultat de cet exemple est toujours A
ou C
, mais jamais B
.
= SWITCH (
TRUE,
Product[Standard Cost] < 100, "A",
Product[Standard Cost] < 10, "B",
"C"
)
L’instruction suivante retourne une erreur, car les types de données dans les arguments result
sont différents. N’oubliez pas que les types de données dans tous les arguments result
et else
doivent être identiques.
= SWITCH (
[Class],
"L", "Large",
"H", 0.1
)