Office
Přihlásit se

Filtrování dat ve vzorcích jazyka DAX

Poznámka:  Snažíme se pro vás co nejrychleji zajistit aktuální obsah nápovědy ve vašem jazyce. Tato stránka byla přeložena automaticky a může obsahovat gramatické chyby nebo nepřesnosti. Naším cílem je to, aby pro vás byl její obsah užitečný. Mohli byste nám prosím dát ve spodní části této stránky vědět, jestli vám informace v článku pomohly? Pokud byste se rádi podívali na jeho anglickou verzi, najdete ji 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 je definován výraz používat 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.

    Nezapomeňte, že funkce například filtru, které vracejí tabulku, nikdy přímo vracejí tabulku nebo řádků, ale jsou vždy vložené do jiné funkce. Další informace o FILTROVÁNÍ a dalších funkcí pro filtrování, včetně další příklady naleznete v tématu Filtrovací funkce (DAX).

    Poznámka: Pro výraz filter je ovlivněna kontextu, ve kterém se používá. Například pokud používáte filtr v míru a míru slouží v kontingenční tabulce nebo kontingenčním grafu, podmnožinu dat, která je vrácena může to mít vliv na další filtry nebo průřezy, které má uživatel použité v kontingenční tabulce. Další informace o kontext přečtěte si téma kontext ve vzorcích jazyka DAX.

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

Kromě filtrování podle určité hodnoty, můžete vrátit jedinečnou sadu hodnot z jiné tabulky nebo sloupce. To může být užitečné, když budete chtít určení počtu jedinečných hodnot ve sloupci, nebo použijte seznam jedinečných hodnot pro dalších operací. Jazyk DAX poskytuje dvou funkcí pro vrácení různých hodnot: Funkce DISTINCT a Hodnoty (funkce).

  • 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í 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 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ůž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 Funkce ALL.

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

Funkce ALLEXCEPT také přepíše existujících filtrů, ale můžete určit, že některé z existujících filtrů zachovají. Sloupce název jako argumenty funkce ALLEXCEPT zadejte sloupce, které budou dál filtrovat. Pokud chcete přepsat filtry z souvislost většiny sloupců, ale ne všechny, je lepší než všechny ALLEXCEPT. Funkce ALLEXCEPT je užitečné při vytváření kontingenční tabulky, které můžou být filtrované podle různých sloupců a chcete určit hodnoty, které jsou použité ve vzorci. Další informace včetně podrobných příkladů informace o používání ALLEXCEPT v kontingenční tabulce najdete v tématu Funkce ALLEXCEPT.

Začátek stránky

Rozšiřte své dovednosti s Office
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.

×