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

Kontext umožňuje vykonávať dynamickú analýzu, v ktorej sa výsledky vzorca môžu zmeniť tak, aby odrážali aktuálny výber riadka alebo bunky, ako aj všetky súvisiace údaje. Pochopenie kontextu a efektívne používanie kontextu sú veľmi dôležité na vytváranie vzorcov s vysokým výkonom, dynamických analýz a riešenie problémov vo vzorcoch.

Táto časť definuje rôzne typy kontextu: kontext riadka, kontext dotazu a kontext filtra. Vysvetľuje, ako sa vyhodnocuje kontext pre vzorce vo vypočítaných stĺpcoch a v kontingenčných tabuľkách.

Posledná časť tohto článku obsahuje prepojenia na podrobné príklady, ktoré znázorňujú, ako sa výsledky vzorcov menia podľa kontextu.

Vysvetlenie kontextu

Vzorce v Power Pivot môžu byť ovplyvnené filtrami použitými v kontingenčnej tabuľke, vzťahmi medzi tabuľkami a filtrami použitými vo vzorcoch. Kontext umožňuje vykonávať dynamickú analýzu. Pochopenie kontextu je dôležité na vytváranie a riešenie problémov so vzorcami.

Existujú rôzne typy kontextu: kontext riadka, kontext dotazu a kontext filtra.

Kontext riadka možno považovať za aktuálny riadok. Ak ste vytvorili vypočítaný stĺpec, kontext riadka sa skladá z hodnôt v jednotlivých riadkoch a hodnôt v stĺpcoch, ktoré súvisia s aktuálnym riadkom. Existujú aj niektoré funkcie (EARLIER a EARLIEST), ktoré získajú hodnotu z aktuálneho riadka a potom túto hodnotu použijú pri vykonávaní operácie v celej tabuľke.

Kontext dotazu odkazuje na podmnožinu údajov, ktorá je implicitne vytvorená pre každú bunku v kontingenčnej tabuľke v závislosti od hlavičiek riadkov a stĺpcov.

Kontext filtra je množina hodnôt povolených v každom stĺpci na základe obmedzení filtra, ktoré boli použité v riadku alebo ktoré sú definované výrazmi filtra vo vzorci.

Na začiatok stránky

Kontext riadka

Ak vytvoríte vzorec vo vypočítanom stĺpci, kontext riadka pre tento vzorec obsahuje hodnoty zo všetkých stĺpcov v aktuálnom riadku. Ak tabuľka súvisí s inou tabuľkou, obsah obsahuje aj všetky hodnoty z tejto inej tabuľky, ktoré súvisia s aktuálnym riadkom.

Predpokladajme napríklad, že vytvoríte vypočítaný stĺpec =[Dopravné] + [Daň], ktorý sčíta dva stĺpce z tej istej tabuľky. Tento vzorec sa správa ako vzorce v excelovej tabuľke, ktoré automaticky odkazujú na hodnoty z rovnakého riadka. Všimnite si, že tabuľky sa líšia od rozsahov: pomocou zápisu rozsahu nemôžete odkazovať na hodnotu z riadka pred aktuálnym riadkom a nemôžete odkazovať na ľubovoľnú jednu hodnotu v tabuľke alebo bunke. Vždy musíte pracovať s tabuľkami a stĺpcami.

Kontext riadka automaticky sleduje vzťahy medzi tabuľkami a určuje, ktoré riadky v súvisiacich tabuľkách sú priradené k aktuálnemu riadku.

Nasledujúci vzorec napríklad používa funkciu RELATED na načítanie hodnoty dane zo súvisiacej tabuľky na základe oblasti, do akej bola objednávka doručená. Daňová hodnota sa určuje pomocou hodnoty pre oblasť v aktuálnej tabuľke, vyhľadania oblasti v súvisiacej tabuľke a následného získania sadzby dane pre danú oblasť zo súvisiacej tabuľky.

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

Tento vzorec jednoducho získa sadzbu dane pre aktuálnu oblasť z tabuľky Oblasť. Nie je potrebné poznať ani zadať kľúč, ktorý spája tabuľky.

Kontext viacerých riadkov

Jazyk DAX navyše obsahuje funkcie, ktoré iterujú výpočty v tabuľke. Tieto funkcie môžu mať viacero aktuálnych riadkov a kontextov aktuálneho riadka. V programovacom zmysle môžete vytvoriť vzorce, ktoré sa opakujú cez vnútornú a vonkajšiu slučku.

Predpokladajme napríklad, že zošit obsahuje tabuľku Produkty a tabuľku Predaj . Možno budete chcieť prejsť celú tabuľku predaja, ktorá je plná transakcií zahŕňajúcich viaceré produkty, a vyhľadať najväčšie objednané množstvo pre každý produkt v rámci jednej transakcie.

V Exceli tento výpočet vyžaduje rad priebežných súhrnov, ktoré by bolo potrebné znova vytvoriť, ak by sa údaje zmenili. Ak ste mocní používatelia Excelu, možno budete môcť vytvárať vzorce poľa, ktoré by túto úlohu robili. Prípadne môžete v relačnej databáze zapisovať vnorené čiastkové výbery.

Pomocou jazyka DAX však môžete vytvoriť jeden vzorec, ktorý vráti správnu hodnotu, a výsledky sa automaticky aktualizujú pri každom pridaní údajov do tabuliek.

=MAXX(FILTER(Predaj;[KódKľúča]=EARLIER([KódKľúča]);Predaj[MnožstvoObjednávky])

Podrobný návod pre tento vzorec nájdete vo funkcii EARLIER.

Stručne povedané, funkcia EARLIER uloží kontext riadka z operácie, ktorá predchádzala aktuálnej operácii. Funkcia vždy ukladá do pamäte dve množiny kontextu: jedna množina kontextu predstavuje aktuálny riadok pre vnútornú slučku vzorca a iná množina kontextu predstavuje aktuálny riadok pre vonkajšiu slučku vzorca. DAX automaticky podáva hodnoty medzi týmito dvoma slučkami, aby ste mohli vytvoriť komplexné agregáty.

Na začiatok stránky

Kontext dotazu

Kontext dotazu odkazuje na podmnožinu údajov, ktorá sa implicitne načíta pre vzorec. Keď umiestnite pole mierky alebo inej hodnoty do bunky v kontingenčnej tabuľke, nástroj Power Pivot preskúma hlavičky riadkov a stĺpcov, rýchle filtre a filtre zostáv a určí kontext. Potom Power Pivot vykoná potrebné výpočty na vyplnenie každej bunky v kontingenčnej tabuľke. Množina údajov, ktorá sa načíta, je kontext dotazu pre každú bunku.

Keďže kontext sa môže meniť v závislosti od umiestnenia vzorca, výsledky vzorca sa menia aj v závislosti od toho, či používate vzorec v kontingenčnej tabuľke s mnohými zoskupeniami a filtrami, alebo vo vypočítanom stĺpci bez filtrov a minimálneho kontextu.

Predpokladajme napríklad, že vytvoríte tento jednoduchý vzorec, ktorý sčíta hodnoty v stĺpci Zisk v tabuľke Predaj :

=SUM('Predaj'[Zisk])

Ak použijete tento vzorec vo vypočítanom stĺpci v tabuľke Predaj , výsledky vzorca budú rovnaké pre celú tabuľku, pretože kontext dotazu pre vzorec je vždy celá množina údajov tabuľky Predaj . Vaše výsledky budú mať zisk pre všetky oblasti, všetky produkty, všetky roky atď.

Zvyčajne však nechcete vidieť rovnaký výsledok stovky krát, ale chcete získať zisk za konkrétny rok, konkrétnu krajinu alebo oblasť, konkrétny produkt alebo nejakú kombináciu týchto produktov a potom získať celkový súčet.

V kontingenčnej tabuľke je jednoduché zmeniť kontext pridaním alebo odstránením hlavičiek stĺpcov a riadkov a pridaním alebo odstránením rýchlych filtrov. V mierke môžete vytvoriť taký vzorec, ako je uvedený vyššie, a potom ho vložiť do kontingenčnej tabuľky. Vždy, keď do kontingenčnej tabuľky pridáte záhlavia stĺpcov alebo riadkov, zmeníte kontext dotazu, v ktorom sa mierka vyhodnocuje. Operácie filtrovania a filtrovania ovplyvňujú aj kontext. Preto sa rovnaký vzorec použitý v kontingenčnej tabuľke vyhodnotí v inom kontexte dotazu pre každú bunku.

Na začiatok stránky

Kontext filtra

Kontext filtra sa pridá, keď zadáte obmedzenia filtra pre množinu hodnôt povolených v stĺpci alebo tabuľke pomocou argumentov vo vzorci. Kontext filtra sa používa nad ostatnými kontextmi, ako je napríklad kontext riadka alebo kontext dotazu.

Kontingenčná tabuľka napríklad vypočíta hodnoty pre každú bunku na základe záhlaví riadkov a stĺpcov, ako je popísané v predchádzajúcej časti o kontexte dotazu. V rámci mierok alebo vypočítaných stĺpcov, ktoré pridáte do kontingenčnej tabuľky, však môžete zadať výrazy filtra na ovládanie hodnôt, ktoré vzorec používa. Môžete tiež selektívne vymazať filtre v konkrétnych stĺpcoch.

Ďalšie informácie o vytváraní filtrov vo vzorcoch nájdete vo funkciách filtra.

Príklad vymazania filtrov na vytvorenie celkových súčtov nájdete vo funkcii ALL.

Príklady selektívneho vymazania a používania filtrov vo vzorcoch nájdete vo funkcii ALLEXCEPT.

Preto je potrebné skontrolovať definíciu mierok alebo vzorcov použitých v kontingenčnej tabuľke, aby ste boli informovaní o kontexte filtra pri interpretácii výsledkov vzorcov.

Na začiatok stránky

Určenie kontextu vo vzorcoch

Keď vytvoríte vzorec, Power Pivot pre Excel najprv skontroluje všeobecnú syntax a potom skontroluje názvy stĺpcov a tabuliek, ktoré poskytnete v súvislosti s možnými stĺpcami a tabuľkami v aktuálnom kontexte. Ak Power Pivot nemôže nájsť stĺpce a tabuľky zadané vzorcom, zobrazí sa chyba.

Kontext sa určuje podľa popisu v predchádzajúcich častiach pomocou dostupných tabuliek v zošite, akýchkoľvek vzťahov medzi tabuľkami a všetkých použitých filtrov.

Ak ste napríklad práve importovali niektoré údaje do novej tabuľky a nepoužili žiadne filtre, celá množina stĺpcov v tabuľke je súčasťou aktuálneho kontextu. Ak máte viacero tabuliek prepojených vzťahmi a pracujete v kontingenčnej tabuľke, ktorá bola filtrovaná pridaním záhlaví stĺpcov a použitím rýchlych filtrov, kontext obsahuje súvisiace tabuľky a všetky filtre na údajoch.

Kontext je výkonný koncept, ktorý môže tiež sťažiť riešenie problémov so vzorcami. Odporúčame vám začať s jednoduchými vzorcami a vzťahmi, aby ste videli, ako kontext funguje, a potom začať experimentovať s jednoduchými vzorcami v kontingenčných tabuľkách. Nasledujúca časť obsahuje aj niekoľko príkladov toho, ako vzorce používajú rôzne typy kontextu na dynamické vrátenie výsledkov.

Príklady kontextu vo vzorcoch

  • Funkcia RELATED rozbalí kontext aktuálneho riadka tak, aby zahŕňal hodnoty v súvisiacom stĺpci. To vám umožní vykonávať vyhľadávania. Príklad v tejto téme ilustruje interakciu filtrovania a kontextu riadka.

  • Funkcia FILTER umožňuje zadať riadky, ktoré sa majú zahrnúť do aktuálneho kontextu. Príklady v tejto téme tiež znázorňujú, ako vložiť filtre do iných funkcií, ktoré vykonávajú agregácie.

  • Funkcia ALL nastaví kontext vo vzorci. Môžete ho použiť na prepísanie filtrov použitých v dôsledku kontextu dotazu.

  • Funkcia ALLEXCEPT umožňuje odstrániť všetky filtre okrem toho, ktoré určíte. V oboch témach nájdete príklady, ktoré vás prejdú tvorbou vzorcov a porozumením zložitých kontextov.

  • Funkcie EARLIER a EARLIEST umožňujú cyklicky prechádzať tabuľkami vykonaním výpočtov a zároveň odkazovať na hodnotu z vnútornej slučky. Ak poznáte koncept rekurzie a vnútorné a vonkajšie slučky, oceníte silu, ktorú poskytujú funkcie EARLIER a EARLIEST. Ak ste s týmito konceptmi ešte nelimitli, postupujte podľa krokov v príklade pozorne, aby ste videli, ako sa vnútorný a vonkajší kontext používajú vo výpočtoch.

Na začiatok stránky

Referenčná integrita

Táto časť popisuje niektoré pokročilé koncepty súvisiace s chýbajúcimi hodnotami v Power Pivot tabuľkách, ktoré sú prepojené vzťahmi. Táto časť môže byť pre vás užitočná, ak máte zošity s viacerými tabuľkami a zložitými vzorcami a potrebujete pomoc pri pochopení výsledkov.

Ak ste novým používateľom konceptov relačných údajov, odporúčame, aby ste si najprv prečítali úvodnú tému Prehľad vzťahov.

Vzťahy referenčnej integrity a Power Pivot

Power Pivot nevyžaduje vynútenie referenčnej integrity medzi dvoma tabuľkami na definovanie platného vzťahu. Namiesto toho sa na konci "one" každého vzťahu "one-to-many" vytvorí prázdny riadok a použije sa na spracovanie všetkých nezodpovedajúcich riadkov zo súvisiacej tabuľky. V skutočnosti sa správa ako vonkajšie spojenie SQL.

Ak v kontingenčných tabuľkách zoskupíte údaje podľa jednej strany vzťahu, všetky nezhodné údaje na strane "many" vzťahu sa zoskupia a zahrnú sa do súčtov s prázdnym záhlavím riadka. Prázdny nadpis sa zhruba rovná neznámemu členovi.

Vysvetlenie neznámeho člena

Koncept neznámeho člena vás pravdepodobne pozná, ak pracujete s multidimenzionálnymi databázovými systémami, ako je napríklad SQL Server Analysis Services. Ak je tento výraz pre vás nový, nasledujúci príklad vysvetľuje, čo je neznámy člen a ako ovplyvňuje výpočty.

Predpokladajme, že vytvárate výpočet, ktorý sčíta mesačný predaj pre každý obchod, ale v stĺpci v tabuľke Predaj chýba hodnota pre názov obchodu. Vzhľadom na to, že tabuľky pre Obchod a Predaj sú prepojené názvom obchodu, čo by ste očakávali vo vzorci? Ako by mala skupina kontingenčných tabuliek zobraziť údaje o predaji, ktoré nesúvisia s existujúcim obchodom?

Tento problém je bežný v skladoch údajov, kde veľké tabuľky údajov faktov musia logicky súvisieť s tabuľkami dimenzií, ktoré obsahujú informácie o obchodoch, oblastiach a ďalších atribútoch, ktoré sa používajú na kategorizáciu a výpočet faktov. Na vyriešenie problému sa neznámemu členovi dočasne priradia všetky nové skutočnosti, ktoré nesúvisia s existujúcou entitou. Z toho dôvodu sa nesúvisiace fakty zobrazia zoskupené v kontingenčnej tabuľke pod prázdnym nadpisom.

Spracovanie prázdnych hodnôt a prázdneho riadka

Prázdne hodnoty sa líšia od prázdnych riadkov, ktoré sa pridajú, aby sa prispôsobili neznámemu členovi. Prázdna hodnota je špeciálna hodnota, ktorá sa používa na vyjadrenie hodnôt null, prázdnych reťazcov a iných chýbajúcich hodnôt. Ďalšie informácie o prázdnej hodnote, ako aj o iných typoch údajov DAX, nájdete v téme Typy údajov v dátových modeloch.

Na začiatok stránky

Potrebujete ďalšiu pomoc?

Chcete ďalšie možnosti?

Môžete preskúmať výhody predplatného, prehľadávať školiace kurzy, naučiť sa zabezpečiť svoje zariadenie a ešte oveľa viac.

Komunity pomôžu s kladením otázok a odpovedaním na ne, s poskytovaním pripomienok a so získavaním informácií od odborníkov s bohatými znalosťami.