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 columnName1 filter stronie columnName2 . Tej opcji nie można używać z relacją jeden do jednego or relacji wiele do jednego.OneWay_RightFiltersLeft — Filters po stronie columnName2 filter 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.
Domyślnie nie możemy uzyskać Count produktów sprzedawanych przez year:
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: