Kontext vo vzorcoch DAX

Dôležité : Tento článok je strojovo preložený, prečítajte si vyhlásenie. Anglickú verziu tohto článku nájdete tu a môžete ju použiť ako 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.

Táto časť definuje rôzne typy kontextu: kontext riadka, kontext dotazu a kontext filtra. Vysvetľuje spôsob vyhodnocovania kontextu 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 umožňuje vykonávať dynamickej analýzy. Princípy kontextu je dôležité pre budovy a riešenie problémov so vzorcami.

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

Kontext riadka si možno predstaviť ako „aktuálny riadok“. Ak ste vytvorili vypočítavaný stĺpec, kontext riadka pozostáva z hodnôt v každom jednotlivom riadku a hodnôt v stĺpcoch súvisiacich s aktuálnym riadkom. Existujú aj niektoré funkcie (funkcia EARLIER a funkcia EARLIEST), ktoré získajú hodnotu z aktuálneho riadka a potom túto hodnotu používajú pri vykonávaní operácií v rámci celej tabuľky.

Kontext dotazu označuje podmnožinu údajov, ktorá sa implicitne vytvára pre každú bunku kontingenčnej tabuľky 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é na riadok alebo definované pomocou výrazov filtra vo vzorci.

Na začiatok stránky

Kontext riadka

Ak ste vytvorili vzorec vo vypočítavanom stĺpci, kontext riadka pre daný vzorec obsahuje hodnoty zo všetkých stĺpcov v aktuálnom riadku. Ak tabuľka súvisí s inou tabuľkou, tento obsah zahŕňa aj všetky hodnoty z danej tabuľky súvisiacej 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ôžete prejsť celú tabuľku predaja je plný transakcie týkajúce sa viaceré produkty, a nájsť najväčšie množstvo si objednali balík 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, ktoré sa implicitne 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 je potrebné výpočty na naplnenie každú bunku v kontingenčnej tabuľke. Množina ú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 chcete použiť 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 budú 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ýchle filtre. Môžete vytvoriť vzorec, ako je vyššie, opatrenie, 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áva, keď pomocou argumentov vzorca zadáte obmedzenia filtra na určitú množinu hodnôt povolených v stĺpci alebo tabuľke. Kontext filtra sa aplikuje na ostatné kontexty, 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šak v rámci miery alebo vypočítané stĺpce, ktoré pridáte do kontingenčnej tabuľky, môžete určiť výrazy filtra na ovládanie hodnôt, ktoré používa 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ívneho vymazania a použitia filtrov vo vzorcoch nájdete v článku Funkcia ALLEXCEPT.

Preto je potrebné skontrolovať definíciu miery alebo vzorcov použitých v kontingenčnej tabuľke, 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 je pre vás koncept relačných údajov nový, odporúčame vám, 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 vytvoríte 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 ukladacieho priestoru. Vzhľadom na to, názov ukladacieho priestoru sú prepojené tabuľky pre ukladanie a predaja , čo by ste očakávali diať vo vzorci? Ako by mali v kontingenčnej tabuľke skupiny alebo Zobraziť údaje o predaji, ktoré sa netýkajú existujúceho ukladacieho priestoru?

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ázdnych riadkov, ktoré sa pridávajú, aby obsiahli neznámy člen. Prázdna hodnota je špeciálna hodnota používaná na vyjadrenie hodnôt null, prázdnych reťazcov a ďalších chýbajúcich hodnôt. Ďalšie informácie o prázdnej hodnote a o ďalších typoch údajov jazyka DAX nájdete v článku Typy údajov v modeloch údajov.

Na začiatok stránky

Poznámka : Vyhlásenie týkajúce sa strojového prekladu: Tento článok bol preložený počítačovým systémom bez zásahu človeka. Poskytovaním týchto strojových prekladov umožňuje spoločnosť Microsoft aj používateľom, ktorí nehovoria po anglicky, využívať obsah o produktoch, službách a technológiách spoločnosti Microsoft. Článok bol preložený strojovo, môže preto obsahovať chyby týkajúce sa slovnej zásoby, syntaxe alebo gramatiky.

Rozšírte svoje zručnosti
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.

×