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.
Ve výchozím nastavení nemůžeme získat počet prodaných produktů podle roku:
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: