Sdílet prostřednictvím


CROSSFILTER

platí pro:Počítaný sloupecPočítaná tabulkamíravizuální

Určuje směr křížového filtrování, který se má použít ve výpočtu relace, která existuje mezi dvěma sloupci.

Syntax

CROSSFILTER(<columnName1>, <columnName2>, <direction>)

Parametry

Semestr Definice
columnName1 Název existujícího sloupce, který používá standardní syntaxi DAX a plně kvalifikovaný, který obvykle představuje mnoho stran relace, která se má použít; pokud jsou argumenty zadané v opačném pořadí, funkce je před použitím prohodí. Tento argument nemůže být výraz.
columnName2 Název existujícího sloupce, který používá standardní syntaxi DAX a plně kvalifikovaný, který obvykle představuje jednu stranu nebo vyhledávací stranu relace, která se má použít; pokud jsou argumenty zadané v opačném pořadí, funkce je před použitím prohodí. Tento argument nemůže být výraz.
Direction Směr křížového filtru, který se má použít. Musí to být jedna z těchto věcí:

None – v této relaci nedojde k žádnému křížovému filtrování.

Both – filtry na obou stranách filtrují druhou stranu.

OneWay – filtry na jedné straně nebo na straně vyhledávání relace filtrují druhou stranu. Tuto možnost nelze použít s relací 1:1 . Tuto možnost nepoužívejte u relace M:N, protože není jasné, která strana je vyhledávací stranou; místo toho použijte OneWay_LeftFiltersRight nebo OneWay_RightFiltersLeft.

OneWay_LeftFiltersRight – filtry na straně columnName1 filtruje stranu columnName2. Tuto možnost nelze použít s relací 1:1 nebo M:1.

OneWay_RightFiltersLeft – filtry na straně columnName2 filtruje stranu columnName1. Tuto možnost nelze použít s relací 1:1 nebo M:1.

Návratová hodnota

Funkce nevrací žádnou hodnotu; funkce nastaví směr křížového filtrování pouze pro označenou relaci po dobu trvání dotazu.

Poznámky

  • V případě relace 1:1 neexistuje žádný rozdíl mezi jedním a oběma směry.

  • CROSSFILTER lze použít pouze ve funkcích, které jako argument přebírají filtr, například: CALCULATE, CALCULATETABLE, CLOSINGBALANCEMONTH, CLOSINGBALANCEQUARTER, CLOSINGBALANCEYEAR, OPENINGBALANCEMONTH, OPENINGBALANCEQUARTER, OPENINGBALANCEYEAR, TOTALMTD, TOTALQTD a TOTALYTD funkce.

  • CROSSFILTER používá existující relace v modelu a identifikuje relace podle sloupců koncového bodu.

  • V CROSSFILTERnení nastavení křížového filtrování relace důležité; to znamená, jestli je relace nastavená tak, aby filtruje jeden nebo oba směry v modelu, neovlivňuje použití funkce. CROSSFILTER přepíše všechna existující nastavení křížového filtrování.

  • Pokud některý ze sloupců pojmenovaných jako argument není součástí relace nebo argumenty patří do různých relací, vrátí se chyba.

  • Pokud jsou výrazy CALCULATE vnořené a více než jeden výraz CALCULATE obsahuje funkci CROSSFILTER, pak nejvnitřnější CROSSFILTER je ten, který převládá v případě konfliktu nebo nejednoznačnosti.

  • Tato funkce není podporována pro použití v režimu DirectQuery při použití v počítaných sloupcích nebo pravidlech zabezpečení na úrovni řádků (RLS).

Příklad

V následujícím diagramu modelu mají DimProduct i DimDate jeden směrový vztah s FactInternetSales.

CROSSFILTER_Examp_DiagView

Ve výchozím nastavení nemůžeme získat počet prodaných produktů podle roku:

CROSSFILTER_Examp_PivotTable1

Počet produktů podle roku můžete získat dvěma způsoby:

  • Zapněte obousměrné křížové filtrování relace. Tím se změní způsob fungování filtrů pro všechna data mezi těmito dvěma tabulkami.

  • Pomocí funkce CROSSFILTER můžete změnit způsob fungování relací pouze pro tuto míru.

Při použití DAXmůžeme pomocí funkce CROSSFILTER změnit způsob chování směru křížového filtru mezi dvěma sloupci definovanými relací. V tomto případě výraz DAX vypadá takto:

BiDi:= CALCULATE([Distinct Count of ProductKey], CROSSFILTER(FactInternetSales[ProductKey], DimProduct[ProductKey] , Both))

Pomocí funkce CROSSFILTER ve výrazu míry získáme očekávané výsledky:

CROSSFILTER_Examp_PivotTable2