FILTROWANIE KRZYŻOWE

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

Okres 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.

CROSSFILTER_Examp_DiagView

Domyślnie nie możemy pobrać liczby produktów sprzedanych według roku:

CROSSFILTER_Examp_PivotTable1

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:

CROSSFILTER_Examp_PivotTable2