SWITCH
Dotyczy:kolumna obliczeniowatabela obliczeniowaMeasureobliczenia wizualne
Oblicza wyrażenie względem listy valuesand zwraca jeden z wielu możliwych wyrażeń wyników. Tej funkcji można użyć, aby uniknąć zagnieżdżenia wielu zagnieżdżonych IFstatements.
Składnia
SWITCH(<expression>, <value>, <result>[, <value>, <result>]…[, <else>])
Parametry
Termin | Definicja |
---|---|
expression |
Każde wyrażenie DAX zwracające pojedynczą value skalarną, w której wyrażenie ma być obliczane wiele razy (dla każdego wiersza/kontekstu). |
value |
Stała value, która ma być zgodna z wynikami expression . |
result |
Każde wyrażenie skalarne, które ma zostać obliczone if wyniki expression pasują do odpowiadającego value . |
else |
Każde wyrażenie skalarne, które ma być obliczane if wyniku expression , nie jest zgodne z żadnym z argumentów value . |
Zwracanie value
If występuje dopasowanie z value
, zwracany jest value skalarny z odpowiedniego result
.
If nie ma dopasowania do value
, zwracany jest value z else
.
If
none
and
else
dopasowania values
nie jest określony, BLANK jest zwracany.
Uwagi
-
expression
do obliczenia może być stałą valueor wyrażeniem. Typowym zastosowaniem tej funkcji jest ustawienie parametru first na wartośćTRUE
. Zobacz przykłady poniżej. -
All
result
wyrażenia and wyrażenieelse
musi być tego samego typu danych. - Kolejność warunków ma znaczenie. Gdy tylko jeden
value
pasuje, zostanie zwrócony odpowiedniresult
, and inne kolejnevalues
nie zostaną ocenione. Upewnij się, że określono najbardziej restrykcyjnevalues
do oceny przed mniej restrykcyjnymvalues
. Zobacz przykłady poniżej.
Przykłady
Typowym zastosowaniem SWITCH jest porównanie expression
ze stałymi values
. Poniższy przykład tworzy kolumnę obliczeniową nazw 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"
)
Innym typowym zastosowaniem SWITCH jest replace wielu zagnieżdżonych IFstatements. Jest to realizowane przez ustawienie wyrażenia na wartość TRUE
, jak pokazano w poniższym przykładzie, w którym porównano kolejność punktów and poziom zapasów bezpieczeństwa dla produktów w celu zidentyfikowania potencjalnych zagrożeń związanych z brakiem zapasów:
= 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"
)
Kolejność values
ma znaczenie. W poniższym przykładzie secondresult
nigdy nie jest zwracana, ponieważ firstvalue jest mniej restrykcyjna niż second. Wynikiem tego przykładu jest zawsze A
orC
, ale nigdy nie B
.
= SWITCH (
TRUE,
Product[Standard Cost] < 100, "A",
Product[Standard Cost] < 10, "B",
"C"
)
Poniższa instrukcja zwraca error, ponieważ typy danych w argumentach result
są różne. Należy pamiętać, że typy danych w argumentach allresult
andelse
muszą być takie same.
= SWITCH (
[Class],
"L", "Large",
"H", 0.1
)