Sprawdzanie kontekstu filtru

Ukończone

Funkcja VALUES języka DAX umożliwia formułom określenie, jakie wartości znajdują się w kontekście filtru.

Składnia VALUES funkcji jest następująca:

VALUES(<TableNameOrColumnName>)

Funkcja wymaga przekazania odwołania do tabeli lub kolumny. Jeśli przekażesz jej odwołanie do tabeli, funkcja zwróci obiekt tabeli z takimi samymi kolumnami oraz wierszami znajdującymi się w kontekście filtru. Jeśli przekażesz odwołanie do kolumny, zwróci tabelę z jedną kolumną i unikalnymi wartościami znajdującymi się w kontekście filtru.

Funkcja zawsze zwraca obiekt tabeli, który może mieć więcej niż jeden wiersz. W związku z tym, aby sprawdzić, czy określona wartość jest w kontekście filtru, formuła musi najpierw przetestować, czy VALUES funkcja zwraca pojedynczy wiersz. Dwie funkcje mogą ułatwić wykonanie tego zadania: HASONEVALUE funkcje języka DAX i SELECTEDVALUE .

Funkcja HASONEVALUE zwraca wartość TRUE , gdy odwołanie do danej kolumny zostało odfiltrowane w dół do pojedynczej wartości.

Funkcja SELECTEDVALUE upraszcza zadanie określania, jaka może być pojedyncza wartość. Funkcja przyjmuje odwołanie kolumny jako argument i zwraca pojedynczą wartość. Jeśli w kontekście filtru znajduje się więcej wartości, zwraca pustą wartość (BLANK) lub inną przekazaną jej wartość.

W poniższym przykładzie użyjesz HASONEVALUE funkcji . Dodaj następującą miarę, która oblicza prowizję od sprzedaży do tabeli Sales( Sprzedaż ). Należy pamiętać, że w usłudze Adventure Works stawka prowizji wynosi 10 procent przychodów dla wszystkich krajów/regionów z wyjątkiem Stany Zjednoczone. w których sprzedawcy otrzymują 15% prowizji. Miarę sformatuj jako walutę z dwoma miejscami dziesiętnymi i dodaj ją do tabeli, która znajduje się na stronie 3 raportu.

Sales Commission =
[Revenue]
    * IF(
        HASONEVALUE('Sales Territory'[Country]),
        IF(
            VALUES('Sales Territory'[Country]) = "United States",
            0.15,
            0.1
        )
    )

Zwróć uwagę, że suma w kolumnie Sales Commission jest pusta (BLANK). Przyczyną jest to, że wiele wartości znajduje się w kontekście filtru dla kolumny Country w tabeli Sales Territory . W takim przypadku HASONEVALUE funkcja zwraca FALSEwartość , co powoduje mnożnik miary Revenue (przychód ) przez wartość BLANK (wartość pomnożona przez wartość BLANK jest PUSTA). Aby uzyskać sumę, należy użyć funkcji iteracyjnej. Funkcjami tego rodzaju zajmiemy się w dalszej części modułu.

Do testowania stanu filtru możesz użyć trzech innych funkcji:

  • ISFILTERED — Zwraca wartość TRUE , gdy odwołanie do przekazanej kolumny jest bezpośrednio filtrowane.
  • ISCROSSFILTERED — Zwraca wartość TRUE , gdy odwołanie do przekazanej kolumny jest pośrednio filtrowane. Filtrowanie krzyżowe kolumny zachodzi wtedy, gdy filtr zastosowany do innej kolumny w tej samej tabeli lub w powiązanej tabeli wpływa na wybraną kolumnę i filtruje ją.
  • ISINSCOPE — Zwraca wartość TRUE , gdy przekazane odwołanie do kolumny jest poziomem w hierarchii poziomów.

Wróć do strony 2 raportu, a następnie zmodyfikuj definicję miary Revenue % Total Country w celu przetestowania, czy kolumna Region w tabeli Sales Territory jest w zakresie. Jeśli nie jest, miara powinna zwrócić pustą wartość (BLANK).

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

Zwróć uwagę, że wartości w kolumnie Revenue % Total Country na wizualizacji macierzy wyświetlane są tylko wtedy, gdy region znajduje się w zakresie.