Udostępnij za pośrednictwem


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.

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 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:

CROSSFILTER_Examp_PivotTable2