Kontext umožňuje provádět dynamickou analýzu, ve které se výsledky vzorce mohou měnit tak, aby odrážely aktuální výběr řádku nebo buňky a také související data. Porozumění kontextu a efektivnímu používání kontextu je velmi důležité pro vytváření vzorců s vysokým výkonem, dynamické analýzy a řešení problémů ve vzorcích.

Tato část definuje různé typy kontextu: kontext řádku, kontext dotazu a kontext filtru. Vysvětluje, jak se kontext vyhodnocuje 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é ukazují, jak se výsledky vzorců mění podle kontextu.

Principy kontextu

Vzorce v Power Pivot mohou být ovlivněny filtry použitými v kontingenční tabulce, relacemi mezi tabulkami a filtry používanými ve vzorcích. Kontext je to, co umožňuje provádět dynamickou analýzu. Pochopení kontextu je důležité pro vytváření vzorců a řešení potíží.

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

Kontext řádku se může promyslet jako "aktuální řádek". Pokud jste vytvořili počítaný sloupec, kontext řádku se skládá z hodnot v každém jednotlivém řádku a hodnot ve sloupcích, které souvisejí s aktuálním řádkem. Existují také některé funkce (EARLIER a EARLIEST), které získaly hodnotu z aktuálního řádku a pak tuto hodnotu používají při provádění operace nad celou tabulkou.

Kontext dotazu odkazuje na podmnožinu dat, která jsou implicitně vytvořená 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 použitých na řádek nebo definovaných výrazy filtru ve vzorci.

Začátek stránky

Kontext řádku

Pokud vytvoříte vzorec v počítaných sloupcích, kontext řádku pro tento vzorec bude obsahovat hodnoty ze všech sloupců v aktuálním řádku. Pokud tabulka souvisí s jinou tabulkou, obsah také obsahuje všechny hodnoty z této jiné tabulky, které souvisejí s aktuálním řádkem.

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

, který sečte dva sloupce ze stejné tabulky. Tento vzorec se chová jako vzorce v Excel, které automaticky odkazují na hodnoty ze stejného řádku. Všimněte si, že tabulky se liší od rozsahů: pomocí notace oblasti nemůžete odkazovat na hodnotu z řádku před aktuálním řádkem a nemůžete odkazovat na libovolnou jedinou hodnotu v tabulce nebo buňce. Vždy musíte pracovat s tabulkami a sloupci.

Kontext řádku automaticky sleduje relace mezi tabulkami a určuje, které řádky v souvisejících tabulkách jsou přidružené k aktuálnímu řádku.

Například následující vzorec používá funkci RELATED k načtení hodnoty daně ze související tabulky na základě oblasti, do které byla objednávka odeslána. Daňová hodnota se určuje pomocí hodnoty oblasti v aktuální tabulce, hledáním oblasti v související tabulce a získáním sazby daně pro tento region ze související tabulky.

= [Freight] + RELATED('Region'[TaxRate])

Tento vzorec jednoduše získá sazbu daně pro aktuální oblast z tabulky Oblast. Není potřeba znát ani zadat klíč, který spojuje tabulky.

Kontext více řádků

Jazyk DAX navíc obsahuje funkce, které iterují výpočty nad tabulkou. Tyto funkce mohou mít více aktuálních řádků a kontexty aktuálního řádku. V programovacích termínech můžete vytvářet vzorce, které se dějí v rámci vnitřní a vnější smyčky.

Předpokládejme například, že sešit obsahuje tabulku Produkty a tabulku Prodej. Možná budete chtít projít celou tabulku prodejů, která je plná transakcí zahrnujících více produktů, a najít největší objednané množství pro každý produkt v jedné transakci.

V Excel tento výpočet vyžaduje řadu průběžných souhrnů, které by bylo nutné při změně dat znovu vytřídit. Pokud jste power user of Excel, můžete vytvořit maticové vzorce, které by úlohu udělaly. V relační databázi můžete také napsat vnořené dílčí výběry.

Pomocí jazyka DAX ale můžete vytvořit jeden vzorec, který vrátí správnou hodnotu, a výsledky se automaticky aktualizují při každém přidání dat do tabulek.

=MAXX(FILTER(Prodej;[ProdKey]=EARLIER([ProdKey]));Prodej[OrderQty])

Podrobný návod k tomuto vzorci najdete v článku STARŠÍ.

Zkrátka funkce EARLIER ukládá kontext řádku z operace, která předcházela aktuální operaci. Funkce ukládá v paměti dvě sady kontextu: jedna sada kontextu představuje aktuální řádek pro vnitřní smyčku vzorce a jiná sada kontextu představuje aktuální řádek vnější smyčky vzorce. Jazyk DAX automaticky vysíl hodnoty mezi oběma smyčkami, abyste mohli vytvářet složité agregace.

Začátek stránky

Kontext dotazu

Kontext dotazu odkazuje na podmnožinu dat, která se implicitně načítá pro vzorec. Když do buňky v kontingenční tabulce přepustíte pole míry nebo jiné hodnoty, modul Power Pivot zkontroluje záhlaví řádků a sloupců, průřezy a filtry sestav, aby určil kontext. Potom Power Pivot výpočty potřebné k naplnění každé buňky v kontingenční tabulce. Sada dat, která se načítá, je kontext dotazu pro každou buňku.

Vzhledem k tomu, že se kontext může změnit v závislosti na umístění vzorce, změní se také výsledky vzorce v závislosti na tom, jestli použijete 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 například, že vytvoříte tento jednoduchý vzorec, který sečte hodnoty ve sloupci Zisk v tabulce Prodej:=SUMA('Prodej'[Zisk]).

Pokud použijete tento vzorec v počítané sloupci v tabulce Prodej, budou výsledky vzorce stejné pro celou tabulku, protože kontext dotazu vzorce je vždy celou datovou sadu tabulky Prodej. Výsledky budou mít zisk pro všechny oblasti, všechny produkty, všechny roky a tak dále.

Obvykle ale nechcete vidět stejný výsledek stokrát, ale místo toho chcete získat zisk za určitý rok, konkrétní zemi nebo oblast, konkrétní produkt nebo určitou kombinaci těchto produktů a pak získat celkový součet.

V kontingenční tabulce můžete snadno 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ů. Můžete vytvořit vzorec, jako je ten nahoře, v rozměru a pak ho přetáhnout 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 slicingu a filtrování mají také vliv na kontext. Stejný vzorec použitý v kontingenční tabulce se proto vyhodnocuje 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 sadu hodnot povolených ve sloupci nebo tabulce pomocí argumentů ve vzorci. Kontext filtru se použije nad ostatními kontexty, jako je kontext řádku nebo kontext dotazu.

Kontingenční tabulka například vypočítává hodnoty jednotlivých buněk na základě záhlaví řádků a sloupců, jak je popsáno v předchozím oddílu v kontextu dotazu. V rámci míry nebo počítaných sloupců, které přidáte do kontingenční tabulky, ale můžete zadat výrazy filtru, které budou řídit hodnoty, které vzorec používá. Filtry u konkrétních sloupců můžete také selektivně vymazat.

Další informace o tom, jak vytvářet filtry ve vzorcích, najdete v článku Funkce filtru.

Příklad, jak je možné vymazat filtry k vytvoření celkových součtů, najdete v tématu ALL.

Příklady, jak selektivně vymazat a použít filtry ve vzorcích, najdete v článku Funkce ALLEXCEPT.

Proto je nutné zkontrolovat definici míry nebo vzorce použité v kontingenční tabulce, abyste při interpretaci výsledků vzorců museli znát kontext filtru.

Začátek stránky

Určení kontextu ve vzorcích

Když vytvoříte vzorec, Power Pivot pro Excel nejprve zkontroluje obecnou syntaxi Excel pak zkontroluje názvy sloupců Excel tabulek, které poskytnete, s možnými sloupci Excel tabulkami v aktuálním kontextu. Pokud Power Pivot sloupce a tabulky určené vzorcem, zobrazí se chybová zpráva.

Kontext se určuje podle popisu v předchozích částech pomocí dostupných tabulek v sešitu, všech relací mezi tabulkami a všech použitých filtrů.

Pokud jste například některá data právě naimportoval(a) do nové tabulky a nevyfiltroval(a) žádné filtry, je 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 filtrována přidáním záhlaví sloupců a použitím průřezů, kontext obsahuje související tabulky a všechny filtry dat.

Kontext je výkonný koncept, který může také ztížovat řešení potíží se vzorci. Doporučujeme začít jednoduchými vzorci a relacemi, abyste viděli, jak kontext funguje, a pak začít experimentovat s jednoduchými vzorci v kontingenčních tabulkách. Následující část obsahuje taky některé příklady toho, jak vzorce používají různé typy kontextu k dynamickému vrácení výsledků.

Příklady kontextu ve vzorcích

  • Funkce RELATED rozšíří kontext aktuálního řádku tak, aby zahrnovala hodnoty do souvisejícího sloupce. To vám umožní provádět vyhledávání. Příklad v tomto tématu znázorňuje interakci filtrování a kontextu řádku.

  • Funkce FILTER umožňuje zadat řádky, které se mají zahrnout do aktuálního kontextu. Příklady v tomto tématu také ukazují, jak vložit filtry do jiných funkcí, které provádějí agregace.

  • Funkce ALL nastaví kontext ve vzorci. Můžete ho použít k přepsání filtrů použitých v kontextu dotazu.

  • Funkce ALLEXCEPT umožňuje odebrat všechny filtry kromě těch, které zadáte. Obě témata obsahují příklady, které vás prochádí vytvářením vzorců a pochopením složitých kontextů.

  • Funkce EARLIER a EARLIEST umožňují procházet tabulky prováděním výpočtů a odkazováním na hodnotu z vnitřní smyčky. Pokud znáte koncept rekurze a vnitřní a vnější smyčky, oceníte sílu, kterou funkce EARLIER a EARLIEST poskytují. Pokud s těmito koncepty moc nevíte, měli byste postupovat podle pokynů v příkladu pečlivě a podívat se, 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é koncepty související s chybějícími hodnotami Power Pivot tabulek, které jsou propojené relacemi. Tato část může být užitečná, pokud máte sešity s více tabulkami a složitými vzorci a chcete pomoct s pochopením výsledků.

Pokud s koncepty relačních dat ještě nevíte, doporučujeme si nejdřív přečíst úvodní téma Přehled relací.

Referenční integrita a Power Pivot relace

Power Pivot nepožaduje vynucení referenční integrity mezi dvěma tabulkami, aby bylo možné definovat platnou relaci. Místo toho se na konci každé relace 1:N vytvoří prázdný řádek a použije se ke zpracování všech nesouvisecích řádků ze související tabulky. Účinně se chová jako vnější SQL spojení.

Pokud v kontingenčních tabulkách seskupíte data podle jedné strany relace, seskupí se jakákoli nepřerovnáná data na straně N relace a zahrnou se do součtů s záhlavím prázdného řádku. Prázdný nadpis je zhruba ekvivalentní neznámému členu.

Principy neznámého člena

Koncept neznámého člena je vám pravděpodobně známý, pokud jste pracovali s multidimenzionálními databázovými systémy, jako je SQL Server Analysis Services. Pokud je termín pro vás nový, vysvětluje následující příklad, co je neznámý člen a jak ovlivňuje výpočty.

Předpokládejme, že vytváříte výpočet, který sčítá měsíční prodeje pro jednotlivé obchody, ale sloupec v tabulce Prodej chybí hodnota názvu úložiště. Vzhledem k tomu, že tabulky pro Store a Sales jsou propojené pod názvem úložiště, co byste čekali, že se ve vzorci stane? Jak by se měla skupina kontingenční tabulky nebo zobrazit údaje o prodeji, které nejsou ve spojení s existujícím úložištěm?

Tento problém je běžný v datových skladech, kde velké tabulky faktů musí logicky souviset s tabulkami dimenzí, které obsahují informace o obchodech, oblastech a dalších atributech, které se používají ke kategorizaci a výpočtu faktů. Pokud chcete tento problém vyřešit, jsou všechny nové skutečnosti, které nesouvisejí se stávající entitou, dočasně přiřazeny neznámému členu. Proto se nesouvisející skutečnosti zobrazí seskupené v kontingenční tabulce pod prázdným nadpisem.

Zpracování prázdných hodnot a prázdného řádku

Prázdné hodnoty se liší od prázdných řádků přidaných pro neznámý člen. Prázdná hodnota je zvláštní hodnota, která se používá k reprezentaci hodnot Null, prázdných řetězců a dalších chybějících hodnot. Další informace o prázdné hodnotě a dalších datových typech jazyka DAX najdete v tématu Datové typy v datových modelech.

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 k programu Microsoft Insider

Byly tyto informace užitečné?

Jak jste spokojeni s kvalitou překladu?

Co ovlivnilo váš názor?

Máte další zpětnou vazbu? (Nepovinné)

Děkujeme za váš názor!

×