CROSSFILTER
Dotyczy:kolumna obliczeniowatabela obliczeniowaMiarawizualizacji
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 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. |
columnName2 |
Nazwa istniejącej kolumny przy użyciu standardowej składni 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. |
Direction |
Kierunek filtrowania krzyżowego do użycia. Musi być jednym z następujących elementów:None — nie ma filtrowania krzyżowego w tej relacji.Both — 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 columnName1 filtrować stronę columnName2 . Tej opcji nie można używać z relacją jeden do jednego lub wiele do jednego.OneWay_RightFiltersLeft — filtry po stronie columnName2 filtrować stronę 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.
CROSSFILTER można używać tylko w funkcjach, które przyjmują filtr jako argument, na przykład: CALCULATE, CALCULATETABLE, CLOSINGBALANCEMONTH, CLOSINGBALANCEQUARTER, CLOSINGBALANCEYEAR, OPENINGBALANCEMONTH, OPENINGBALANCEQUARTER, OPENINGBALANCEYEAR, TOTALMTD, TOTALQTD i TOTALYTD.
CROSSFILTER używa istniejących relacji w modelu, identyfikując relacje według kolumn punktu końcowego.
W CROSSFILTERustawienie 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. 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 CROSSFILTER jest taka, która 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 używania DAXmożemy użyć funkcji CROSSFILTER, aby zmienić sposób zachowania kierunku filtrowania krzyżowego 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 miary, uzyskujemy oczekiwane wyniki: