Modyfikowanie kontekstu filtru

Ukończone

Funkcja języka DAX umożliwia CALCULATE modyfikowanie kontekstu filtru w formułach. Jej składnia jest następująca:

CALCULATE(<expression>, [[<filter1>], <filter2>]…)

Funkcja wymaga przekazania wyrażenia zwracającego wartość skalarną. Można jej również przekazać dowolną liczbę filtrów. Wyrażenie może być miarą (czyli wyrażeniem o nadanej nazwie) lub dowolnym wyrażeniem, które można ocenić w kontekście filtru.

Filtry mogą być wyrażeniami warunkowymi lub wyrażeniami tabel. Istnieje również możliwość przekazania funkcji modyfikacji filtru, które zapewniają dodatkową kontrolę podczas modyfikowania kontekstu filtru.

Jeśli masz wiele filtrów, są one oceniane przy użyciu operatora logicznego AND , co oznacza, że wszystkie warunki muszą być TRUE jednocześnie spełnione.

Uwaga

Funkcja CALCULATETABLE języka DAX wykonuje dokładnie te same funkcje co CALCULATE funkcja, z tą różnicą, że modyfikuje kontekst filtru zastosowany do wyrażenia zwracającego obiekt tabeli. W tym module objaśnienia i przykłady korzystają z CALCULATE funkcji, ale pamiętaj, że te scenariusze mogą być również stosowane do CALCULATETABLE funkcji.

Stosowanie filtrów wyrażeń warunkowych

Filtr wyrażenia warunkowego jest wyrażeniem, które daje w wyniku wartość TRUE lub FALSE. Filtry warunkowe muszą spełniać poniższe zasady:

  • Mogą odwoływać się tylko do jednej kolumny.
  • Nie mogą odwoływać się do miar.
  • Nie mogą używać funkcji, które skanują lub zwracają tabelę zawierającą funkcje agregacji, takie jak SUM.

W tym przykładzie utworzysz miarę. Najpierw pobierz i otwórz plik Adventure Works DW 2020 M06.pbix. Następnie dodaj następującą miarę do tabeli Sales (Sprzedaż ), która filtruje miarę Revenue (Przychód ) przy użyciu filtru wyrażenia logicznego dla produktów czerwonych.

Revenue Red = CALCULATE([Revenue], 'Product'[Color] = "Red")

Dodaj miarę Revenue Red (Przychód czerwony) do wizualizacji tabeli, która znajduje się na stronie 1 raportu.

Obraz przedstawiający tabelę z trzema kolumnami: Region, Revenue (Przychód) oraz Revenue Red (Przychód czerwony). W tabeli wyświetla się łącznie 10 wierszy oraz suma.

W następnym przykładzie poniższa miara filtruje miarę Revenue, wyszukując kilka kolorów. Zwróć uwagę na użycie IN operatora, po którym następuje lista wartości kolorów.

Revenue Red or Blue = CALCULATE([Revenue], 'Product'[Color] IN {"Red", "Blue"})

Poniższa miara filtruje miarę Revenue, wyszukując drogie produkty o cenie katalogowej większej niż 1000 USD.

Revenue Expensive Products = CALCULATE([Revenue], 'Product'[List Price] > 1000)

Stosowanie filtrów wyrażeń tabel

Filtr wyrażenia tabeli stosuje jako filtr obiekt tabeli. Może to być odwołanie do tabeli modelu, najczęściej jednak jest to funkcja DAX zwracająca obiekt tabeli.

Często używasz FILTER funkcji języka DAX do stosowania złożonych warunków filtrowania, w tym tych, których nie można zdefiniować za pomocą wyrażenia filtru logicznego. Funkcja FILTER jest klasowana jako funkcja iteratora, więc należy przekazać tabelę lub wyrażenie tabeli oraz wyrażenie do obliczenia dla każdego wiersza tej tabeli.

Funkcja FILTER zwraca obiekt tabeli z dokładnie taką samą strukturą jak przekazana przez tabelę. Jego wiersze są podzbiorem tych wierszy, które zostały przekazane, co oznacza wiersze, w których wyrażenie zostało obliczone jako TRUE.

W poniższym przykładzie pokazano wyrażenie filtru FILTER tabeli, które używa funkcji :

Revenue High Margin Products =
CALCULATE(
    [Revenue],
    FILTER(
        'Product',
        'Product'[List Price] > 'Product'[Standard Cost] * 2
    )
)

W tym przykładzie FILTER funkcja filtruje wszystkie wiersze tabeli Product, które są w kontekście filtru. W przefiltrowanej tabeli wyświetlane są wiersze wszystkich produktów, których cena katalogowa przekracza podwójny koszt standardowy. W związku z tym miara Revenue jest oceniana dla wszystkich produktów zwracanych przez FILTER funkcję.

Wszystkie wyrażenia filtru przekazywane do CALCULATE funkcji to wyrażenia filtru tabeli. Wyrażenia filtrów warunkowych to skrócona notacja, ułatwiająca pisanie i odczytywanie kodu. W rzeczywistości usługa Microsoft Power BI zamienia wyrażenia filtrów warunkowych na wyrażenia filtrów tabel — tak jak definicję miary Revenue Red.

Revenue Red =
CALCULATE(
    [Revenue],
    FILTER(
        'Product',
        'Product'[Color] = "Red"
    )
)

Zachowanie filtrów

Podczas dodawania wyrażeń filtru CALCULATE do funkcji występują dwa możliwe wyniki standardowe:

  • Jeśli kolumny (lub tabele) nie są w kontekście filtru, nowe filtry zostaną dodane do kontekstu filtru w celu oceny CALCULATE wyrażenia.
  • Jeśli kolumny (lub tabele) są już w kontekście filtru, istniejące filtry zostaną zastąpione przez nowe filtry w celu oceny CALCULATE wyrażenia.

W poniższych przykładach pokazano, jak działa dodawanie wyrażeń filtru CALCULATE do funkcji.

Uwaga

W przykładach nie zastosowano żadnych filtrów do wizualizacji tabeli.

Tak jak w poprzednim ćwiczeniu, do wizualizacji tabeli grupującej produkty według regionu i wyświetlającej przychód dodano miarę Revenue Red.

Obraz przedstawiający tabelę z trzema kolumnami: Region, Revenue (Przychód) oraz Revenue Red (Przychód czerwony). W tabeli wyświetla się łącznie 10 wierszy oraz suma.

Ponieważ w kolumnie Color (Kolor ) w tabeli Product (Produkt ) nie zastosowano żadnego filtru, ocena miary dodaje nowy filtr do kontekstu filtru. Wartość 2 681 324,79 $ w pierwszym wierszu to przychód ze sprzedaży czerwonych produktów w Australii.

Przełączenie pierwszej kolumny wizualizacji tabeli z Regionu na Kolor spowoduje wygenerowanie innego wyniku, ponieważ kolumna Color w tabeli Product znajduje się teraz w kontekście filtru.

Obraz przedstawiający tabelę z trzema kolumnami: Color (Kolor), Revenue (Przychód) oraz Revenue Red (Przychód czerwony). W tabeli wyświetla się łącznie 10 wierszy oraz suma. Wartość w kolumnie Revenue Red (Przychód czerwony) jest taka sama w każdej grupie wierszy.

Formuła miary Revenue Red oblicza miarę Revenue (Przychód ) przez dodanie filtru w kolumnie Color (kolor czerwony) w tabeli Product . W związku z tym w wizualizacji grupującej produkty według koloru formuła miary zastępuje kontekst filtru nowym filtrem.

Taki rezultat może nie być pożądany. W następnej lekcji przedstawiono KEEPFILTERS funkcję języka DAX, która jest funkcją modyfikacji filtru, której można użyć do zachowania filtrów, a nie ich zastąpienia.