Funkcja SWITCH
W dzisiejszym artykule opiszę wykorzystanie funkcji SWITCH, która jest funkcją języka DAX. Przejdziemy przez wzór (syntax) funkcji, a także opiszę jej zastosowanie na przykładzie.
Wzór funkcji
Funkcja SWITCH jest funkcją logiczną i oblicza podane wyrażenie względem warunków i zwraca jedno z wielu wyrażeń wynikowych. Tak jest to opisane na stronie dokumentacji Microsoft. Proste, prawda? Otóż tak!? Przyjrzyjmy się funkcji dokładniej.
SWITCH(expression, value, result[, valueX , resultX ]…[,else ])
Gdzie:
Expression – dowolne wyrażenie skalarne, gdzie warunek ma być obliczany dla każdego z wierszy
Value – stała dopasowywana do wyniku wyrażenia
Result – wynik wyrażenia
ValueX – kolejna stała
Else – wynik alternatywny jeśli żaden z warunków nie zostanie spełniony.
Jeśli przyjrzymy się tej funkcji dokładniej to najprościej opisać ją jako uproszczoną alternatywę do wielokrotnie zagnieżdżonej funkcji IF. W tym przypadku jeśli chcemy dopisać kolejne warunki nie musimy tworzyć kolejnej funkcji IF wewnątrz wcześniejszej, lecz wystarczy dopisać odpowiednio kolejne warunki. Jak zatem czytać tę funkcję tak aby się nie pogubić? Spójrzmy poniżej:
SWITCH( TRUE -- zwróć wynik w przypadku gdy warunek jest spełniony,
warunek1, wynik1 gdy warunek1 jest spełniony,
warunekX, wynikX gdy warunekX jest spełniony,
wartość gdy żadne z wyrażeń nie jest poprawne )
Przykładowe zastosowanie
Funkcję SWITCH możemy wykorzystać, aby utworzyć w naszych raportach tzw. przełączniki. Wyobraźmy sobie, że posiadamy wykres, na którym chcemy umieścić miarę sprzedaży i chcemy dać użytkownikowi możliwość np. zmiany sposobu wyświetlania miary niech będzie z wartości jedności do tysięcy i milionów. W takim wypadku wystarczy utworzyć tabelę, którą wykorzystamy jako fragmentator (na zrzucie ekranu tabela S_Units), a następnie utworzyć miarę i umieścić ją na wizualizacji.
SWITCH(
TRUE,
SELECTEDVALUE( S_Units [Unit] ) = "Standard", [C_SalesStandard],
SELECTEDVALUE( S_Units [Unit] ) = "Thousands", [C_SalesThousands],
SELECTEDVALUE( S_Units [Unit] ) = "Millions", [C_SalesMillions],
BLANK ()
)
Rozwiązanie powinno wyglądać jak poniżej (każda karta została skonfigurowana według tej samej miary powiązanej z fragmentatorem obok, aby ukazać rozwiązanie w pełni).

Podsumowanie
W artykule opisałem wzór funkcji SWITCH w języku DAX, a także przedstawiłem sposób jej zastosowania w tworzeniu raportów Power BI.