Funkcja SWITCH cz.2

Wyrażenia warunkowe są jednymi z najczęściej używanych w wielu językach programowania. Jest tak także w przypadku języka DAX, jednakże jeśli masz wiele wyrażeń JEŻELI – WTEDY to istnieje prostsza droga tworzenia takiego ciągu zamiast zagnieżdżania funkcji IF. Z pomocą przychodzi wtedy funkcja SWITCH.

Omówienie funkcji

Funkcja DAX wykorzystuje następujący wzór:

SWITCH (

<Expression>,

<Value>,

<Wynik>

[, , [, … ]][, Else]

)

Gdzie:

  • Expression – wyrażenie poddane ewaluacji;
  • Value (powtarzający się) – wartość, która ma być poddana ewaluacji wobec wyrażenia;
  • Wynik (powtarzający się) – wynik, który ma być zwrócony, gdy wartość koresponduje z wyrażeniem;
  • Else – jeśli nie ma żadnych korespondujących wartości to wartość Else zostanie zwrócona.

Omówienie przykładu

Przypuśćmy, że mamy obliczyć wartość rabatu danego produktu biorąc pod uwagę, że ilość zamówionych produktów wpływa na wysokość udzielonego rabatu. Niech nasz rabat wygląda odpowiednio:

  • Przy zamówieniu powyżej 10 sztuk produktu, klient otrzymuje 10% rabatu;
  • Przy zamówieniu powyżej 25 sztuk produktu, klient otrzymuje 15% rabatu;
  • Przy zamówieniu powyżej 50 sztuk produktu, klient otrzymuje 25% rabatu.

Nasza tabela faktów factSales zawiera następujące kolumny: Produkt, DataSprzedaży, Ilość, WartośćZamówienia. Zamiast tworzyć dodatkowe kolumny możemy obliczyć to za pomocą jednej prostej miary:

Wartość Rabatu=

SUMX(

factSales,

[WartośćZamówienia] / [Ilość] *

IF(

[Ilość] ≥ 50, 0.25,

IF(

[Ilość] ≥ 25, 0.15,

IF(

[Ilość]≥ 10, 0.1

))))

Długa formuła prawda? Spójrzmy teraz jak wykonać to samo obliczenie za pomocą funkcji SWITCH:

SUMX(

factSales,

[WartośćZamówienia] / [Ilość] *

SWITCH(

TRUE,

[Ilość]≥ 50, 0.25,

[Ilość]≥ 25, 0.15,

[Ilość]≥ 10, 0.1,

0

))

Choć obydwa obliczenia zwrócą identyczny wynik, to wykorzystanie funkcji SWITCH pozwala nam na utworzenie bardziej przejrzystej i wydajnej miary. Wykorzystałem dane testowe Power BI Desktop (financials) i opracowałem dwie miary dla przypadku IF i dla przypadku SWITCH. Poniżej wynik uzyskany przez Performance Analyzer:

Zastosowań SWITCH jest o wiele więcej, możemy choćby tworzyć formatowania warunkowe, czy też dopasowywać wartości do osi w tabelach serwisowych. Zachęcam do praktykowania z tą funkcją jak najczęściej. W mojej pracy wykorzystuję ją przy prawie każdym projekcie.

Podsumowanie

W artykule przedstawiłem funkcję SWITCH, omówiłem jej parametry, a także przeszedłem przez praktyczny przykład. W ostatniej części artykułu porównałem także prędkość przeliczenia testowego zbioru dla zastosowania zagnieżdżonej funkcji IF kontra funkcja SWITCH.

Interesujący artykuł? Podaj dalej!