Udostępnij za pośrednictwem


CROSSFILTER

Dotyczy:kolumna obliczeniowatabela obliczeniowaMeasureobliczenia wizualne

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 DAXand w pełni kwalifikowana, która zwykle reprezentuje wiele stron relacji do użycia; if argumenty są podane w odwrotnej kolejności, funkcja zamieni je przed ich użyciem. Ten argument nie może być wyrażeniem.
columnName2 Nazwa istniejącej kolumny przy użyciu standardowej składni DAXand w pełni kwalifikowana, która zwykle reprezentuje jedną stronę or stronie odnośnika relacji do użycia; if argumenty są podane w odwrotnej kolejności, funkcja zamieni je przed ich użyciem. Ten argument nie może być wyrażeniem.
Direction Kierunek krzyżowyfilter do użycia. Musi być jednym z następujących elementów:

None — nie ma filtrowania krzyżowego w tej relacji.

Both - Filters po obu stronach filters drugiej stronie.

OneWay — Filters po jednej stronie or stronie odnośnika relacji filter 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 użyj OneWay_LeftFiltersRight or OneWay_RightFiltersLeft.

OneWay_LeftFiltersRight — Filters po stronie columnName1filter stronie columnName2. Tej opcji nie można używać z relacją jeden do jednego or relacji wiele do jednego.

OneWay_RightFiltersLeft — Filters po stronie columnName2filter stronie columnName1. Tej opcji nie można używać z relacją jeden do jednego or relacji wiele do jednego.

Zwracanie value

Funkcja nie zwraca value; funkcja ustawia tylko kierunek filtrowania krzyżowego dla wskazanej relacji dla duration zapytania.

Uwagi

  • W przypadku relacji 1:1 nie ma różnicy między jednym and obu kierunkach.

  • CROSSFILTER można używać tylko w funkcjach, które przyjmują filter jako argument, na przykład: CALCULATE, CALCULATETABLE, CLOSINGBALANCEMONTH, CLOSINGBALANCEQUARTER, CLOSINGBALANCEYEAR, OPENINGBALANCEMONTH, OPENINGBALANCEQUARTER, OPENINGBALANCEYEAR, TOTALMTD, funkcje TOTALQTDandTOTALYTD.

  • CROSSFILTER używa istniejących relacji w modelu, identyfikując relacje według kolumn punktu końcowego.

  • W CROSSFILTERustawienie filtrowania krzyżowego relacji jest not ważne; oznacza to, czy relacja jest ustawiona na filter jeden, or oba kierunki w modelu not wpływają na użycie funkcji. CROSSFILTER zastąpi wszystkie istniejące ustawienia filtrowania krzyżowego.

  • Zwracana jest errorif dowolną kolumnę o nazwie jako argument jest not częścią relacji or argumenty należą do różnych relacji.

  • If CALCULATE wyrażenia są zagnieżdżone, and więcej niż jedno wyrażenie CALCULATEcontains funkcji CROSSFILTER, a następnie najbardziej wewnętrzna CROSSFILTER jest tym, który zwycięża w przypadku konfliktu or niejednoznaczności.

  • Ta funkcja jest not obsługiwana do użycia w trybie DirectQuery w przypadku użycia w kolumnach obliczeniowych or reguł zabezpieczeń na poziomie wiersza.

Przykład

Na poniższym diagramie modelu zarówno DimProduct and DimDate mają relację jednego kierunku z factInternetSales.

CROSSFILTER_Examp_DiagView

Domyślnie nie możemy uzyskać Count produktów sprzedawanych przez year:

CROSSFILTER_Examp_PivotTable1

Istnieją dwa sposoby uzyskiwania count produktów przez year:

  • Włącz dwukierunkowe filtrowanie krzyżowe w relacji. Spowoduje to zmianę sposobu działania filters dla all danych między tymi dwiema tabelami.

  • Użyj funkcji CROSSFILTER, aby zmienić sposób działania relacji tylko dla tego measure.

W przypadku używania DAXmożemy użyć funkcji CROSSFILTER, aby zmienić sposób zachowania kierunku krzyżowegofilter między dwiema kolumnami zdefiniowanymi przez relację. W tym przypadku wyrażenie 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 measure, uzyskujemy oczekiwane wyniki:

CROSSFILTER_Examp_PivotTable2