Filtrovanie údajov vo vzorcoch jazyka DAX

V tejto časti sa popisuje postup pri vytváraní filtrov v rámci vzorcov DAX (Data Analysis Expressions). Vo vzorcoch môžete vytvoriť filtre na obmedzenie hodnôt zo zdrojových údajov, ktoré sa používajú vo výpočtoch. Vykonáte to tak, že zadáte tabuľku ako vstup do vzorca a potom definujete výraz filtra. Výraz filtra, ktorý ste zadávali, sa použije na dotazy na údaje a vráti len podmnožinu zdrojových údajov. Filter sa použije dynamicky vždy, keď aktualizujete výsledky vzorca, v závislosti od aktuálneho kontextu údajov.

Obsah tohto článku

Vytvorenie filtra v tabuľke použitej vo vzorci

Filtre môžete použiť vo vzorcoch, ktoré zaberajú tabuľku ako vstup. Namiesto zadania názvu tabuľky použijete funkciu FILTER na definovanie podmnožiny riadkov zo zadanej tabuľky. Táto podmnožina potom prejde na inú funkciu, napríklad na operácie, ako sú napríklad vlastné agregácie.

Predpokladajme napríklad, že máte tabuľku s údajmi, ktorá obsahuje informácie o objednávke predajcov, a chcete vypočítať, koľko jednotlivých predajcov sa predalo. Ak však chcete zobraziť čiastku predaja len tým predajcom, ktorí predali viacero jednotiek produktov s vyššou hodnotou. Nasledujúci vzorec založený na vzorovom zošite DAX zobrazuje jeden príklad toho, ako môžete vytvoriť tento výpočet pomocou filtra:

= SUMX (
     FILTER (' ResellerSales_USD ', ' ResellerSales_USD ' [množstvo] > 5 &&
     ' ResellerSales_USD ' [ProductStandardCost_USD] > 100),
     ' ResellerSales_USD ' [SalesAmt]
     )

  • Prvá časť vzorca určuje jednu z Power Pivot agregačných funkcií, ktorá zaberie tabuľku ako argument. SUMX vypočíta súčet v tabuľke.

  • Druhá časť vzorca FILTER(table, expression),rozpráva SUMX , ktoré údaje sa majú použiť. SUMX vyžaduje tabuľku alebo výraz, ktorý má za následok tabuľku. Tu namiesto použitia všetkých údajov v tabuľke použijete funkciu FILTER na určenie, ktoré riadky z tabuľky sa používajú.

    Výraz filtra pozostáva z dvoch častí: v prvej časti sú názvy tabuľky, na ktorú sa filter vzťahuje. Druhá časť definuje výraz, ktorý sa má použiť ako podmienka filtra. V tomto prípade sa filtrujete s predajcami, ktorí predali viac ako 5 jednotiek a produkty, ktoré sú drahšie ako $100. Operátor, &&, je logický a operátor, ktorý označuje, že obidve časti podmienky musia byť pravdivé pre riadok, ktorý patrí do filtrovanej podmnožiny.

  • Tretia časť vzorca rozpráva SUMX funkciu, ktorej hodnoty by sa mali zhrnúť. V tomto prípade používate len čiastku predaja.

    Všimnite si, že funkcie, ako napríklad FILTER, ktoré vracajú tabuľku, nikdy nevrátia tabuľku alebo riadky priamo, ale sú vždy vložené do inej funkcie. Ďalšie informácie o FILTRoch a ďalších funkciách používaných na filtrovanie vrátane ďalších príkladov nájdete v téme funkcie filtrovania (Dax).

    Poznámka: Výraz filtra ovplyvňuje kontext, v ktorom sa používa. Ak napríklad použijete filter v miere a použijete ukazovateľ v kontingenčnej tabuľke alebo kontingenčného grafu, podmnožinu vrátených údajov môžu ovplyvniť ďalšie filtre alebo rýchle filtre, ktoré používateľ použil v kontingenčnej tabuľke. Ďalšie informácie o kontexte nájdete v téme kontext vo vzorcoch Dax.

Filtre, ktoré odstraňujú duplicity

Okrem filtrovania pre konkrétne hodnoty môžete vrátiť jedinečnú množinu hodnôt z inej tabuľky alebo stĺpca. Môže to byť užitočné, ak chcete spočítať počet jedinečných hodnôt v stĺpci alebo použiť zoznam jedinečných hodnôt pre iné operácie. DAX poskytuje dve funkcie na vracajúce sa odlišné hodnoty: Funkcia DISTINCT a Values.

  • Funkcia DISTINCT preskúma jeden stĺpec, ktorý ste určili ako argument funkcie, a vráti nový stĺpec, ktorý obsahuje len odlišné hodnoty.

  • Funkcia VALUEs vráti aj zoznam jedinečných hodnôt, ale vráti aj neznámeho člena. Je to užitočné, ak používate hodnoty z dvoch tabuliek, ktoré sa spájajú so vzťahom, a v jednej tabuľke chýba hodnota a v druhej sa nachádza. Ďalšie informácie o neznámeho člena nájdete v téme kontext vo vzorcoch Dax.

Obidve tieto funkcie vracajú celý stĺpec hodnôt. Preto sa pomocou funkcií zobrazí zoznam hodnôt, ktoré sa potom odovzdajú do inej funkcie. Nasledujúci vzorec môžete použiť napríklad na získanie zoznamu rôznych produktov predávaných konkrétnym predajcom s použitím jedinečného kódu Product Key a potom spočítať produkty v tomto zozname pomocou funkcie COUNTROWS:

= COUNTROWS (DISTINCT (' ResellerSales_USD ' [ProductKey]))

Na začiatok stránky

Vplyv kontextu na filtre

Po pridaní vzorca DAX do kontingenčnej tabuľky alebo kontingenčného grafu môžu výsledky vzorca ovplyvniť kontext. Ak pracujete v Power Pivot nej tabuľke, kontext je aktuálny riadok a jeho hodnoty. Ak pracujete v kontingenčnej tabuľke alebo kontingenčného grafu, kontext znamená množinu alebo podmnožinu údajov, ktoré sú definované operáciami, ako je napríklad krájanie alebo filtrovanie. Návrh kontingenčnej tabuľky alebo kontingenčného grafu tiež ukladá vlastný kontext. Ak napríklad vytvoríte kontingenčnú tabuľku, ktorá zoskupuje predaj podľa oblastí a rokov, v kontingenčnej tabuľke sa zobrazí len údaj, ktorý sa vzťahuje na tieto oblasti a roky. Všetky opatrenia, ktoré pridáte do kontingenčnej tabuľky, sa preto vypočítavajú v kontexte záhlavia stĺpcov a riadkov a všetkých filtrov vo vzorci mierky.

Ďalšie informácie nájdete v téme kontext vo vzorcoch Dax.

Na začiatok stránky

Odstránenie filtrov

Pri práci so zložitými vzorcami možno budete chcieť presne zistiť, čo sú aktuálne filtre, alebo môžete upraviť časť filtra vzorca. DAX poskytuje niekoľko funkcií, ktoré vám umožnia odstrániť filtre, a riadiť, ktoré stĺpce sa zachovajú ako súčasť aktuálneho kontextu filtra. Táto časť poskytuje prehľad o tom, ako tieto funkcie ovplyvňujú výsledky vo vzorci.

Prepísanie všetkých filtrov pomocou funkcie ALL

Funkciu ALL môžete použiť na prepísanie všetkých predtým použitých filtrov a na vrátenie všetkých riadkov v tabuľke na funkciu, ktorá vykonáva agregačnú alebo inú operáciu. Ak namiesto tabuľky použijete jeden alebo viacero stĺpcov, ako argumenty na ALL, funkcia ALL vráti všetky riadky, pričom ignoruje všetky kontextové filtre.

Poznámka: Ak poznáte terminológiu relačnej databázy, môžete premýšľať o tom, ALL ako generovanie prirodzeného ľavého vonkajšieho spojenia všetkých tabuliek.

Predpokladajme napríklad, že máte tabuľky, predaj a produkty, a chcete vytvoriť vzorec, ktorý vypočíta súčet predajov pre aktuálny produkt vydeleného predajom pre všetky produkty. Je potrebné vziať do úvahy skutočnosť, že ak sa vzorec použije v určitom meradle, môže používateľ kontingenčnej tabuľky použiť rýchly filter na filtrovanie konkrétneho produktu s názvom produktu v riadkoch. Ak chcete teda získať skutočnú hodnotu menovateľa bez ohľadu na filtre alebo rýchle filtre, musíte pridať funkciu ALL na prepísanie všetkých filtrov. Nasledujúci vzorec je príkladom toho, ako používať všetky na prepísanie efektov predchádzajúcich filtrov:

= SUM (predaj [suma])/SUMX (predaj [čiastka], FILTER (predaj, všetky (produkty)))

  • Prvá časť vzorca, SUM (predaj [čiastka]) vypočíta čitateľ.

  • Súčet berie do úvahy aktuálny kontext, čo znamená, že ak pridáte vzorec do vypočítavaného stĺpca, použije sa kontext riadka a ak pridáte vzorec do kontingenčnej tabuľky ako mieru, použijú sa všetky filtre použité v kontingenčnej tabuľke (kontext filtra).

  • Druhá časť vzorca vypočíta menovateľ. Funkcia ALL prepíše všetky filtre, ktoré možno použiť v tabuľke Products .

Ďalšie informácie vrátane podrobných príkladov nájdete v téme všetky funkcie.

Prepísanie konkrétnych filtrov pomocou funkcie ALLEXCEPT

Funkcia ALLEXCEPT tiež prepíše existujúce filtre, ale môžete určiť, aby sa zachovali niektoré z existujúcich filtrov. Stĺpce, ktoré považujete za argumenty k funkcii ALLEXCEPT, určujú, ktoré stĺpce sa budú aj naďalej filtrovať. Ak chcete prepísať filtre z väčšiny stĺpcov, ale nie všetky, ALLEXCEPT je pohodlnejší než všetky. Funkcia ALLEXCEPT je obzvlášť užitočná pri vytváraní kontingenčných tabuliek, ktoré môžu byť filtrované v mnohých rôznych stĺpcoch, a chcete ovládať hodnoty použité vo vzorci. Ďalšie informácie vrátane podrobného príkladu použitia ALLEXCEPT v kontingenčnej tabuľke nájdete v téme ALLEXCEPT (funkcia).

Na začiatok stránky

Poznámka:  Táto stránka bola preložená automaticky a môže obsahovať gramatické chyby alebo nepresnosti. Naším cieľom je, aby bol tento obsah pre vás užitočný. Môžete nám dať vedieť, či boli tieto informácie pre vás užitočné? Tu nájdete anglický článok ako referenciu.

Potrebujete ďalšiu pomoc?

Rozšírte svoje zručnosti práce s balíkom Office
Preskúmať školenie
Buďte medzi prvými, ktorí získajú nové funkcie
Pridajte sa k insiderom pre Office

Boli tieto informácie užitočné?

Ďakujeme za vaše pripomienky!

Ďakujeme vám za pripomienky. Pravdepodobne vám pomôže, ak vás spojíme s pracovníkom podpory pre Office.

×