Lire en anglais

Partager via


SWITCH

S’applique à :Colonne calculéeTable 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 de expression.
result Toute expression scalaire à évaluer si les résultats de expression correspondent à la valuecorrespondante.
else Toute expression scalaire à évaluer si le résultat de expression ne correspond à aucun des arguments value.

Valeur renvoyée

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

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 sur TRUE. Voir les exemples ci-dessous.
  • Toutes les expressions result et l’expression else doivent être du même type de données.
  • L’ordre des conditions est important. Dès qu’une value correspond, la result correspondante est retournée et d’autres values ultérieures ne sont pas évaluées. Assurez-vous que les values les plus restrictives à évaluer sont spécifiées avant valuesmoins restrictives. Voir les exemples ci-dessous.

Exemples

L’utilisation courante de SWITCH consiste à comparer expression avec des valuesconstantes. 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
        )