SWITCH
Dotyczy:kolumna obliczeniowa
tabela obliczeniowa
Miara
wizualizacji
Oblicza wyrażenie względem listy wartości i zwraca jedno z wielu możliwych wyrażeń wyników. Ta funkcja może służyć do uniknięcia wielu zagnieżdżonych instrukcji IF.
Składnia
SWITCH(<expression>, <value>, <result>[, <value>, <result>]…[, <else>])
Parametry
Termin | Definicja |
---|---|
expression |
Każde wyrażenie DAX zwracające pojedynczą wartość skalarną, w której wyrażenie ma być obliczane wiele razy (dla każdego wiersza/kontekstu). |
value |
Stała wartość do dopasowania z wynikami expression . |
result |
Dowolne wyrażenie skalarne do obliczenia, jeśli wyniki expression pasują do odpowiadającego value . |
else |
Każde wyrażenie skalarne do obliczenia, jeśli wynik expression nie pasuje do żadnego z argumentów value . |
Wartość zwracana
Jeśli istnieje dopasowanie z value
, zwracana jest wartość skalarna z odpowiadającej result
. Jeśli nie ma dopasowania do value
, zwracana jest wartość z else
. Jeśli żadna z values
nie jest zgodna i else
nie zostanie określona, zostanie zwrócona BLANK.
Uwagi
-
expression
do obliczenia może być wartością stałą lub wyrażeniem. Typowym zastosowaniem tej funkcji jest ustawienie pierwszego parametru naTRUE
. Zobacz przykłady poniżej. - Wszystkie wyrażenia
result
i wyrażenieelse
muszą być tego samego typu danych. - Kolejność warunków ma znaczenie. Gdy tylko jeden
value
pasuje, zostanie zwrócony odpowiedniresult
, a 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 miesięcy:
= 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 zastąpienie wielu zagnieżdżonych instrukcji IF. 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 i 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 druga result
nigdy nie jest zwracana, ponieważ pierwsza wartość jest mniej restrykcyjna niż druga. Wynik w tym przykładzie jest zawsze A
lub C
, ale nigdy nie B
.
= SWITCH (
TRUE,
Product[Standard Cost] < 100, "A",
Product[Standard Cost] < 10, "B",
"C"
)
Poniższa instrukcja zwraca błąd, ponieważ typy danych w argumentach result
są różne. Należy pamiętać, że typy danych we wszystkich result
i else
argumenty muszą być takie same.
= SWITCH (
[Class],
"L", "Large",
"H", 0.1
)