Filtrování dat ve vzorcích jazyka DAX

Důležité :  Tento článek je strojově přeložený – přečtěte si toto upozornění. Anglickou verzi tohoto článku pro referenci najdete tady.

Tato část popisuje jak vytvořit filtrů ve vzorcích Data Analysis Expressions (DAX). Můžete vytvořit filtrů ve vzorcích pro omezení hodnot ze zdrojových dat, který se používá při výpočtech v. Můžete to udělat tak, že zadání tabulky jako vstupů pro vzorec a potom definování výrazu filtru. Pro výraz filter poskytovaného slouží k dotaz na data a vrácená jen podmnožinu zdrojová data. Použije filtr dynamicky pokaždé, když aktualizovat výsledky vzorce, v závislosti na kontextu aktuálního data.

V tomto článku

Vytvoření filtru v tabulce použité ve vzorci

Filtry umožňující odebrání duplicitních položek

Jak kontext ovlivňuje filtry

Odebrání filtrů

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

Přepsání vybraných filtrů pomocí funkce ALLEXCEPT

Vytvoření filtru v tabulce použité ve vzorci

Ve vzorcích, které mají vstupní data ve formátu tabulky, lze použít filtry. Nezadávejte název tabulky, ale pomocí funkce FILTER definujte podmnožinu řádků v příslušné tabulce. Tato podmnožina je předána ke zpracování pomocí další funkce, například vlastní agregace.

Předpokládejme například, že máte tabulku dat, která obsahuje informace o objednávkách jednotlivých prodejců, a chcete vypočítat, kolik jednotliví prodejci prodávají. Chcete však zobrazit objem prodeje pouze pro prodejce, kteří prodávají více jednotek vašich hodnotnějších produktů. Následující vzorec, pocházející z ukázkového sešitu jazyka DAX, demonstruje jeden ze způsobů, jak lze tento výpočet vytvořit pomocí filtru:

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

  • První část vzorce Určuje jednu Power Pivot funkce agregace, které má tabulky jako argument. SUMX vypočítá součet nad tabulkou.

  • Druhá část vzorce FILTER(table, expression),, bude SUMX která data používat. SUMX vyžaduje tabulku nebo výraz, jehož výsledkem tabulky. Tady nepoužívejte všechna data v tabulce použijete funkci FILTER můžete určit, které řádků z tabulky se používají.

    Pro výraz filter platí dvě části: první část názvy tabulky, do kterého patří filtr. Druhá část definuje výraz, který má použít jako podmínka. V tomto případě filtrujete na prodejce, kteří prodané víc než 5 jednotky a produkty, které nákladů víc než 100 Kč. Operátor, & &, je logickým operátorem AND, což znamená, že obou částech podmínka musí být true pro řádek patří k filtrované podmnožina.

  • Třetí část vzorce předává funkci SUMX informaci o hodnotách, které mají být sečteny. V tomto případě se použije pouze částka prodeje.

    Funkce, které vrací tabulku (např. funkce FILTER), nikdy nevrací tabulku nebo řádky přímo, ale jsou vždycky vložené v jiné funkci. Další informace o funkci FILTER a dalších funkcích filtrů, včetně dalších příkladů, najdete v tématu Filtrovací funkce (DAX).

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

Filtry umožňující odebrání duplicitních položek

Kromě filtrování určitých hodnot lze také vrátit množinu jedinečných hodnot z jiné tabulky či sloupce. To je užitečné, pokud chcete zjistit počet jedinečných hodnot ve sloupci či použít seznam jedinečných hodnot k dalším operacím. Jazyk DAX poskytuje dvě funkce, které umožňují vrátit jedinečné hodnoty: DISTINCT a VALUES.

  • Funkce DISTINCT zkontroluje jeden sloupec zadaný jako argument funkce a vrátí nový sloupec obsahující pouze jedinečné hodnoty.

  • Funkce VALUES také vrátí seznam jedinečné hodnoty, ale taky vrátí neznámý člen. To je užitečná, když použijete hodnoty ze dvou tabulek, které jsou spojeny relace a hodnota je chybějícími v jedné tabulce a prezentovat ve druhém. Další informace o neznámý člen přečtěte si téma kontext ve vzorcích jazyka DAX.

Obě tyto funkce vrátí celý sloupec hodnot, proto pomocí funkcí získáte seznam hodnot, který je následně předán další funkci. Pomocí následujícího vzorce můžete například získat seznam jednotlivých produktů prodávaných konkrétním prodejcem. Použijete jedinečný klíč produktu a poté spočítáte produkty v seznamu pomocí funkce COUNTROWS:

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

Začátek stránky

Jak kontext ovlivňuje filtry

Když přidáte vzorec DAX do kontingenční tabulky nebo kontingenčního grafu, výsledek vzorce můžete ovlivněna kontextu. Pokud pracujete v tabulce Power Pivot, je v kontextu aktuálního řádku tabulky a jejich hodnoty. Pokud pracujete v kontingenční tabulce nebo kontingenčním grafu, kontextu znamená, že nastavení nebo podmnožinu dat, který je definován operací, jako je rozdělení na řezy nebo filtrování. Návrh kontingenční tabulky nebo kontingenčního grafu také ukládá vlastní kontextu. Například pokud vytvoříte kontingenční tabulku, která seskupuje prodejů podle regionů a rok, jen tu část dat, která se vztahuje k těmto oblastí a roky se zobrazí v kontingenční tabulce. Proto se vypočítávají míry, které přidáte do kontingenční tabulky v kontextu záhlaví sloupců a řádků plus žádné filtry ve vzorci míra.

Další informace naleznete 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ůže být nutné zjistit, které filtry jsou aktuálně používány, a upravit ve vzorci část s filtry. Jazyk DAX nabízí několik funkcí, které umožňují odebrat filtry a určit, které sloupce mají být zachovány jako součást aktuálního kontextu filtru. V této části zjistíte, jak tyto funkce ovlivňují výsledky vzorce.

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

Můžete použít funkci ALL ke změně žádné filtry, které byly dříve použity a vrátit všechny řádky v tabulce funkci, která provádí operace agregační nebo další. Pokud používáte jednu či více sloupců, místo tabulky, jako argumenty ALL, vrátí funkce ALL všechny řádky ignoruje všechny filtry kontextu.

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

Předpokládejme například, že máte tabulky Sales (Prodej) a Products (Produkty) a chcete vytvořit vzorec, který vypočítá součet prodejů aktuálního produktu dělený prodeji všech produktů. Je třeba vzít v úvahu, že pokud je vzorec použit v rámci míry, může uživatel kontingenční tabulky pomocí průřezu filtrovat určitý produkt, s názvem produktu v řádcích. Chcete-li tedy ve jmenovateli získat hodnotu true bez ohledu na všechny filtry či průřezy, je třeba přidat funkci ALL, a přepsat tak všechny filtry. Následující vzorec znázorňuje jeden ze způsobů, jak pomocí funkce ALL přepsat efekty předchozích filtrů:

= SUMA (prodej [Množství]) / SUMX (prodej [Množství] filtr (prodej, ALL(Products)))

  • První část vzorce, funkce SUM (Sales[Amount]), vypočítá dělenec.

  • V součtu je zohledněn aktuální kontext. Přidáte-li tedy vzorec do počítaného sloupce, je použit kontext řádku. Přidáte-li vzorec do kontingenční tabulky jako míru, jsou použity všechny filtry použité v kontingenční tabulce (kontext filtru).

  • Druhá část vzorce, vypočítá dělitele. Funkce ALL potlačí všechny filtry, které mohou být použity k tabulce Products .

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

Přepsání vybraných filtrů pomocí funkce ALLEXCEPT

Funkce ALLEXCEPT také přepíše existující filtry, ale můžete určit, že mají být některé existující filtry zachovány. Sloupce uvedené jako argumenty funkce ALLEXCEPT určují, které sloupce budou nadále filtrovány. Chcete-li přepsat filtry ve většině sloupců, ale nikoli ve všech, je vhodnější použít funkci ALLEXCEPT než funkci ALL. Funkce ALLEXCEPT je užitečná zejména v situacích, kdy vytváříte kontingenční tabulky, které mohou být filtrovány podle mnoha různých sloupců, a chcete určit, které hodnoty budou použity ve vzorci. Další informace včetně podrobného příkladu použití funkce ALLEXCEPT v kontingenční tabulce naleznete v tématu ALLEXCEPT, funkce.

Začátek stránky

Poznámka : Upozornění ke strojovému překladu: Tento článek přeložil počítačový systém bez zásahu člověka. Společnost Microsoft nabízí tyto strojové překlady proto, aby umožnila uživatelům, kteří nemluví anglicky, získat informace o produktech, službách a technologiích této společnosti. Protože je tento článek strojově přeložený, může obsahovat slovní, syntaktické nebo gramatické chyby.

Rozšiřte své znalosti a dovednosti
Projít školení
Získejte nové funkce jako první
Připojte se k účastníkům programu Office Insiders

Byly tyto informace užitečné?

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

Děkujeme vám za váš názor. Vypadá to, že bude užitečné, když vás spojíme s některým z našich agentů z podpory Office.

×