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

Kontext umožňuje provádět dynamické analýzy, ve kterých se mohou výsledky vzorců měnit na základě aktuálně zvoleného řádku nebo buňky a souvisejících dat. Porozumění kontextu a jeho efektivní použití je velmi důležité pro vytváření výkonných vzorců, dynamických analýz a pro řešení potíží se vzorcích.

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

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

Principy kontextu

Vzorce v Power Pivot můžou mít vliv na filtrů použitých v kontingenční tabulce, relace mezi tabulkami a filtry použité ve vzorcích. Kontext je co umožníte dynamické analýza. Principy kontextu je důležité pro vytváření a odstraňování problémů se vzorci.

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

Kontext řádku si lze 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 souvisejících s aktuálním řádkem. Existují také některé funkce (funkce EARLIER a funkce EARLIEST), které načítají hodnotu z aktuálního řádku a potom tuto hodnotu používají při provádění operací nad celou tabulkou.

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

Kontext filtru je sadou hodnot povolených v každém sloupci na základě omezení filtru, která jsou použita na řádek nebo definována pomocí výrazů filtru ve vzorci.

Začátek stránky

Kontext řádku

Pokud jste vytvořili vzorec v počítaném sloupci, kontext řádku pro tento vzorec obsahuje hodnoty ze všech sloupců v aktuálním řádku. Pokud tabulka souvisí s jinou tabulkou, zahrnuje tento obsah také všechny hodnoty z dané tabulky související s aktuálním řádkem.

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

který sečte dva sloupce stejné tabulky. Tento vzorec se chová jako vzorce v tabulce aplikace Excel, které automaticky odkazují na hodnoty ze stejného řádku. Mějte na paměti, že tabulky nejsou totéž, co rozsahy. Nelze odkazovat na hodnotu z předcházejícího řádku pomocí notace rozsahů a není možné odkazovat na samostatné hodnoty v tabulce nebo buňce. Je třeba vždy pracovat s tabulkami a sloupci.

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

Následující vzorec například používá funkci RELATED k získání hodnoty daně ze související tabulky na základě oblasti, do které byla objednávka odeslána. Hodnota daně je určena následujícím způsobem: Podle hodnoty oblasti v aktuální tabulce je daná oblast nalezena v související tabulce, ze které je získána hodnota daně pro danou oblast.

= [Dopravné] + RELATED('Region'[TaxRate])

Tento vzorec získá hodnotu daně pro aktuální oblast z tabulky Region. Klíč, který tabulky propojuje, není třeba znát ani zadávat.

Vícenásobný kontext řádku

Jazyk DAX navíc obsahuje funkce provádějící iterace výpočtů napříč tabulkou. Tyto funkce mohou pracovat s větším počtem aktuálních řádků a kontextů aktuálního řádku. Jinými slovy z oblasti programování, můžete vytvářet vzorce, které pracují rekurzivně ve vnitřní i vnější smyčce.

Předpokládejme například, že sešit obsahuje tabulku a tabulky Sales . Můžete chcete projít celý prodeje tabulce, která je už plná transakce zahrnující více produktů, a najít největší množství objednali pro každý produkt v jakékoli transakci.

V aplikaci Excel tento výpočet vyžaduje provedení řady mezisoučtů, které je třeba v případě změny dat sestavit znovu. Pokročilí uživatelé aplikace Excel mohou stejný problém vyřešit pomocí pole vzorců. Také můžete použít vnořené následné výběry v relační databázi.

Pomocí jazyka DAX ale stačí vytvořit jediný vzorec, který vrací správnou hodnotu. Výsledky jsou navíc automaticky aktualizovány při každém přidání dat do tabulek.

=MAXX(Filter(Sales,[ProdKey]=EARLIER([ProdKey])),Sales[OrderQty])

Podrobný návod pro tento vzorec naleznete v tématu Funkce EARLIER.

Ve zkratce, funkce EARLIER ukládá kontext řádku z operace, která předcházela aktuální operaci. Funkce vždy ukládá do paměti dvě sady kontextů: jedna sada kontextů představuje aktuální řádek ve vnitřní smyčce vzorce, druhá aktuální řádek ve vnější smyčce. Jazyk DAX automaticky přesouvá hodnoty mezi oběma smyčkami, a tak je možné vytvářet složité agregace.

Začátek stránky

Kontext dotazu

Kontext dotazu označuje podmnožinu dat, která je implicitně načtené pro vzorce. Při přetažení míru nebo jiné hodnoty pole do buňky v kontingenční tabulce modul Power Pivot kontroluje záhlaví řádků a sloupců, průřezy a filtry sestav k určení kontextu. Potom Power Pivot zajišťuje nezbytné výpočty k naplnění každou buňku v kontingenční tabulce. Nastavení data, která je načtena je kontext dotazu pro každou buňku.

Protože se kontext může změnit v závislosti na umístění vzorce, výsledky vzorce se také mění podle toho, zda vzorec použijete v kontingenční tabulce obsahující mnoho seskupení a filtrů nebo v počítaném sloupci bez filtrů a s minimálním kontextem.

Například předpokládá se, že vytvoříte jednoduchý vzorec, který sečte hodnoty ve sloupci Profit table:=SUM('Sales'[Profit]) Prodej .

Pokud použijete tento vzorec počítaného sloupce uvnitř tabulky Sales , výsledky vzorec bude stejná pro celou tabulku, protože kontext dotazu pro vzorce je vždy celou sadu dat v tabulce Sales . Výsledky, budou mít zisku za všechny oblasti, všech výrobků, všechny roky, a tak dál.

Obvykle však není třeba zobrazovat stejný výsledek několiksetkrát. Namísto toho může být vhodné zobrazit zisk pro konkrétní rok, zemi nebo oblast, produkt nebo kombinaci těchto parametrů a poté vypočítat celkový součet.

V kontingenční tabulce není těžké si kontext změnit přidáním nebo odebráním záhlaví řádků a sloupců a přidáním nebo odebráním průřezy. Můžete vytvořit vzorec, jako je to výše v míru a pak vložíte do kontingenční tabulky. Pokaždé, když přidáte záhlaví sloupců a řádků do kontingenční tabulky, můžete změnit kontext dotazu, ve kterém míra Vyhodnocená každá její položka. Rozdělení na řezy a filtrování operace také ovlivnit kontextu. Stejný vzorec použit v kontingenční tabulce, jsou proto obsažené v rámci různých dotazu pro každou buňku.

Začátek stránky

Kontext filtru

Kontext filtru je přidán, když pomocí argumentů vzorce zadáte omezení filtru na určitou sadu hodnot povolených ve sloupci nebo tabulce. Kontext filtru se aplikuje navrch ostatních kontextů, jako jsou například kontext řádku a kontext dotazu.

Příklad kontingenční tabulky pro výpočet hodnoty pro každou buňku podle záhlaví řádků a sloupců podle popisu v předchozí části na kontext dotazu. V rámci míry nebo počítané sloupce, které přidáte do kontingenční tabulky, výrazy filtru k řízení hodnot, které se používají ve vzorci zadáte. Můžete také selektivně Vymazat filtry z určitého sloupce.

Další informace o vytváření filtrů ve vzorcích naleznete v tématu Filtrovací funkce (DAX).

Příklad způsobu vymazání filtrů ve vzorcích pro vytvoření celkových součtů naleznete v tématu Funkce ALL.

Příklady selektivního vymazání a použití filtrů ve vzorcích naleznete v tématu Funkce ALLEXCEPT.

Proto je třeba zkontrolovat definici opatření nebo vzorců použitých v kontingenční tabulce, abyste si byli vědomi kontextu filtru při interpretaci výsledků vzorců.

Začátek stránky

Určování kontextu ve vzorcích

Když vytvoříte vzorec, Power Pivot pro Excel napřed zkontroluje obecnou syntaxi a pak zkontroluje zadané názvy sloupců a tabulek oproti možným sloupcům a tabulkám v rámci aktuálního kontextu. Pokud Power Pivot nemůže najít sloupce a tabulky zadané ve vzorci, dojde k chybě.

Kontext je určován tabulkami v sešitě, relacemi mezi tabulkami a všemi použitými filtry, jak je popsáno v předchozích částech.

Pokud jste například právě naimportovali data do nové tabulky a nejsou použity žá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, která byla vyfiltrována přidáním záhlaví sloupců a pomocí průřezů, obsahuje kontext související tabulky a všechny filtry pro daná data.

Koncept kontextu je velmi výkonný, což ale ztěžuje odstraňování potíží se vzorci. Doporučujeme naučit se, jak kontext pracuje, pomocí jednoduchých vzorců a relací, a poté začít experimentovat s jednoduchými vzorci v kontingenčních tabulkách (PivotTables). V následující části jsou uvedeny příklady, ve kterých vzorce používají různé typy kontextu k dynamickému vracení výsledků.

Příklady kontextu ve vzorcích

  • Funkce RELATED rozšiřuje 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é budou zahrnuty v aktuálním kontextu. Příklady v tomto tématu také znázorňují způsob vložení filtrů do jiných funkcí, které provádějí agregace.

  • Funkce ALL nastavuje kontext v rámci vzorce. Pomocí této funkce můžete přepsat filtry, které jsou použity jako výsledek kontextu dotazu.

  • Funkce ALLEXCEPT umožňuje odebrat všechny filtry kromě jednoho filtru, který určíte. Obě témata obsahují příklady, které vás provedou sestavením vzorců a pomohou vám pochopit složité kontexty.

  • Funkce EARLIER a EARLIEST umožňují vytvářet smyčky v tabulkách a provádět tak výpočty, při kterých se můžete odkazovat na hodnotu z vnitřní smyčky. Pokud jste obeznámeni s konceptem rekurze a vnitřními a vnějšími smyčkami, budete schopni plně ocenit možnosti, které funkce EARLIER a EARLIEST poskytují. Pokud jsou pro vás tyto koncepty nové, doporučujeme pozorně si projít jednotlivé kroky příkladu, abyste viděli, jakým způsobem se při provádění výpočtů používá vnitřní a vnější kontext.

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. Informace v této části můžou být užitečné, pokud máte sešity s víc tabulkami a složitými vzorci a chcete si usnadnit chápání výsledků.

Pokud je pro vás koncept relačních dat nový, doporučujeme, abyste si nejdříve přečetli úvodní téma Přehled relací.

Referenční integrita a relace doplňku Power Pivot

Power Pivot nevyžaduje pro definování platné relace striktní vynucování referenční integrity mezi dvěma tabulkami. Místo toho se na straně „1“ každé relace 1:N vytvoří prázdný řádek, který se používá ke zpracování všech neodpovídajících řádků z tabulky v relaci. Řádek se tedy chová podobně jako vnější spojení SQL.

Neodpovídající data na straně „N“ relace budou při seskupování dat v kontingenčních tabulkách (PivotTables) podle strany „1“ seskupena dohromady a zahrnuta do součtu s prázdným záhlavím řádku. Prázdná záhlaví jsou přibližně ekvivalentní položce Neznámý člen.

Principy položky Neznámý člen

Koncept neznámého člena možná znáte, pokud jste pracovali se systémy multidimenzionálních databází, jako je například služba SQL Server Analysis Services. Pokud je pro vás tento termín novinkou, pak pomocí následujícího příkladu zjistíte, co neznámý člen je a jakým způsobem ovlivňuje výpočty.

Předpokládejme, že vytvoříte výpočtu, který sečte měsíční prodeje pro každý úložiště, ale sloupce v tabulce prodejů chybí hodnoty název úložiště přihlašovacích údajů. Předpokladu, že tabulky pro ukládání a prodeje připojeni podle názvu úložiště, co očekáváte stát ve vzorci? Jak by měl v kontingenční tabulce skupiny nebo zobrazit hodnoty prodeje, které nesouvisí existující úložiště?

Tento problém se běžně vyskytuje u datových skladů, kde je třeba vytvářet logické relace mezi rozsáhlými tabulkami faktických dat a tabulkami dimenzí, které obsahují informace o prodejnách, regionech a dalších atributech používaných pro kategorizaci a výpočty faktů. Tento problém je vyřešen tak, že jsou nová fakta, která nemají relaci k existující entitě, dočasně přiřazena k neznámému členovi. Z toho důvodu se fakta, která nemají relaci, zobrazí seskupena v kontingenční tabulce pod prázdným záhlavím.

Zpracování prázdných hodnot na rozdíl od prázdného řádku

Prázdné hodnoty se liší od prázdných řádků, které jsou přidávány, aby obsáhly neznámého člena. Prázdná hodnota je zvláštní hodnota použitá k vyjádření hodnot null, prázdných řetězců a dalších chybějících hodnot. Další informace o prázdné hodnotě i o dalších datových typech DAX naleznete v tématu Datové typy v datových modelech.

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.

Sdílení Facebook Facebook Twitter Twitter E-mail E-mail

Byly tyto informace užitečné?

Výborně! Je ještě něco dalšího, co byste nám chtěli dát vědět?

Jak bychom ho mohli vylepšit?

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

×