Dela via


SWITCH

gäller för:beräknad kolumnberäknad tabellMåttVisuell beräkning

Utvärderar ett uttryck mot en lista med värden och returnerar ett av flera möjliga resultatuttryck. Den här funktionen kan användas för att undvika att ha flera kapslade IF-instruktioner.

Syntax

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

Parametrar

Period Definition
expression Alla DAX uttryck som returnerar ett enda skalärt värde där uttrycket ska utvärderas flera gånger (för varje rad/kontext).
value Ett konstant värde som ska matchas med resultatet av expression.
result Alla skalära uttryck som ska utvärderas om resultatet av expression matcha motsvarande value.
else Skalärt uttryck som ska utvärderas om resultatet av expression inte matchar något av de value argumenten.

Returvärde

Om det finns en matchning med en valuereturneras ett skalärt värde från motsvarande result. Om det inte finns någon matchning med en valuereturneras ett värde från else. Om ingen av de values matchar och else inte har angetts returneras BLANK.

Kommentarer

  • Det expression som ska utvärderas kan vara ett konstant värde eller ett uttryck. En vanlig användning av den här funktionen är att ange den första parametern till TRUE. Se exempel nedan.
  • Alla result uttryck och else-uttrycket måste ha samma datatyp.
  • Villkorsordningen är viktig. Så snart en value matchar returneras motsvarande result och andra efterföljande values utvärderas inte. Kontrollera att de mest restriktiva values som ska utvärderas anges innan mindre restriktiva values. Se exempel nedan.

Exempel

En vanlig användning av SWITCH är att jämföra expression med konstant values. I följande exempel skapas en beräknad kolumn med månadsnamn:

= 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"
        )

En annan vanlig användning av SWITCH är att ersätta flera kapslade IF-instruktioner. Detta uppnås genom att ange uttryck till TRUE, som visas i följande exempel, som jämför omordningspunkt och säkerhetslagernivå på produkter för att identifiera potentiella risker med slut på lager:

= 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"
        )

Ordningen på values är viktig. I följande exempel returneras aldrig den andra result eftersom det första värdet är mindre restriktivt än det andra. Resultatet i det här exemplet är alltid A eller C, men aldrig B.

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

Följande instruktion returnerar ett fel eftersom datatyperna i result argument är olika. Tänk på att datatyperna i alla result och else argument måste vara desamma.

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