Partager via


SWITCH

s’applique à :colonne calculéetable calculéeMeasurecalcul visuel

Évalue une expression par rapport à une liste de valuesand retourne l’une des plusieurs expressions de résultat possibles. Cette fonction peut être utilisée pour éviter d’avoir plusieurs IFstatementsimbriquées.

Syntaxe

SWITCH(<expression>, <value>, <result>[, <value>, <result>]…[, <else>])

Paramètres

Terme Définition
expression Toute expression DAX qui retourne une seule value scalaire où l’expression doit être évaluée plusieurs fois (pour chaque ligne/contexte).
value Constante value à mettre en correspondance avec les résultats de expression.
result Toute expression scalaire à évaluer if les résultats de expression correspondent à la valuecorrespondante.
else Toute expression scalaire à évaluer if résultat de expression ne correspond à aucun des arguments value.

Retourner value

If il existe une correspondance avec un value, un value scalaire du result correspondant est retourné. If il n’y a pas de correspondance avec un value, un value de else est retourné. If none de la correspondance valuesandelse n’est pas spécifiée, BLANK est retournée.

Remarques

  • La expression à évaluer peut être une constante valueor une expression. Une utilisation courante de cette fonction consiste à définir le paramètre first sur TRUE. Voir les exemples ci-dessous.
  • All result expressions and l’expression else doit ê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, and'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

Une utilisation courante de SWITCH consiste à comparer expression avec des valuesconstantes. L’exemple suivant crée une colonne calculée de noms month :

= 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 à replace plusieurs IFstatementsimbriquées. Pour ce faire, définissez l’expression sur TRUE, comme illustré dans l’exemple suivant, qui compare le niveau de stock de recommandation de point and sécurité sur les produits afin d’identifier les risques potentiels d’épuisement du 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 de values compte. Dans l’exemple suivant, la secondresult n’est jamais retournée, car la firstvalue est moins restrictive que la second. Le résultat de cet exemple est toujours AorC, mais jamais B.

= SWITCH (
         TRUE,
         Product[Standard Cost] < 100, "A",
         Product[Standard Cost] < 10, "B",
         "C"
         )

L’instruction suivante retourne un error, car les types de données dans les arguments result sont différents. N’oubliez pas que les types de données dans allresultandelse arguments doivent être identiques.

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