CROSSFILTER
Dotyczy: Obliczanie kolumny obliczeniowej tabeli Obliczeniowej Obliczenie wizualizacji
Określa kierunek filtrowania krzyżowego, który ma być używany w obliczeniach dla relacji, która istnieje między dwiema kolumnami.
Składnia
CROSSFILTER(<columnName1>, <columnName2>, <direction>)
Parametry
Termin | Definicja |
---|---|
columnName1 | Nazwa istniejącej kolumny przy użyciu standardowej składni języka DAX i w pełni kwalifikowana, która zwykle reprezentuje wiele stron relacji do użycia; jeśli argumenty są podane w odwrotnej kolejności, funkcja zamieni je przed ich użyciem. Ten argument nie może być wyrażeniem. |
nazwa_kolumny2 | Nazwa istniejącej kolumny przy użyciu standardowej składni języka DAX i w pełni kwalifikowana, która zwykle reprezentuje jedną stronę lub stronę odnośnika relacji do użycia; jeśli argumenty są podane w odwrotnej kolejności, funkcja zamieni je przed ich użyciem. Ten argument nie może być wyrażeniem. |
Kierunek | Kierunek filtrowania krzyżowego do użycia. Musi być jednym z następujących elementów: Brak — podczas tej relacji nie występuje filtrowanie krzyżowe. Oba — filtry po obu stronach filtruje drugą stronę. OneWay — filtry po jednej stronie lub po stronie odnośnika relacji filtruje drugą stronę. Tej opcji nie można używać z relacją jeden do jednego. Nie używaj tej opcji w relacji wiele-do-wielu, ponieważ nie jest jasne, która strona jest stroną odnośnika; Zamiast tego należy użyć OneWay_LeftFiltersRight lub OneWay_RightFiltersLeft. OneWay_LeftFiltersRight — filtry po stronie <kolumny columnName1> filtruje stronę <kolumny columnName2>. Tej opcji nie można używać z relacją jeden do jednego lub wiele do jednego. OneWay_RightFiltersLeft — filtry po stronie kolumny <columnName2> filtruje stronę <kolumny columnName1>. Tej opcji nie można używać z relacją jeden do jednego lub wiele do jednego. |
Wartość zwracana
Funkcja nie zwraca żadnej wartości; funkcja ustawia tylko kierunek filtrowania krzyżowego dla wskazanej relacji przez czas trwania zapytania.
Uwagi
W przypadku relacji 1:1 nie ma różnicy między jednym i obu kierunkami.
FUNKCJA CROSSFILTER może być używana tylko w funkcjach, które przyjmują filtr jako argument, na przykład: CALCULATE, CALCULATETABLE, CLOSINGBALANCEMONTH, CLOSINGBALANCEQUARTER, CLOSINGBALANCEYEAR, OPENINGBALANCEMONTH, OPENINGBALANCEQUARTER, OPENINGBALANCEYEAR, TOTALMTD, TOTALQTD i TOTALYTD.
FUNKCJA CROSSFILTER używa istniejących relacji w modelu, identyfikując relacje według kolumn punktu końcowego.
W funkcji CROSSFILTER ustawienie filtrowania krzyżowego relacji nie jest ważne; oznacza to, czy relacja jest ustawiona na filtrowanie jednego, czy obu kierunków w modelu nie ma wpływu na użycie funkcji. FUNKCJA CROSSFILTER zastąpi wszystkie istniejące ustawienia filtrowania krzyżowego.
Zwracany jest błąd, jeśli którakolwiek z kolumn o nazwie jako argument nie jest częścią relacji lub argumenty należą do różnych relacji.
Jeśli wyrażenia CALCULATE są zagnieżdżone, a więcej niż jedno wyrażenie CALCULATE zawiera funkcję CROSSFILTER, to najbardziej wewnętrzna funkcja CROSSFILTER jest tym, który zwycięża w przypadku konfliktu lub niejednoznaczności.
Ta funkcja nie jest obsługiwana w trybie DirectQuery w przypadku użycia w kolumnach obliczeniowych lub regułach zabezpieczeń na poziomie wiersza.
Przykład
Na poniższym diagramie modelu zarówno DimProduct, jak i DimDate mają relację jednego kierunku z usługą FactInternetSales.
Domyślnie nie możemy pobrać liczby produktów sprzedanych według roku:
Istnieją dwa sposoby uzyskiwania liczby produktów według roku:
Włącz dwukierunkowe filtrowanie krzyżowe w relacji. Spowoduje to zmianę sposobu działania filtrów dla wszystkich danych między tymi dwiema tabelami.
Użyj funkcji CROSSFILTER, aby zmienić sposób działania relacji tylko dla tej miary.
W przypadku korzystania z języka DAX możemy użyć funkcji CROSSFILTER, aby zmienić kierunek filtrowania krzyżowego między dwiema kolumnami zdefiniowanymi przez relację. W tym przypadku wyrażenie języka DAX wygląda następująco:
BiDi:= CALCULATE([Distinct Count of ProductKey], CROSSFILTER(FactInternetSales[ProductKey], DimProduct[ProductKey] , Both))
Korzystając z funkcji CROSSFILTER w wyrażeniu miary, uzyskujemy oczekiwane wyniki: