SWITCH

S’applique à :Colonne calculéeTableau calculéeMesureCalcul de visuel

Évalue une expression par rapport à une liste de valeurs et retourne l’une des différentes expressions de résultat possibles. Cette fonction peut être utilisée pour éviter d'avoir plusieurs instructions SI 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 d’expression.
result Toute expression scalaire à évaluer si les résultats d’expression correspondent au paramètre value correspondant.
else Toute expression scalaire à évaluer si les résultats d’expression ne correspondent à aucun argument du paramètre value.

Valeur renvoyée

S’il existe une correspondance avec une valeur, une valeur scalaire du résultat correspondant est renvoyée. S’il n’y a pas de correspondance avec une valeur, une valeur d’autre est retournée. Si aucune des valeurs ne correspond et qu’aucune autre n’est spécifiée, BLANK est retourné.

Remarques

  • L’expression à évaluer peut être une valeur constante ou une expression. Une utilisation courante de cette fonction consiste à fixer le premier paramètre à TRUE. Voir les exemples ci-dessous.
  • Toutes les expressions de résultat et l’expression else doivent être du même type de données.
  • L’ordre des conditions est important. Dès qu’une valeur correspond, le résultat correspondant est retourné et les autres valeurs suivantes ne sont pas évaluées. Assurez-vous que les valeurs les plus restrictives à évaluer sont spécifiées avant les valeurs moins restrictives. Voir les exemples ci-dessous.

Exemples

Une utilisation courante de SWITCH consiste à comparer l’expression avec des valeurs 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, l'expression doit être définie comme VRAIE, comme le montre l'exemple suivant, qui compare le point de commande et le niveau de stock de sécurité pour les produits afin d'identifier les risques potentiels de rupture de stock :

= 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 des valeurs est important. Dans l’exemple suivant, le deuxième résultat n’est jamais retourné, 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 de résultat sont différents. N’oubliez pas que les types de données dans tous les arguments de résultat et d’autres doivent être identiques.

= SWITCH (
        [Class],
        "L", "Large",
        "H", 0.1
        )