Kontext vo vzorcoch DAX

Poznámka:  Radi by sme vám čo najrýchlejšie poskytovali najaktuálnejší obsah Pomocníka vo vašom vlastnom jazyku. Táto stránka bola preložená automaticky a môže obsahovať gramatické chyby alebo nepresnosti. Naším cieľom je, aby bol tento obsah pre vás užitočný. Dali by ste nám v dolnej časti tejto stránky vedieť, či boli pre vás tieto informácie užitočné? Tu nájdete anglický článok pre jednoduchú referenciu.

Kontext umožňuje vykonávať dynamické analýzy, v ktorých sa môžu výsledky vzorcov meniť na základe aktuálneho výberu riadka alebo bunky a súvisiacich údajov. Pochopenie kontextu a jeho efektívneho použitia je veľmi dôležité pri vytváraní výkonných vzorcov, dynamických analýz a riešení problémov vo vzorcoch.

V tejto časti definuje rôzne typy kontextu: riadok, ktorý sa kontext, kontext dotazu a kontext filtra. Vysvetľuje, ako kontext vyhodnotí pre vzorce vo vypočítavaných stĺpcoch a v kontingenčných tabuľkách.

Posledná časť tohto článku obsahuje prepojenia na podrobné príklady, ktoré ilustrujú, ako sa menia výsledky vzorcov v závislosti od kontextu.

Princípy kontextu

Vzorce v PowerPivot môže mať vplyv na filtrov v kontingenčnej tabuľke, vzťahy medzi tabuľkami a filtrov vo vzorcoch. Kontext tvorí, čo vám umožní vykonať dynamický analýzy. Princípy kontextu je dôležité pre budovy a riešenie problémov so vzorcami.

Existujú rôzne typy kontextu: riadok, ktorý sa kontext, kontext dotazu a kontext filtra.

Kontext riadka môžete považovať za "aktuálny riadok". Ak ste vytvorili vypočítavaný stĺpec, kontext riadka pozostáva z hodnoty v každom riadku jednotlivých a hodnoty v stĺpcoch, ktoré súvisia s aktuálnym riadkom. Existujú aj niektoré funkcie (funkcia EARLIER a funkcia EARLIEST), získanie hodnoty z aktuálneho riadka a potom použiť túto hodnotu počas vykonávania cez celú tabuľku.

Kontext dotazu označuje podmnožinu údajov, ktorá sa implicitne vytvára pre každú bunku v kontingenčnej tabuľke, v závislosti od hlavičiek riadkov a stĺpcov.

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

Na začiatok stránky

Kontext riadka

Ak vytvoríte vzorec vo vypočítanom stĺpci, kontext riadka pre tento vzorec zahŕňa hodnoty zo všetkých stĺpcov v aktuálnom riadku. Ak sa týka tabuľky do inej tabuľky, obsahu obsahuje aj všetky hodnoty z tejto inej tabuľky, ktoré súvisia s aktuálnym riadkom.

Predpokladajme, že vytvoríte vypočítavaný stĺpec, = [prepravné náklady] + [daň]

, ktorý sčíta dva stĺpce z tej istej tabuľky. Tento vzorec sa správa ako vzorce v tabuľke programu Excel, ktoré automaticky odkazujú na hodnoty z rovnakého riadka. Nezabúdajte, že tabuľky nie sú to isté čo rozsahy: nemožno odkazovať na hodnotu z predchádzajúceho riadka pomocou zápisu rozsahu ani odkazovať na samostatné hodnoty v tabuľke alebo bunke. Vždy je potrebné 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 sa vzťahujú na aktuálny riadok.

Nasledujúci vzorec napríklad používa funkciu RELATED na získanie hodnoty dane zo súvisiacej tabuľky na základe oblasti, do ktorej bola objednávka odoslaná. Hodnota dane sa určuje nasledujúcim spôsobom: podľa hodnoty oblasti v aktuálnej tabuľke sa daná oblasť vyhľadá v súvisiacej tabuľke, z ktorej sa získa hodnota dane pre danú oblasť.

= [Prepravné náklady] + RELATED('Region'[TaxRate])

Tento vzorec získa hodnotu dane pre aktuálnu oblasť z tabuľky Oblasť. Kľúč, ktorý tabuľky spája, nie je potrebné poznať ani zadávať.

Viacnásobný kontext riadka

Jazyk DAX okrem toho obsahuje funkcie vykonávajúce iterácie výpočtov naprieč tabuľkou. Tieto funkcie môžu pracovať s väčším počtom aktuálnych riadkov a kontextov aktuálneho riadka. Vyjadrené slovami z oblasti programovania, môžete vytvárať vzorce, ktoré pracujú rekurzívne vo vnútornej a vonkajšej slučke.

Predpokladajme napríklad, že zošit obsahuje tabuľku produkty a predaj . Môže ísť cez celú tabuľku predaja je plný transakcie týkajúce sa viaceré produkty, a vyhľadajte najväčšie množstvo si objednali pre každý produkt na jednu transakciu.

V programe Excel tento výpočet vyžaduje skupinu medzisúčtov, ktoré je potrebné v prípade zmeny údajov zostaviť znova. Pokročilí používatelia programu Excel môžu tento problém vyriešiť zostavením vzorcov poľa. Môžete tiež vytvoriť vnorené podvýbery v relačnej databáze.

Pomocou jazyka DAX však stačí vytvoriť jediný vzorec, ktorý vracia správnu hodnotu. Výsledky sa automaticky aktualizujú pri každom pridaní údajov do tabuliek.

=Maxx(filter(Sales,[ProdKey]=EARLIER([ProdKey])),Sales[OrderQty])

Podrobný návod pre tento vzorec, nájdete v článku funkcia EARLIER.

V skratke možno povedať, že funkcia EARLIER ukladá 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 vo vnútornej slučke vzorca, druhá aktuálny riadok vo vonkajšej slučke vzorca. Jazyk DAX automaticky presúva hodnoty medzi oboma slučkami, čo umožňuje vytvárať zložité agregácie.

Na začiatok stránky

Kontext dotazu

Kontext dotazu označuje podmnožinu údajov, implicitne sa nenačítajú vzorec. Keď vložíte opatrenie alebo iné pole hodnotu do bunky v kontingenčnej tabuľke, že mechanizmus PowerPivot preskúma hlavičiek riadkov a stĺpcov, rýchlych filtrov a filtrov zostavy na určenie kontextu. Potom PowerPivot zjednodušuje výpočty potrebné na naplnenie každú bunku v kontingenčnej tabuľke. Množstvo údajov, ktoré sa nenačítajú je kontext dotazu pre každú bunku.

Keďže kontext sa môže meniť v závislosti od umiestnenia vzorca, výsledky vzorca sa takisto menia podľa toho, či vzorec použijete v kontingenčnej tabuľke obsahujúcej mnoho zoskupení a filtrov alebo vo vypočítavanom stĺpci bez filtrov a s minimálnym kontextom.

Napríklad, že vytvoríte jednoduchý vzorec, ktorý sčíta hodnoty v stĺpci Profit table:=SUM('Sales'[Profit]) predaj .

Ak použijete tento vzorec vo vypočítanom stĺpci v tabuľke predaj , výsledky vzorca bude rovnaký pre celú tabuľku, pretože kontext dotazu vzorca je vždy celú množinu údajov tabuľky predaj . Výsledky bude mať zisk pre všetky oblasti, všetky produkty, všetky roky, a tak ďalej.

Zvyčajne však nie je potrebné zobrazovať rovnaký výsledok niekoľko stokrát. Namiesto toho môže byť vhodné zobraziť zisk pre konkrétny rok, krajinu alebo oblasť, produkt alebo kombináciu týchto parametrov a potom vypočítať celkový súčet.

V kontingenčnej tabuľke, je jednoduché zmeniť kontext pridaním alebo odstránením hlavičky stĺpcov a riadkov a pridaním alebo odstránením rýchlych filtrov. Môžete vytvoriť vzorec, ako je vyššie, opatrenia, a potom ju vložte do kontingenčnej tabuľky. Vždy, keď pridáte hlavičky stĺpcov a riadkov v kontingenčnej tabuľke, môžete zmeniť kontext dotazu, v ktorom sa vyhodnocuje mieru. Rezanie a filtrovanie operácií ovplyvniť aj kontext. Preto rovnaký vzorec, použiť v kontingenčnej tabuľke, sa vyhodnocuje v kontexte iného dotazu pre každú bunku.

Na začiatok stránky

Kontext filtra

Kontext filtra sa pridá po zadaní filtra obmedzenia množinu hodnôt, ktoré sú povolené v stĺpci tabuľky, alebo pomocou argumenty do vzorca. Kontext filtra sa vzťahuje nad iných kontextoch, ako je napríklad kontext riadka alebo kontext dotazu.

Napríklad kontingenčnú tabuľku 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 na kontext dotazu. V rámci miery alebo vypočítané stĺpce, ktoré pridáte do kontingenčnej tabuľky, môžete výrazy filtra na ovládanie hodnôt, ktoré používajú vzorec. Môžete tiež selektívne vymazať filtre v jednotlivých stĺpcov.

Ďalšie informácie o vytváraní filtrov vo vzorcoch nájdete v článku Funkcie filtrovania (DAX).

Príklad vymazania filtrov na vytvorenie celkových súčtov, nájdete v článku funkcia ALL.

Príklady selektívne vymazanie použitie filtrov vo vzorcoch nájdete v téme Funkcia ALLEXCEPT.

Preto je potrebné skontrolovať definíciu miery alebo vzorcov použitých v kontingenčnej tabuľke, tak, aby ste si boli vedomí kontextu filtra pri interpretácii výsledkov vzorcov.

Na začiatok stránky

Určenie kontextu vo vzorcoch

Keď vytvoríte vzorec, PowerPivot pre Excel najskôr skontroluje všeobecnú syntax a potom skontroluje zadané názvy stĺpcov a tabuliek voči možným stĺpcom a tabuľkám v rámci aktuálneho kontextu. Ak PowerPivot nemôže nájsť stĺpce a tabuľky zadané vo vzorci, zobrazí sa chyba.

Kontext sa určuje dostupnými tabuľkami v zošite, vzťahmi medzi tabuľkami a všetkými použitými filtrami, ako je to popísané v predchádzajúcich častiach.

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

Koncept kontextu je veľmi výkonný, čo ale sťažuje riešenie problémov so vzorcami. Odporúčame vám pomocou jednoduchých vzorcov a vzťahov naučiť sa, ako kontext pracuje, a potom začať experimentovať s jednoduchými vzorcami v kontingenčných tabuľkách. V nasledujúcej časti sú uvedené príklady, v ktorých vzorce používajú rôzne typy kontextu na dynamické vrátenie výsledkov.

Príklady kontextu vo vzorcoch

  • Funkcia RELATED rozširuje kontext aktuálneho riadka tak, aby zahŕňal hodnoty v súvisiacom stĺpci. Umožní vám to vykonávať vyhľadávania. Príklad v tejto téme znázorňuje interakciu filtrovania a kontextu riadka.

  • Funkcia FILTER umožňuje určiť riadky, ktoré sa zahrnú do aktuálneho kontextu. Príklad v tejto téme znázorňujú aj spôsob vloženia filtrov do iných funkcií, ktoré vykonávajú agregácie.

  • Funkcia ALL nastavuje kontext v rámci vzorca. Pomocou tejto funkcie môžete prepísať filtre, ktoré sú použité ako výsledok kontextu dotazu.

  • Funkcia ALLEXCEPT umožňuje odstrániť všetky filtre okrem jedného, ktorý zadáte. Obidve témy obsahujú príklady, ktoré vás prevedú vytvorením vzorcov a pomôžu vám pochopiť zložité kontexty.

  • Funkcie EARLIER a EARLIEST umožňujú vytvárať slučky v tabuľkách a vykonávať tak výpočty, pri ktorých môžete odkazovať na hodnotu z vnútornej slučky. Ak ste oboznámení s kontextom rekurzie a vnútornými a vonkajšími slučkami, oceníte možnosti, ktoré funkcie EARLIER a EARLIEST poskytujú. Ak sú pre vás tieto koncepty nové, odporúčame vám pozorne prejsť jednotlivými krokmi príkladu, aby ste videli, ako sa vo výpočtoch používa vnútorný a vonkajší kontext.

Na začiatok stránky

Referenčná integrita

Táto časť popisuje niektoré pokročilé koncepty súvisiace s chýbajúcimi hodnotami v tabuľkách doplnku PowerPivot prepojených vzťahmi. Informácie z tejto časti môžu byť užitočné, ak máte zošit s viacerými tabuľkami a zložitými vzorcami a chcete ľahšie pochopiť výsledky.

Ak ešte len začínate používať koncept relačných údajov, odporúčame, aby ste si najskôr prečítali úvodnú tému Prehľad vzťahov.

Referenčná integrita a vzťahy doplnku PowerPivot

PowerPivot nevyžaduje na definovanie platného vzťahu striktné vynucovanie referenčnej integrity medzi dvomi tabuľkami. Namiesto toho sa na strane „1“ každého vzťahu typu 1:N vytvorí prázdny riadok, ktorý sa používa na spracovanie všetkých nezodpovedajúcich riadkov zo súvisiacej tabuľky. Riadok sa teda správa ako vonkajšie spojenie SQL.

Nezodpovedajúce údaje na strane „N“ vzťahu sa pri zoskupovaní údajov v kontingenčných tabuľkách podľa strany „1“ zoskupia a zahrnú do súčtu s prázdnym záhlavím riadka. Prázdne záhlavie je približne ekvivalentné prázdnemu členu.

Princíp neznámeho člena

Koncept neznámeho člena možno poznáte, ak ste pracovali so systémami multidimenzionálnych databáz, ako je napríklad služba SQL Server Analysis Services. Ak je pre vás tento výraz nový, pomocou nasledujúceho príkladu zistíte, čo neznámy člen je a ako ovplyvňuje výpočty.

Predpokladajme, že vytvárate výpočtu, ktorý sčíta mesačný objem predaja pre každý ukladací priestor, ale stĺpca v tabuľke predaja chýba hodnota pre názov obchodu. Vzhľadom na to, partnerskí predajcovia sú prepojené tabuľky pre ukladanie a predaja , čo by ste očakávali diať vo vzorci? Ako by sa v kontingenčnej tabuľke skupiny alebo Zobraziť údaje o predaji, ktoré sa nevzťahujú na existujúce obchod?

Tento problém sa bežne vyskytuje v skladoch údajov, kde je potrebné vytvárať logické vzťahy medzi rozsiahlymi tabuľkami faktických údajov a tabuľkami dimenzií, ktoré obsahujú informácie o obchodoch, oblastiach a ďalších atribútoch používaných na kategorizovanie a výpočet faktov. Tento problém možno vyriešiť tak, že nové fakty, ktoré nemajú vzťah s existujúcou entitou, sa dočasne priradia k neznámemu členu. Z tohto dôvodu sa fakty, ktoré nemajú vzťah, zobrazia v kontingenčnej tabuľke zoskupené pod prázdnym záhlavím.

Spracovanie prázdnych hodnôt na rozdiel od prázdneho riadka

Prázdne hodnoty sa líšia od prázdne riadky, ktoré sú pridané tak, aby umožňovali neznámeho člena. Prázdna hodnota je špeciálne hodnota, ktorá sa používa na reprezentáciu iné chýbajúce hodnoty null a prázdnych reťazcov. Ďalšie informácie o prázdnu hodnotu, ako aj iné typy údajov DAX nájdete v téme typy údajov v modeloch údajov.

Na začiatok stránky

Rozšírte svoje zručnosti práce s balíkom Office
Preskúmať školenie
Buďte medzi prvými, ktorí získajú nové funkcie
Pridajte sa k insiderom pre Office

Boli tieto informácie užitočné?

Ďakujeme za vaše pripomienky!

Ďakujeme vám za pripomienky. Pravdepodobne vám pomôže, ak vás spojíme s pracovníkom podpory pre Office.

×