Zdieľať cez


CROSSFILTER

Vzťahuje sa na:vypočítaný stĺpecvypočítanej tabuľkyvizuálového výpočtu

Určuje smer krížového filtrovania, ktorý sa má použiť vo výpočte pre vzťah, ktorý existuje medzi dvomi stĺpcami.

Syntax

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

Parametre

Termín Definícia
columnName1 Úplný názov existujúceho stĺpca používajúci štandardnú syntax DAX, ktorý zvyčajne predstavuje časť "many" vzťahu, ktorý sa má použiť; ak sú argumenty zadané v opačnom poradí, funkcia ich pred použitím vymení. Tento argument nemôže byť výrazom.
columnName2 Úplný názov existujúceho stĺpca používajúci štandardnú syntax DAX, ktorý zvyčajne predstavuje stranu "one" alebo stranu vyhľadávania vzťahu, ktorý sa má použiť; ak sú argumenty zadané v opačnom poradí, funkcia ich pred použitím vymení. Tento argument nemôže byť výrazom.
Direction Smer krížového filtrovania, ktorý sa má použiť. Musí to byť jedna z nasledujúcich možností:

None – v tomto vzťahu sa neuplynú žiadne krížové filtrovanie.

Both – filtruje na oboch stranách filtre na druhej strane.

OneWay – filtruje na jednej alebo strane vyhľadávania vo vzťahu, ktorý filtruje druhú stranu. Túto možnosť nemožno použiť so vzťahom one-to-one . Túto možnosť nepoužívajte vo vzťahu typu many-to-many, pretože nie je jasné, ktorá strana je stranou vyhľadávania. namiesto toho použite OneWay_LeftFiltersRight alebo OneWay_RightFiltersLeft.

OneWay_LeftFiltersRight – filtre na strane columnName1 odfiltrujú stranu columnName2. Túto možnosť nemožno použiť so vzťahom one-to-one alebo many-to-one.

OneWay_RightFiltersLeft – filtre na strane columnName2 odfiltrujú stranu columnName1. Túto možnosť nemožno použiť so vzťahom one-to-one alebo many-to-one.

Vrátená hodnota

Funkcia nevráti žiadnu hodnotu. Funkcia nastaví iba smer krížového filtrovania pre označený vzťah počas trvania dotazu.

Poznámky

  • V prípade vzťahu 1:1 neexistuje rozdiel medzi smerom one a both.

  • CROSSFILTER možno použiť iba vo funkciách, ktoré používajú filter ako argument, napríklad: CALCULATE, CALCULATETABLE, CLOSINGBALANCEMONTH, CLOSINGBALANCEQUARTER, CLOSINGBALANCEYEAR, OPENINGBALANCEMONTH, OPENINGBALANCEQUARTER, OPENINGBALANCEYEAR, TOTALMTD, TOTALQTD a funkcie TOTALYTD.

  • CROSSFILTER používa existujúce vzťahy v modeli a vzťahy identifikuje podľa ich stĺpcov koncových bodov.

  • V CROSSFILTERnie je dôležité nastavenie krížového filtrovania vzťahu; či je vzťah nastavený na filtrovanie v jednom alebo oboch smeroch v modeli, nemá to vplyv na používanie funkcie. CROSSFILTER prepíše všetky existujúce nastavenia krížového filtrovania.

  • Ak niektorý zo stĺpcov pomenovaných ako argument nie je súčasťou vzťahu alebo argumenty patria k iným vzťahom, vráti sa chyba.

  • Ak sú CALCULATE výrazy vnorené a viac ako jeden CALCULATE výraz obsahuje funkciu CROSSFILTER, v prípade konfliktu alebo nejednoznačnosti má prednosť najvnútornejšia CROSSFILTER.

  • Táto funkcia nie je podporovaná na použitie v režime DirectQuery, keď sa používa vo vypočítaných stĺpcoch alebo v pravidlách zabezpečenia na úrovni riadkov (RLS).

Príklad

V nasledujúcom diagrame modelu sú stĺpce DimProduct a DimDate v jednosmernom vzťahu so stĺpcom FactInternetSales.

CROSSFILTER_Examp_DiagView

Predvolene nemôžeme získať počet produktov predaných podľa rokov:

CROSSFILTER_Examp_PivotTable1

Počet produktov podľa rokov možno získať dvoma spôsobmi:

  • Zapnutie obojsmerného krížového filtrovania vzťahu. Týmto sa zmení spôsob fungovania filtrov pre všetky údaje v týchto dvoch tabuľkách.

  • Pomocou funkcie CROSSFILTER môžete zmeniť fungovanie vzťahov len pre túto mierku.

Pri použití DAXmôžeme pomocou funkcie CROSSFILTER zmeniť spôsob správania smeru krížového filtrovania medzi dvomi stĺpcami definovanými vzťahom. V tomto prípade výraz DAX vyzerá takto:

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

Pomocou funkcie CROSSFILTER vo výraze mierky získame očakávané výsledky:

CROSSFILTER_Examp_PivotTable2