SWITCH
gäller för:beräknad kolumn
beräknad tabell
Mått
Visuell 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 value
returneras ett skalärt värde från motsvarande result
. Om det inte finns någon matchning med en value
returneras 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 tillTRUE
. Se exempel nedan. - Alla
result
uttryck ochelse
-uttrycket måste ha samma datatyp. - Villkorsordningen är viktig. Så snart en
value
matchar returneras motsvaranderesult
och andra efterföljandevalues
utvärderas inte. Kontrollera att de mest restriktivavalues
som ska utvärderas anges innan mindre restriktivavalues
. 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
)