Używanie funkcji modyfikujących filtry

Ukończone

W przypadku korzystania z CALCULATE funkcji można przekazać funkcje modyfikacji filtru, co pozwala osiągnąć więcej niż dodawanie samych filtrów.

Usuwanie filtrów

REMOVEFILTERS Użyj funkcji języka DAX jako wyrażenia filtruCALCULATE, aby usunąć filtry z kontekstu filtru. W ten sposób można usuwać filtry z jednej kolumny, kilku kolumn albo wszystkich kolumn w tabeli.

Uwaga

Funkcja REMOVEFILTERS jest stosunkowo nowa. W poprzednich wersjach języka DAX usunięto filtry przy użyciu ALL funkcji języka DAX lub wariantów, w tym ALLEXCEPT funkcji języka DAX i ALLNOBLANKROW . Funkcje te zarówno modyfikują filtry, jak i zwracają obiekty tabel o określonych wartościach. Wspominamy o nich w tym miejscu, ponieważ prawdopodobnie natkniesz się na dokumentację i przykładowe formuły, które używają tych funkcji do usuwania filtrów.

W poniższym przykładzie dodasz nową miarę do tabeli Sales ( Sprzedaż ), która ocenia miarę Revenue (Przychód ), ale robi to przez usunięcie filtrów z tabeli Sales Territory (Terytorium sprzedaży ). Formatowanie miary ustaw na walutę z dwoma miejscami dziesiętnymi.

Revenue Total Region = CALCULATE([Revenue], REMOVEFILTERS('Sales Territory'))

Teraz dodaj miarę Revenue Total Region (Łączny przychód w regionie) do wizualizacji macierzy, która znajduje się na stronie 2 raportu. Wizualizacja macierzy pogrupuje wiersze tabeli Sales Territory według trzech kolumn: Group (Grupa), Country (Kraj) oraz Region.

Obraz przedstawiający macierz zatytułowaną „Reseller Revenue” (Przychody odsprzedawców) z wierszami pogrupowanymi według kolumn Group (Grupa), Country (Kraj) i Region oraz podsumowaniami w kolumnach Revenue (Przychód) i Revenue Total Region (Łączny przychód w regionie). Wartość w kolumnie Revenue Total Region jest taka sama w każdej grupie wierszy.

Zwróć uwagę, że wszystkie wartości w kolumnie Revenue Total Region są takie same. Jest to łączna wielkość przychodu.

Taki wynik sam w sobie nie jest przydatny, ale można użyć go jako mianownika podczas obliczania procentu całkowitych przychodów. Dlatego teraz zastąpisz miarę Revenue Total Region poniższą definicją miary. (Ta nowa definicja zmienia nazwę miary i deklaruje dwie zmienne. Pamiętaj, aby sformatować miarę jako wartość procentową z dwoma miejscami dziesiętnymi).

Revenue % Total Region =
VAR CurrentRegionRevenue = [Revenue]
VAR TotalRegionRevenue =
    CALCULATE(
        [Revenue],
        REMOVEFILTERS('Sales Territory')
    )
RETURN
    DIVIDE(
        CurrentRegionRevenue,
        TotalRegionRevenue
    )

Sprawdź, czy wizualizacja macierzy wyświetla teraz wartości Revenue % Total Region (Procent łącznego przychodu w regionie).

Obraz przedstawiający wizualizację macierzy zatytułowaną „Reseller Revenue” (Przychody odsprzedawców) z wierszami pogrupowanymi według kolumn Group (Grupa), Country (Kraj) i Region oraz podsumowaniami w kolumnach Revenue (Przychód) i Revenue % Total Region (Procent łącznego przychodu w regionie).

Teraz utworzysz kolejną miarę. Tym razem będzie obliczać stosunek przychodu w regionie do przychodu w całym kraju.

Zanim to zrobisz, zwróć uwagę, że wartość w kolumnie Revenue % Total Region dla regionu Southwest (Południowy zachód) wynosi 22,95%. Sprawdź kontekst filtru tej komórki. Przejdź do widoku danych, a następnie w okienku Pola wybierz tabelę Sales Territory .

Zastosuj następujące filtry kolumn:

  • Group — North America (Grupa — Ameryka Północna)
  • Country — United States (Kraj — Stany Zjednoczone)
  • Region — Southwest (Region — Południowy zachód)

Obraz przedstawiający filtry tabeli Sales Territory (Terytorium sprzedaży) w programie Power BI Desktop. Wybrane są następujące filtry: (1) Group = North America (Grupa = Ameryka Północna), (2) Country = United States (Kraj = Stany Zjednoczone), (3) Region = Southwest (Region = Południowy zachód).

Zauważ, że filtry zmniejszyły tabelę do jednego wiersza. Twoim celem jest obliczyć stosunek przychodów w regionie do przychodów w całym kraju, usuń więc filtr z kolumny Region.

Obraz przedstawiający menu kontekstowe kolumny z wyróżnionym poleceniem Wyczyść filtry.

Zauważ, że tabela ma teraz pięć wierszy. Wszystkie z nich należą do Stanów Zjednoczonych. Jeśli wyczyścisz filtr kolumny Region i zachowasz filtry kolumn Country oraz Group, uzyskasz nowy kontekst filtru dla kraju, w którym znajduje się dany region.

W poniższej definicji miary widać, jak można wyczyścić lub usunąć filtr z kolumny. W logice języka DAX jest to niewielka i subtelna zmiana w formule miary Revenue % Total Region : REMOVEFILTERS Funkcja usuwa teraz filtry z kolumny Region zamiast wszystkich kolumn tabeli Sales Territory .

Revenue % Total Country =
VAR CurrentRegionRevenue = [Revenue]
VAR TotalCountryRevenue =
    CALCULATE(
        [Revenue],
        REMOVEFILTERS('Sales Territory'[Region])
    )
RETURN
    DIVIDE(
        CurrentRegionRevenue,
        TotalCountryRevenue
    )

Dodaj miarę Revenue % Total Country do tabeli Sales (Sprzedaż ), a następnie sformatuj ją jako wartość procentową z dwoma miejscami dziesiętnymi. Nową miarę dodaj do wizualizacji macierzy.

Obraz przedstawiający wizualizację macierzy zatytułowaną „Reseller Revenue” (Przychody odsprzedawców) z wierszami pogrupowanymi według kolumn Group (Grupa), Country (Kraj) i Region oraz podsumowaniami w kolumnach Revenue (Przychód), Revenue % Total Region (Procent łącznego przychodu w regionie) i Revenue % Total Country (Procent łącznego przychodu w kraju). W kolumnie Revenue % Total Country tylko wartości dla grupy United States (Stany Zjednoczone) nie wynoszą 100%.

Zauważ, że wszystkie wartości wynoszą 100% — oprócz wartości dla regionów Stanów Zjednoczonych. Dzieje się tak dlatego, że w danych firmy Adventure Works Stany Zjednoczone mają regiony, podczas gdy pozostałe kraje ich nie mają.

Uwaga

Modele tabelaryczne nie obsługują niewyrównanych hierarchii, to znaczy hierarchii o zróżnicowanej głębokości. Dlatego często powtarza się wartości nadrzędne (dowolnego poziomu) na niższych poziomach hierarchii. Na przykład Australia nie ma regionu, więc wartość kraju/regionu jest powtarzana jako nazwa regionu. Zawsze lepiej przechowywać zrozumiałą wartość zamiast pustej (BLANK).

W następnym przykładzie utworzysz ostatnią miarę. Dodaj miarę Revenue % Total Group (Procent łącznego przychodu w grupie) i ustaw jej formatowanie na wartość procentową z dwoma miejscami dziesiętnymi. Następnie dodaj nową miarę do wizualizacji macierzy.

Revenue % Total Group =
VAR CurrentRegionRevenue = [Revenue]
VAR TotalGroupRevenue =
    CALCULATE(
        [Revenue],
        REMOVEFILTERS(
            'Sales Territory'[Region],
            'Sales Territory'[Country]
        )
    )
RETURN
    DIVIDE(
        CurrentRegionRevenue,
        TotalGroupRevenue
    )

Obraz przedstawiający wizualizację macierzy zatytułowaną „Reseller Revenue” (Przychody odsprzedawców) z wierszami pogrupowanymi według kolumn Group (Grupa), Country (Kraj) i Region oraz podsumowaniami w kolumnach Revenue (Przychód), Revenue % Total Region (Procent łącznego przychodu w regionie), Revenue % Total Country (Procent łącznego przychodu w kraju) oraz Revenue % Total Group (Procent łącznego przychodu w grupie).

Po usunięciu filtrów z kolumn Region i Kraj w tabeli Sales Territory miara obliczy przychód z regionu jako stosunek przychodu z grupy.

Zachowywanie filtrów

Aby zachować filtry, możesz użyć KEEPFILTERS funkcji języka DAX jako wyrażenia filtru CALCULATE w funkcji .

Aby zobaczyć, jak można to zrobić, otwórz stronę 1 raportu. Następnie zmodyfikuj definicję miary Revenue Red , aby użyć KEEPFILTERS funkcji .

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

Obraz przedstawiający wizualizację tabeli z trzema kolumnami: Color (Kolor), Revenue (Przychód) oraz Revenue Red (Przychód czerwony). Wyświetla się łącznie dziewięć wierszy. W kolumnie Revenue Red wszystkie wiersze są puste (BLANK) oprócz wiersza Red (Czerwony) i łącznej sumy.

W wizualizacji tabeli wyświetla się tylko jedna wartość Revenue Red. Przyczyną jest to, że wyrażenie filtru warunkowego zachowuje istniejące filtry w kolumnie Color w tabeli Product . Kolory inne niż czerwony wyświetlają pustą wartość (BLANK), ponieważ konteksty filtru i wyrażenia filtru dla tych dwóch filtrów zostają połączone. Kolor czarny i kolor czerwony są przecinane, a ponieważ oba te elementy nie mogą być TRUE jednocześnie filtrowane przez żadne wiersze produktu. Możliwe jest tylko, że oba czerwone filtry mogą być TRUE jednocześnie, co wyjaśnia, dlaczego jest wyświetlana jedna wartość Revenue Red .

Używanie nieaktywnych relacji

Nieaktywna relacja modelu może propagować filtry tylko wtedy, gdy USERELATIONSHIP funkcja języka DAX jest przekazywana jako wyrażenie filtru CALCULATE do funkcji. Jeśli używasz tej funkcji do zaangażowania nieaktywnej relacji, aktywna relacja automatycznie zostanie zdezaktywowana.

Zapoznaj się z przykładową definicją miary, która wykorzystuje nieaktywną relację do obliczenia miary Revenue według dat wysyłki:

Revenue Shipped =
CALCULATE (
    [Revenue],
    USERELATIONSHIP('Date'[DateKey], Sales[ShipDateKey])
)

Modyfikowanie zachowania relacji

Zachowanie relacji modelu można zmodyfikować, gdy wyrażenie jest oceniane, przekazując CROSSFILTER funkcję języka DAX jako wyrażenie filtru CALCULATE do funkcji. To zaawansowana możliwość.

Funkcja CROSSFILTER może modyfikować kierunki filtrowania (zarówno od jednego do jednego, jak i z jednego do obu), a nawet wyłączyć relację.