CROSSFILTER
Platí pro: Výpočet počítané tabulky Počítaná tabulka Výpočet vizuálu
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.
Syntaxe
CROSSFILTER(<columnName1>, <columnName2>, <direction>)
Parametry
Pojem | definice |
---|---|
columnName1 | Název existujícího sloupce, který používá standardní syntaxi jazyka DAX a plně kvalifikovaný, který obvykle představuje 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. |
columnName2 | Název existujícího sloupce, který používá standardní syntaxi jazyka 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. |
Směr | Směr křížového filtru, který se má použít. Musí to být jedna z těchto věcí: Žádné – v této relaci nedojde k žádnému křížovému filtrování. Obě – Filtry na obou stranách filtrují druhou stranu. OneWay – Filtruje na jedné straně nebo na straně vyhledávání relace filtruje 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. |
Vrácená 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.
Funkce 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.
U funkce CROSSFILTER není 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. 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, je nejvnitřnější funkce CROSSFILTER 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í jazyka DAX můž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: