Sprawdzanie kontekstu filtru
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 FALSE
wartość , 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.