Applies ToExcel pro Microsoft 365 Excel 2024 Excel 2021 Excel 2019 Excel 2016

Kontext umožňuje provádět dynamickou analýzu, ve které se výsledky vzorce můžou změnit tak, aby odrážely výběr aktuálního řádku nebo buňky a také všechna související data. Pochopení kontextu a efektivní používání kontextu je velmi důležité pro vytváření výkonných vzorců, dynamické analýzy 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 se vyhodnocuje kontext vzorců 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.

Vysvětlení kontextu

Vzorce v Power Pivot můžou být ovlivněny 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 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 si můžete představit 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é načte hodnotu z aktuálního řádku a pak tuto hodnotu použijí při provádění operace v celé tabulce.

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 která jsou definována výrazy filtru ve vzorci.

Začátek stránky

Kontext řádku

Pokud vytvoříte vzorec v počítaném sloupci, kontext řádku pro tento vzorec bude obsahovat hodnoty ze všech sloupců v aktuálním řádku. Pokud tabulka souvisí s jinou tabulkou, obsah obsahuje také 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 excelové tabulce, které automaticky odkazují na hodnoty ze stejného řádku. Všimněte si, že tabulky se liší od oblastí: na hodnotu z řádku před aktuálním řádkem nelze odkazovat pomocí zápisu rozsahu a nelze odkazovat na libovolnou jednotlivou 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.

Následující vzorec například používá funkci RELATED k načtení hodnoty daně ze související tabulky na základě oblasti, do které byla objednávka expedována. Hodnota daně se určuje pomocí hodnoty pro oblast v aktuální tabulce, vyhledáním oblasti v související tabulce a následným získáním sazby daně pro danou oblast ze související tabulky.

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

Tento vzorec jednoduše získá sazbu daně pro aktuální oblast z tabulky Region. Nemusíte znát ani zadávat klíč, který tabulky spojuje.

Kontext s více řádky

Jazyk DAX navíc obsahuje funkce, které iterují výpočty v tabulce. Tyto funkce můžou mít více aktuálních řádků a kontextů aktuálních řádků. V programovacích termínech můžete vytvořit vzorce, které přejdou přes vnitřní a vnější smyčku.

Předpokládejme například, že sešit obsahuje tabulku Products (Produkty ) a Sales (Prodej ). Můžete si projít celou tabulku prodejů, která je plná transakcí zahrnujících více produktů, a najít největší množství objednané pro každý produkt v libovolné transakci.

V Excelu tento výpočet vyžaduje řadu průběžných souhrnů, které by se musely znovu vytvořit, pokud by se data změnila. Pokud jste výkonným uživatelem Excelu, můžete být schopni vytvořit maticové vzorce, které by tuto práci udělaly. Alternativně můžete v relační databázi psát 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(Sales;[ProdKey]=EARLIER([ProdKey]));Sales[OrderQty])

Podrobný návod k tomuto vzorci najdete v tématu Funkce EARLIER.

Stručně řečeno, funkce EARLIER ukládá kontext řádku z operace, která aktuální operaci předcházela. Funkce vždy ukládá do paměti dvě sady kontextu: jedna sada kontextu představuje aktuální řádek pro vnitřní smyčku vzorce a další sada kontextu představuje aktuální řádek pro vnější smyčku vzorce. DAX automaticky předá hodnoty mezi těmito dvě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ž vložíte míru nebo pole jiné hodnoty do buňky v kontingenční tabulce, modul Power Pivot prozkoumá záhlaví řádků a sloupců, průřezy a filtry sestavy a určí kontext. Pak Power Pivot provede potřebné výpočty k naplnění jednotlivých buněk v kontingenční tabulce. Sada dat, která se načtou, je kontextem dotazu pro každou buňku.

Vzhledem k tomu, že se kontext může měnit v závislosti na tom, kam vzorec umístíte, mění se také výsledky vzorce v závislosti na tom, jestli vzorec používáte 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 Profit (Zisk ) tabulky Sales (Prodej ):

=SUMA('Prodej'[Zisk])

Pokud tento vzorec použijete v počítaném sloupci v tabulce Sales , budou výsledky vzorce stejné pro celou tabulku, protože kontext dotazu pro vzorec je vždy celá datová sada tabulky Sales . Vaše výsledky budou mít zisk pro všechny oblasti, všechny produkty, všechny roky atd.

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

V kontingenční tabulce je snadné 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íře můžete vytvořit vzorec podobný výše a potom ho umístit do kontingenční tabulky. Kdykoli do kontingenční tabulky přidáte záhlaví sloupců nebo řádků, změníte kontext dotazu, ve kterém se míra vyhodnocuje. Operace vytváření řezů a filtrování také ovlivňují kontext. Proto se stejný vzorec použitý v kontingenční tabulce vyhodnocuje v jiném kontextu dotazu pro každou buňku.

Začátek stránky

Kontext filtru

Kontext filtru se přidá, když pomocí argumentů ve vzorci zadáte omezení filtru pro sadu hodnot povolených ve sloupci nebo tabulce. Kontext filtru se použije nad jinými kontexty, jako je kontext řádku nebo kontext dotazu.

Kontingenční tabulka například vypočítává hodnoty pro každou buňku na základě záhlaví řádků a sloupců, jak je popsáno v předchozí části věnované kontextu dotazu. V rámci měr nebo počítaných sloupců, které přidáte do kontingenční tabulky, ale můžete zadat výrazy filtru, které řídí hodnoty používané vzorcem. Můžete také selektivně vymazat filtry u konkrétních sloupců.

Další informace o tom, jak vytvářet filtry ve vzorcích, najdete v tématu Funkce filtru.

Příklad vymazání filtrů za účelem vytvoření celkových součtů najdete ve funkci ALL.

Příklady selektivního vymazání a použití filtrů ve vzorcích najdete ve funkci ALLEXCEPT.

Proto je nutné zkontrolovat definici měr nebo vzorců používaných v kontingenční tabulce, abyste při interpretaci výsledků vzorců věděli o kontextu filtru.

Začátek stránky

Určení kontextu ve vzorcích

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

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 použitých filtrů.

Pokud jste například právě importovali některá data do nové tabulky a nepoužádáte žádné filtry, je celá sada sloupců v tabulce součástí aktuálního kontextu. Pokud máte více tabulek propojených relacemi a pracujete v kontingenční tabulce filtrované přidáním záhlaví sloupců a použitím průřezů, kontext zahrnuje 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 s 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 také několik příkladů, jak vzorce používají různé typy kontextu k dynamickému vracení výsledků.

Příklady kontextu ve vzorcích

  • Funkce RELATED rozšíří kontext aktuálního řádku tak, aby zahrnoval hodnoty v souvisejícím sloupci. 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 určit řá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ů, které se použijí jako výsledek kontextu dotazu.

  • Funkce ALLEXCEPT umožňuje odebrat všechny filtry kromě těch, které zadáte. V obou tématech najdete příklady, které vás provedou vytvářením vzorců a pochopením složitých kontextů.

  • Funkce EARLIER a EARLIEST umožňují procházet tabulky pomocí výpočtů při odkazování na hodnotu z vnitřní smyčky. Pokud znáte koncept rekurze a vnitřní a vnější smyčky, oceníte výkon funkcí EARLIER a EARLIEST. Pokud s těmito koncepty začínáte, měli byste pečlivě postupovat podle kroků v příkladu, abyste viděli, jak se ve výpočtech používají vnitřní a vnější kontexty.

Začátek stránky

Referenční integrita

Tato část popisuje některé pokročilé koncepty související s chybějícími hodnotami v tabulkách Power Pivot propojených relacemi. Tato část pro vás 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 porozuměním výsledkům.

Pokud s koncepty relačních dat teprve začínáte, doporučujeme, abyste si napřed přečetli úvodní téma Přehled relací.

Referenční integrita a relace Power Pivot

Power Pivot nevyžaduje vynucení referenční integrity mezi dvěma tabulkami, aby bylo možné definovat platnou relaci. Místo toho se vytvoří prázdný řádek na konci "1" každé relace 1:N a slouží ke zpracování 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 jedné straně relace, všechna chybějící data na straně N relace seskupí dohromady a zahrnou se do součtů s prázdným záhlavím řádku. Prázdný nadpis je zhruba ekvivalentní neznámému členu.

Vysvětlení neznámého člena

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

Předpokládejme, že vytváříte výpočet, který sečte měsíční prodeje pro každou prodejnu, ale ve sloupci v tabulce Sales (Prodej ) chybí hodnota pro název obchodu. Vzhledem k tomu, že tabulky pro Store a Sales jsou propojené názvem obchodu, co očekáváte, že se stane ve vzorci? Jak by měla kontingenční tabulka seskupit nebo zobrazit údaje o prodeji, které nesouvisejí s existujícím obchodem?

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

Zpracování prázdných hodnot vs. prázdný řádek

Prázdné hodnoty se liší od prázdných řádků, které jsou přidány tak, aby vyhovovaly neznámému členu. Prázdná hodnota je speciální 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 DAX najdete v tématu Datové typy v datových modelech.

Začátek stránky

Potřebujete další pomoc?

Chcete další možnosti?

Prozkoumejte výhody předplatného, projděte si školicí kurzy, zjistěte, jak zabezpečit své zařízení a mnohem více.

Komunity vám pomohou klást otázky a odpovídat na ně, poskytovat zpětnou vazbu a vyslechnout odborníky s bohatými znalostmi.