Udostępnij za pośrednictwem


SWITCH

Dotyczy:kolumna obliczeniowatabela obliczeniowaMiarawizualizacji

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 na TRUE. Zobacz przykłady poniżej.
  • Wszystkie wyrażenia result i wyrażenie else muszą być tego samego typu danych.
  • Kolejność warunków ma znaczenie. Gdy tylko jeden value pasuje, zostanie zwrócony odpowiedni result, a inne kolejne values nie zostaną ocenione. Upewnij się, że określono najbardziej restrykcyjne values do oceny przed mniej restrykcyjnym values. 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
        )