Kontext 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.

Kontext umožňuje provádět dynamické analýzy, při které se výsledky vzorce mohou měnit tak, aby odrážely aktuální výběr řádků nebo buněk a taky všechna související data. Pochopení kontextu a efektivní používání kontextu je velmi důležité pro vytváření velmi výkonných vzorců, dynamických analýz a pro řešení problémů ve vzorcích.

Tato část definuje různé typy kontextu: kontext řádku, kontext dotazu a kontext filtru. Vysvětluje, jak je kontext vyhodnocován pro vzorce v počítaných sloupcích a v kontingenčních tabulkách.

Poslední část tohoto článku obsahuje odkazy na podrobné příklady, které ilustrují, jak se výsledky vzorců mění podle kontextu.

Principy kontextu

Vzorce v Power Pivot můžou být ovlivněné filtry použitými v kontingenční tabulce, relacemi mezi tabulkami a filtry použitými ve vzorcích. Kontext je to, co umožňuje dynamickou analýzu. Princip vytváření a řešení problémů se vzorci je důležitý.

Existují různé typy kontextu: kontext řádku, kontext dotazu a kontext filtru.

Kontext řádku se dá představit jako "aktuální řádek". Pokud jste vytvořili počítaný sloupec, obsahuje kontext řádku hodnoty v jednotlivých řádcích a hodnotách ve sloupcích, které souvisejí s aktuálním řádkem. K disPozici jsou také některé funkce (dřívější a nejstarší), které získávají hodnotu z aktuálního řádku, a pak tuto hodnotu použijte při provádění operací přes celou tabulku.

Kontext dotazu odkazuje na podmnožinu dat, která se implicitně vytvoří pro každou buňku v kontingenční tabulce v závislosti na záhlaví řádků a sloupců.

Kontext filtru je sada hodnot povolených v jednotlivých sloupcích na základě omezení filtru, která byla použita na řádek nebo jsou definována výrazy filtru ve vzorci.

Začátek stránky

Kontext řádku

Pokud ve výpočtovém sloupci vytvoříte vzorec, zahrne kontext řádku pro tento vzorec hodnoty ze všech sloupců v aktuálním řádku. Pokud tabulka souvisí s jinou tabulkou, obsah zahrnuje taky všechny hodnoty z této tabulky, které souvisejí s aktuálním řádkem.

Předpokládejme například, že vytvoříte počítaný sloupec = [doPravné] + [daň],

, která přidá dva sloupce ze stejné tabulky. Tento vzorec se chová jako vzorce v excelové tabulce, která automaticky odkazuje na hodnoty ze stejného řádku. Tabulky se liší od oblastí: nemůžete odkazovat na hodnotu z řádku před aktuálním řádkem pomocí zápisu rozsahu a nemůžete odkazovat na žádnou jednotlivou hodnotu v tabulce nebo buňce. Vždy musíte pracovat s tabulkami a sloupci.

Kontext řádku automaticky sleduje vztahy mezi tabulkami a určuje, které řádky v souvisejících tabulkách jsou spojené s aktuálním řádkem.

Následující vzorec například používá související funkci k načtení hodnoty daně ze související tabulky na základě oblasti, do které byla objednávka odeslána. Hodnota daně se určuje pomocí hodnoty pro oblast v aktuální tabulce, která se vyhledá v oblasti v související tabulce a pak z tabulky související s daňovou sazbou.

= [DoPravné] + související ("oblast" [TaxRate])

Tento vzorec pro aktuální oblast získá od tabulky region daňové sazby. Nemusíte znát ani zadávat klíč, který spojuje tabulky.

Kontext více řádků

Jazyk DAX navíc obsahuje funkce, které iterují výpočty v tabulce. Tyto funkce můžou mít několik aktuálních řádků a kontextů aktuálního řádku. V programovacích podmínkách můžete vytvářet vzorce, které přechází na vnitřní a vnější smyčku.

Předpokládejme třeba, že sešit obsahuje tabulku výrobky a tabulku prodej . Můžete chtít projít celou tabulku prodejů, která je zaplněná transakcemi zahrnujícími více produktů, a najít největší množství objednaného pro jednotlivé produkty v jakékoli transakci.

Tento výpočet v Excelu vyžaduje sérii mezisoučtů, které by musely být znovu vytvořeny, pokud se data změnily. Pokud jste uživatel aplikace Excel, můžete vytvářet maticové vzorce, které by vytvořily tuto úlohu. Případně můžete do relační databáze zapsat vnořené podvýběry.

V jazyku DAX však můžete vytvořit jeden vzorec, který vrací správnou hodnotu, a výsledky se automaticky aktualizují kdykoliv data přidáte do tabulek.

= MAXX (FILTER (prodej; [ProdKey] = starší ([ProdKey])), prodej [OrderQty])

Podrobný návod k tomuto vzorci najdete v dřívějších.

V krátkém formátu starší funkce uloží kontext řádku z operace, která předchází aktuální operaci. Funkce je vždy v paměti uložena dvěma sadami kontextu: jedna skupina kontextu představuje aktuální řádek pro vnitřní smyčku vzorce a další sadu kontextu představuje aktuální řádek pro vnější smyčku vzorce. Jazyk DAX automaticky hodnotí informační kanály mezi dvěma cykly, takže můžete vytvářet komplexní agregace.

Začátek stránky

Kontext dotazu

Kontext dotazu odkazuje na podmnožinu dat, která se implicitně načítá pro vzorec. Když přetáhnete pole rozměru nebo jiné hodnoty do buňky v kontingenční tabulce, modul Power Pivot prověří záhlaví řádků a sloupců, průřezy a filtry sestavy a určí tak kontext. Power Pivot pak provede potřebné výpočty, které naplní každou buňku v kontingenční tabulce. Sada načtených dat představuje kontext dotazu pro každou buňku.

Vzhledem k tomu, že se kontext může měnit podle toho, kam vzorec umístíte, změní se výsledky vzorce taky podle toho, jestli používáte vzorec v kontingenční tabulce s mnoha seskupeními a filtry, nebo v počítaném sloupci bez filtrů a minimálního kontextu.

Předpokládejme třeba, že vytvoříte tento jednoduchý vzorec, který sečte hodnoty ve sloupci zisk v tabulce prodej : = SUMA (' prodej ' [zisk]).

Pokud použijete tento vzorec ve počítaném sloupci v tabulce prodej , výsledky pro vzorec budou pro celou tabulku stejné, protože kontext dotazu pro vzorec je vždycky celá sada dat tabulky prodej . Výsledky budou mít zisk pro všechny oblasti, všechny produkty, roky a další.

Obvykle nechcete, aby se zobrazoval stejný výsledek, ale místo toho chcete získat zisk za konkrétní rok, konkrétní zemi nebo oblast, konkrétní produkt nebo některou kombinaci těchto hodnot a pak získat celkový součet.

V kontingenční tabulce můžete změnit kontext přidáním nebo odebráním záhlaví sloupců a řádků a přidáním nebo odebráním průřezů. V měřítku můžete vytvořit vzorec podobný tomu, a pak ho uložit do kontingenční tabulky. Při každém přidání záhlaví sloupců nebo řádků do kontingenční tabulky změníte kontext dotazu, ve kterém se míra vyhodnocuje. Operace s rozŘezáním a filtrováním ovlivňují taky kontext. Proto je stejný vzorec použitý v kontingenční tabulce vyhodnocen v jiném kontextu dotazu pro každou buňku.

Začátek stránky

Kontext filtru

Kontext filtru se přidá, když zadáte omezení filtru pro množinu hodnot povolených ve sloupci nebo tabulce pomocí argumentů vzorce. Kontext filtru se používá v horní části jiných kontextů, například kontextu řádku nebo dotazu.

Kontingenční tabulka například vypočítá její hodnoty pro každou buňku na základě záhlaví řádků a sloupců, jak popisuje předchozí oddíl v kontextu dotazu. V rámci měr nebo počítaných sloupců přidaných do kontingenční tabulky však můžete zadat výrazy filtru, které budou určovat hodnoty používané ve vzorci. Můžete také selektivně Vymazat filtry pro určité sloupce.

Další informace o vytváření filtrů ve vzorcích najdete v tématu funkce filtru.

Příklad, jak mohou být filtry vymazány, pokud chcete vytvořit celkové součty, najdete v tématu všechny.

Příklady výběru a použití filtrů ve vzorcích najdete v tématu funkce ALLEXCEPT.

Proto je třeba zkontrolovat definici rozměrů nebo vzorců použitých v kontingenční tabulce, abyste se mohli seznámit s kontextem filtrování při interpretaci výsledků vzorců.

Začátek stránky

Určení kontextu ve vzorcích

Když vytvoříte vzorec, Power Pivot pro Excel nejprve zkontroluje obecnou syntaxi a potom zkontroluje názvy sloupců a tabulek, které zadáte, do sloupců a tabulek v aktuálním kontextu. Pokud Power Pivot nenajde sloupce a tabulky určené vzorcem, zobrazí se chybová zpráva.

Kontext se určuje tak, jak je popsáno v předchozích částech, pomocí dostupných tabulek v sešitu, všech relací mezi tabulkami a všech filtrů, které byly použity.

Pokud jste třeba importovali nějaká data do nové tabulky a nepoužili žádné filtry, bude součástí aktuálního kontextu celá sada sloupců v tabulce. Pokud máte více tabulek propojených relacemi a pracujete v kontingenční tabulce, která byla filtrovaná přidáním záhlaví sloupců a pomocí průřezů, bude kontext obsahovat související tabulky a všechny filtry dat.

Kontext je výkonný koncept, který ztěžuje odstraňování problémů se vzorci. Doporučujeme začít používat jednoduché vzorce a relace, abyste viděli, jak funguje kontext, a začněte experimentovat s jednoduchými vzorci v kontingenčních tabulkách. V následující části jsou také uvedeny příklady použití různých typů kontextu k dynamickému vracení výsledků.

Příklady kontextu ve vzorcích

  • Funkce související v relaci rozbalí kontext aktuálního řádku a zahrne hodnoty v souvisejícím sloupci. To vám umožní vyhledávat. Příklad v tomto tématu ilustruje interakce filtrování a kontextu řádku.

  • Funkce filtr umožňuje určit řádky, které mají být zahrnuty v aktuálním kontextu. Příklady v tomto tématu také ilustrují, jak vkládat filtry do jiných funkcí, které provádějí agregace.

  • Funkce ALL nastavuje kontext ve vzorci. Můžete ho použít k přepsání filtrů, které se používají jako výsledek kontextu dotazu.

  • Funkce ALLEXCEPT umožňuje odebrat všechny filtry kromě toho, který zadáte. Obě témata obsahují příklady, které vám pomůžete vytvářet vzorce a pochopit složité kontexty.

  • DŘÍVĚJŠÍ a nejdřívější funkce umožňují přecházet mezi tabulkami pomocí výpočtů, při odkazování na hodnotu z vnitřní smyčky. Pokud jste obeznámeni s pojmem rekurze a s vnitřním a vnějším cyklem, můžete si vyhodnotit výkon, který používají dřívější a nejstarší funkce. Pokud s těmito pojmy začínáte, měli byste pečlivě postupovat podle kroků v příkladu, abyste viděli, jak se vnitřní a vnější kontexty používají ve výpočtech.

Začátek stránky

Referenční integrita

Tato část popisuje některé pokročilé pojmy související s chybějícími hodnotami v tabulkách Power Pivot, které jsou propojené pomocí relací. Tento oddíl vám může být užitečný, pokud máte sešity s víc tabulkami a složitými vzorci a potřebujete pomoct pochopit výsledky.

Pokud s koncepty relačních dat začínáte, doporučujeme nejprve přečíst úvodní téma Přehled vztahů.

Referenční integrita a vztahy Power Pivot

Power Pivot nevyžaduje vynucení referenční integrity mezi dvěma tabulkami za účelem definování platné relace. Místo toho se na konci každého relace 1: n vytvoří prázdný řádek a použije se k obsluze všech neodpovídajících řádků ze související tabulky. Efektivně se chová jako vnější spojení SQL.

Pokud v kontingenčních tabulkách seskupíte data na jednu stranu relace, budou všechna nespárovaná data na straně relace seskupená dohromady a budou zahrnuta do součtů s prázdným záhlavím řádku. Prázdný nadpis je zhruba stejný jako neznámý člen.

Principy neZnámého člena

Pokud jste pracovali s multidimenzionálními databázovými systémy, jako jsou třeba služby SQL Server Analysis Services, je vám pravděpodobně znám koncept neznámého člena. Pokud je termín novinkou, následující příklad vysvětluje, co je to neznámý člen a jak to ovlivňuje výpočty.

Předpokládejme, že vytváříte výpočet, který počítá měsíční prodej jednotlivých obchodů, ale sloupec v tabulce prodej neobsahuje hodnotu pro název obchodu. Pokud jsou tabulky pro obchod se skladem a prodejem spojeny názvem obchodu, co byste měli ve vzorci očekávat? Jak by měla skupina kontingenční tabulka nebo zobrazení údajů o prodeji, které nesouvisí s existujícím obchodem?

Tento problém je běžným v datových skladech, kde velké tabulky dat faktů musí být logicky spojeny s tabulkami dimenze, které obsahují informace o úložištích, oblastech a dalších atributech, které se používají k kategorizaci a výpočtu skutečností. Tento problém vyřešíte tím, že neznámému členovi dočasně přiřadíte všechny nové skutečnosti, které nejsou v relaci k existující entitě. Proto se nesouvisející fakta zobrazí v kontingenční tabulce pod prázdným nadpisem.

Zpracování prázdných hodnot oproti prázdnému řádku

Prázdné hodnoty se liší od prázdných řádků přidaných pro neznámého člena. Prázdná hodnota je speciální hodnota, která představuje hodnoty null, prázdné řetězce a další chybějící hodnoty. Další informace o prázdné hodnotě a další datové typy jazyka DAX naleznete v tématu datové typy v datových modelech.

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.

×