Applies ToExcel pro Microsoft 365 Excel 2024 Excel 2021 Excel 2019 Excel 2016 Excel 2013

Tato část popisuje, jak vytvářet filtry ve vzorcích DAX (Data Analysis Expressions). Ve vzorcích můžete vytvořit filtry a omezit tak hodnoty ze zdrojových dat, která se používají ve výpočtech. Provedete to tak, že zadáte tabulku jako vstup do vzorce a pak definujete výraz filtru. Zadaný výraz filtru se používá k dotazování na data a k vrácení pouze podmnožině zdrojových dat. Filtr se použije dynamicky při každé aktualizaci výsledků vzorce v závislosti na aktuálním kontextu dat.

V tomto článku

Vytvoření filtru tabulky použité ve vzorci

Filtry můžete použít ve vzorcích, které jako vstup přebírají tabulku. Místo zadávání názvu tabulky můžete pomocí funkce FILTER definovat podmnožinu řádků ze zadané tabulky. Tato podmnožina se pak předá jiné funkci pro operace, jako jsou vlastní agregace.

Předpokládejme například, že máte tabulku dat, která obsahuje informace o objednávkách o prodejcích, a chcete vypočítat, kolik každý prodejce prodal. Chcete ale zobrazit částku prodeje jenom pro prodejce, kteří prodali více jednotek produktů s vyšší hodnotou. Následující vzorec založený na ukázkovém sešitu DAX ukazuje jeden příklad vytvoření tohoto výpočtu pomocí filtru:

=SUMX(      FILTER ('ResellerSales_USD', 'ResellerSales_USD'[Quantity] > 5 &&      "ResellerSales_USD"[ProductStandardCost_USD] > 100),      'ResellerSales_USD'[SalesAmt]      )

  • První část vzorce určuje jednu z Power Pivot agregačních funkcí, které jako argument přebírá tabulku. Funkce SUMX vypočítá součet v tabulce.

  • Druhá část vzorce, FILTER(table, expression),říká SUMX která data použít. SUMX vyžaduje tabulku nebo výraz, který má za následek tabulku. Místo použití všech dat v tabulce můžete pomocí funkce FILTER určit, které řádky z tabulky se použijí.

    Výraz filtru má dvě části: první část pojmenuje tabulku, na kterou se filtr vztahuje. Druhá část definuje výraz, který se použije jako podmínka filtru. V tomto případě filtrujete prodejce, kteří prodali více než 5 jednotek, a produkty, které stojí více než 100 USD. Operátor, &&, je logický operátor AND, který označuje, že obě části podmínky musí být pravdivé, aby řádek patřil do filtrované podmnožiny.

  • Třetí část vzorce říká SUMX funkci, které hodnoty se mají sečíst. V tomto případě používáte pouze částku prodeje.

    Všimněte si, že funkce jako FILTER, které vracejí tabulku, nevrací tabulku ani řádky přímo, ale jsou vždy vložené do jiné funkce. Další informace o funkci FILTER a dalších funkcích používaných k filtrování včetně dalších příkladů najdete v tématu Funkce filtru (DAX).

    Poznámka: Výraz filtru je ovlivněn kontextem, ve kterém se používá. Pokud například použijete filtr v míře a míra se použije v kontingenční tabulce nebo kontingenčním grafu, může být vrácená podmnožina dat ovlivněna dalšími filtry nebo průřezy, které uživatel použil v kontingenční tabulce. Další informace o kontextu najdete v tématu Kontext ve vzorcích jazyka DAX.

Filtry, které odeberou duplicity

Kromě filtrování konkrétních hodnot můžete vrátit jedinečnou sadu hodnot z jiné tabulky nebo sloupce. To může být užitečné, když chcete spočítat počet jedinečných hodnot ve sloupci nebo použít seznam jedinečných hodnot pro jiné operace. Jazyk DAX poskytuje dvě funkce pro vrácení jedinečných hodnot: funkce DISTINCT a funkce VALUES.

  • Funkce DISTINCT prozkoumá jeden sloupec, který zadáte jako argument funkce, a vrátí nový sloupec obsahující pouze jedinečné hodnoty.

  • Funkce VALUES také vrátí seznam jedinečných hodnot, ale také vrátí neznámý člen. To je užitečné, když použijete hodnoty ze dvou tabulek, které jsou spojeny relací, a hodnota chybí v jedné tabulce a je přítomna v druhé. Další informace o neznámém členu najdete v tématu Kontext ve vzorcích jazyka DAX.

Obě tyto funkce vrací celý sloupec hodnot; Proto pomocí funkcí získáte seznam hodnot, který se pak předá jiné funkci. Pomocí následujícího vzorce můžete například získat seznam jedinečných produktů prodaných konkrétním prodejcem pomocí jedinečného kódu Product Key a potom spočítat produkty v tomto seznamu pomocí funkce COUNTROWS:

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

Začátek stránky

Jak kontext ovlivňuje filtry

Když do kontingenční tabulky nebo kontingenčního grafu přidáte vzorec DAX, výsledky vzorce můžou být ovlivněny kontextem. Pokud pracujete v tabulce Power Pivot, kontextem je aktuální řádek a jeho hodnoty. Pokud pracujete v kontingenční tabulce nebo kontingenčním grafu, kontext označuje sadu nebo podmnožinu dat, která je definována operacemi, jako je vytváření řezů nebo filtrování. Návrh kontingenční tabulky nebo kontingenčního grafu také ukládá vlastní kontext. Pokud například vytvoříte kontingenční tabulku, která seskupí prodej podle oblasti a roku, zobrazí se v kontingenční tabulce jenom data, která se vztahují k těmto oblastem a rokům. Proto se všechny míry, které přidáte do kontingenční tabulky, počítají v kontextu záhlaví sloupců a řádků a také v případě filtrů ve vzorci míry.

Další informace najdete v tématu Kontext ve vzorcích jazyka DAX.

Začátek stránky

Odebírání filtrů

Při práci se složitými vzorci můžete chtít přesně vědět, co jsou aktuální filtry, nebo můžete chtít upravit část filtru vzorce. JAZYK DAX poskytuje několik funkcí, které umožňují odebrat filtry a řídit, které sloupce se uchovávají jako součást aktuálního kontextu filtru. Tato část obsahuje přehled toho, jak tyto funkce ovlivňují výsledky ve vzorci.

Přepsání všech filtrů pomocí funkce ALL

Pomocí funkce ALL můžete přepsat všechny dříve použité filtry a vrátit všechny řádky v tabulce funkci, která provádí agregaci nebo jinou operaci. Pokud k ALLpoužijete jeden nebo více sloupců místo tabulky, funkce ALL vrátí všechny řádky a ignoruje všechny kontextové filtry.

Poznámka: Pokud znáte terminologii relačních databází, můžete si ALL představit jako generování přirozeného levého vnějšího spojení všech tabulek.

Předpokládejme například, že máte tabulky Sales (Prodeje) a Products (Produkty) a chcete vytvořit vzorec, který vypočítá součet prodejů pro aktuální produkt vydělený prodejem všech produktů. Je třeba vzít v úvahu skutečnost, že pokud se vzorec použije v míře, může uživatel kontingenční tabulky použít průřez k filtrování konkrétního produktu s názvem produktu na řádcích. Chcete-li tedy získat skutečnou hodnotu jmenovatele bez ohledu na filtry nebo průřezy, musíte přidat funkci ALL, která přepíše všechny filtry. Následující vzorec je jedním z příkladů, jak pomocí funkce ALL přepsat účinky předchozích filtrů:

=SUMA (Sales[Amount])/SUMX(Sales[Amount], FILTER(Sales; ALL(Products)))

  • První část vzorce SUMA (Sales[Amount]) vypočítá čitatel.

  • Součet bere v úvahu aktuální kontext, což znamená, že pokud vzorec přidáte do počítaný sloupec, použije se kontext řádku a pokud vzorec přidáte do kontingenční tabulky jako míru, použijí se všechny filtry použité v kontingenční tabulce (kontext filtru).

  • Druhá část vzorce vypočítá jmenovatele. Funkce ALL přepíše všechny filtry, které se můžou použít na tabulku Products .

Další informace včetně podrobných příkladů najdete v tématu Funkce ALL.

Přepsání konkrétních filtrů pomocí funkce ALLEXCEPT

Funkce ALLEXCEPT také přepíše existující filtry, ale můžete určit, že některé z existujících filtrů mají být zachovány. Sloupce, které pojmenujete jako argumenty funkce ALLEXCEPT, určují, které sloupce budou nadále filtrovány. Pokud chcete přepsat filtry z většiny sloupců, ale ne ze všech, je funkce ALLEXCEPT pohodlnější než ALL. Funkce ALLEXCEPT je zvlášť užitečná při vytváření kontingenčních tabulek, které by mohly být filtrovány na mnoho různých sloupců, a chcete řídit hodnoty, které se používají ve vzorci. Další informace, včetně podrobného příkladu použití příkazu ALLEXCEPT v kontingenční tabulce, najdete v tématu Funkce ALLEXCEPT.

Začátek stránky

Potřebujete další pomoc?

Chcete další možnosti?

Prozkoumejte výhody předplatného, projděte si školicí kurzy, zjistěte, jak zabezpečit své zařízení a mnohem více.

Komunity vám pomohou klást otázky a odpovídat na ně, poskytovat zpětnou vazbu a vyslechnout odborníky s bohatými znalostmi.