Tato část popisuje, jak vytvořit filtry ve vzorcích jazyka DAX (Data Analysis Expressions). Ve vzorcích můžete vytvářet filtry a omezit tak hodnoty ze zdrojových dat používaných při výpočtech. To můžete udělat tak, že zadáte tabulku jako vstup do vzorce a pak definujete výraz filtru. Výraz filtru, který poskytnete, se použije k dotazování na data a k vrácení pouze podmnožiny 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 v tabulce použité ve vzorci

Ve vzorcích, které mají tabulku jako vstup, můžete použít filtry. Místo zadání názvu tabulky použijete funkci FILTER k definování podmnožiny řá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 obsahující informace o objednávce prodejců a chcete vypočítat, kolik prodejců prodal. Chcete ale zobrazit částku prodeje jenom pro prodejce, kteří prodali více jednotek vašich produktů s vyšší hodnotou. Následující vzorec založený na ukázkovém sešitu jazyka DAX ukazuje jeden příklad toho, jak můžete tento výpočet vytvořit pomocí filtru:

=SUMX(
     FILTER ('ResellerSales_USD', 'ResellerSales_USD'[Množství] > 5 &&
     'ResellerSales_USD'[ProductStandardCost_USD] > 100),
     'ResellerSales_USD'[SalesAmt]
     )

  • První část vzorce určuje jednu z Power Pivot agregací, která přebírá tabulku jako argument. Funkce SUMX vypočítá součet nad tabulkou.

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

    Výraz filtru má dvě části: první část názvy tabulky, na kterou se filtr vztahuje. Druhá část definuje výraz, který se má použít jako podmínka filtru. V takovém případě filtrujete prodejce, kteří prodali více než 5 jednotek a produktů, které stojí víc než 100 Kč. Operátor && 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á funkci SUMX , které hodnoty se mají sečíst. V takovém případě používáte jenom částku prodeje.

    Všimněte si, že funkce, jako je filtr, které vrací tabulku, nikdy nevrací tabulku nebo řá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 v rozměru použijete filtr a míra se použije v kontingenční tabulce nebo PivotChart, může být podmnožina vrácených 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 duplicitní položky

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é, pokud 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í odliš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í jenom odlišné hodnoty.

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

Obě tyto funkce vracejí celý sloupec hodnot. Funkce proto slouží k získání seznamu hodnot, které se pak předá jiné funkci. Pomocí následujícího vzorce můžete například získat seznam různých produktů prodávaný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

Vliv kontextu na filtry

Když přidáte vzorec jazyka DAX do kontingenční tabulky nebo PivotChart, může mít kontext vliv na výsledky vzorce. Pokud pracujete s tabulkou Power Pivot, kontext je aktuální řádek a jeho hodnoty. Pokud pracujete s kontingenční tabulkou nebo PivotChart, znamená kontext sadu nebo podmnožinu dat definovanou operacemi, jako je kráování nebo filtrování. Návrh kontingenční tabulky nebo PivotChart také ukládá vlastní kontext. Pokud například vytvoříte kontingenční tabulku, která seskupí prodeje podle oblasti a roku, zobrazí se v kontingenční tabulce jenom data, která platí pro tyto oblasti a roky. Všechny míry, které přidáte do kontingenční tabulky, se proto počítají v kontextu záhlaví sloupců a řádků plus všechny filtry ve vzorci míry.

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

Začátek stránky

Odebrá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 změnit část filtru vzorce. Jazyk DAX nabízí několik funkcí, které umožňují odebrat filtry a řídit, které sloupce se zachovají 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 dříve použité filtry a vrátit všechny řádky v tabulce funkci, která provádí agregaci nebo jinou operaci. Pokud místo tabulky použijete jeden nebo více sloupců, jako argumenty k ALL, vrátí funkce ALL všechny řádky a ignoruje všechny filtry kontextu.

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

Předpokládejme například, že máte tabulky Prodej a Produkty a chcete vytvořit vzorec, který vypočítá součet prodejů pro aktuální produkt vydělený prodejem pro všechny produkty. Je nutné vzít v úvahu skutečnost, že pokud je vzorec použit v rozměru, může uživatel kontingenční tabulky používat průřez k filtrování určitého produktu s názvem produktu v řádcích. Pokud tedy chcete získat skutečnou hodnotu jmenovatele bez ohledu na filtry nebo průřezy, musíte přidat funkci ALL, aby se všechny filtry přepíšou. Následující vzorec je jedním z příkladů použití funkce ALL k přepsání efektů předchozích filtrů:

=SUMA (Prodej[Částka])/SUMX(Prodej[Částka], FILTER(Prodej, ALL(Produkty)))

  • První část vzorce SUMA (Prodej[Částka]) vypočítá čitatel.

  • Součet bere v úvahu aktuální kontext, což znamená, že pokud vzorec přidáte do počítaného sloupce, použije se kontext řádku a pokud přidáte vzorec 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á jmenovatel. Funkce ALL přepíše všechny filtry, které se můžou použít u Products tabulky.

Další informace, včetně podrobných příkladů, najdete v článku FUNKCE ALL.

Přepsání určitý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ů se mají zachovat. Sloupce, které pojmnováte jako argumenty funkce ALLEXCEPT, určují, které sloupce se budou dál filtrovat. Pokud chcete přepsat filtry z většiny sloupců, ale ne ze všech, je ALLEXCEPT pohodlnější než ALL. Funkce ALLEXCEPT je užitečná zejména při vytváření kontingenčních tabulek, které se můžou filtrovat v mnoha různých sloupcích, a chcete řídit hodnoty použité ve vzorci. Další informace, včetně podrobného příkladu použití funkce ALLEXCEPT v kontingenční tabulce, najdete v článku Funkce ALLEXCEPT.

Začátek stránky

Potřebujete další pomoc?

Rozšiřte své znalosti a dovednosti
Projít školení
Získejte nové funkce jako první
Připojit se systém Microsoft Office insiderům

Byly tyto informace užitečné?

Jak jste spokojeni s kvalitou jazyka?
Co ovlivnilo váš názor?

Děkujeme vám za zpětnou vazbu.

×