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ýzu, v ktorej sa výsledky vzorca môžu zmeniť tak, aby zodpovedali aktuálnemu riadku alebo výberu buniek, ako aj súvisiacim údajom. Porozumenie kontextu a účinné používanie kontextu sú veľmi dôležité na vytváranie vzorcov s vysokou výkonnosťou, dynamických analýz a na riešenie problémov vo vzorcoch.

V tejto časti sú definované rôzne typy kontextu: kontext riadka, kontext dotazu a kontext filtra. Vysvetľuje, ako sa v kontexte hodnotia vzorce vo vypočítavaných stĺpcoch a v kontingenčných tabuľkách.

V poslednej časti tohto článku nájdete prepojenia na podrobné príklady, ktoré ilustrujú, ako sa výsledky vzorcov zmenia v závislosti od kontextu.

Informácie o kontexte

Vzorce v PowerPivot 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 je to, čo umožňuje vykonávať dynamickú analýzu. Dôležité informácie o kontexte pri vytváraní a riešení problémov so vzorcami.

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

Kontext riadka môže byť pomyslený ako aktuálny riadok. Ak ste vytvorili vypočítavaný stĺpec, kontext riadka pozostáva z hodnôt v jednotlivých riadkoch a hodnotách v stĺpcoch, ktoré súvisia s aktuálnym riadkom. K dispozícii sú aj niektoré funkcie (staršie a najstaršie ), ktoré získajú hodnotu z aktuálneho riadka a potom túto hodnotu používajú pri vykonávaní operácie v celej tabuľke.

Kontext dotazu odkazuje na podmnožinu údajov, ktoré sa implicitne vytvárajú 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 jednotlivých stĺpcoch 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čítavanom stĺpci, kontext riadka pre daný vzorec zahŕňa hodnoty zo všetkých stĺpcov v aktuálnom riadku. Ak je tabuľka spojená s inou tabuľkou, obsah obsahuje aj všetky hodnoty z inej tabuľky, ktoré súvisia s aktuálnym riadkom.

Predpokladajme napríklad, že vytvoríte vypočítavaný stĺpec, = [Freight] + [daň],

, ktorý sčíta dva stĺpce z rovnakej tabuľky. Tento vzorec sa chová ako vzorce v excelovej tabuľke, ktoré automaticky odkazujú na hodnoty z toho istého riadka. Všimnite si, že tabuľky sa odlišujú od rozsahov: nie je možné odkazovať na hodnotu z riadka pred aktuálnym riadkom pomocou zápisu rozsahu a nie je možné odkazovať na ľubovoľnú ľubovoľnú jednu hodnotu v tabuľke alebo v bunke. Vždy musíte pracovať s tabuľkami a stĺpcami.

Kontext riadka automaticky sleduje vzťahy medzi tabuľkami a určí, ktoré riadky v súvisiacich tabuľkách súvisia s aktuálnym riadkom.

Nasledujúci vzorec napríklad používa SÚVISIACu funkciu na načítanie daňovej hodnoty zo súvisiacej tabuľky na základe oblasti, do ktorej bola objednávka odoslaná. Hodnota dane sa určuje pomocou hodnoty pre oblasť v aktuálnej tabuľke, v ktorej sa vyhľadáva oblasť v súvisiacej tabuľke, a potom sa v súvisiacej tabuľke zobrazí sadzba dane pre danú oblasť.

= [Freight] + PRÍBUZNÝ ("oblasť" [TaxRate])

Tento vzorec jednoducho získa daňovú tarifu pre aktuálnu oblasť z tabuľky oblasť. Nemusíte poznať ani špecifikovať kláves spájajúci tabuľky.

Kontext s viacerými riadkami

Okrem toho obsahuje DAX funkcie, ktoré opakujú výpočty v tabuľke. K týmto funkciám môže mať viacero aktuálnych riadkov a aktuálnych kontextov riadkov. V programových podmienkach môžete vytvoriť vzorce, ktoré sa navraciaa na vnútornú a vonkajšiu slučku.

Predpokladajme napríklad, že zošit obsahuje tabuľku produkty a predajnú tabuľku . Možno budete chcieť prejsť celou predajnou tabuľkou, ktorá je plná transakcií zahŕňajúcich viacero produktov, a vyhľadajú sa najväčšie nariadené množstvo pre každý produkt v jednej transakcii.

V Exceli tento výpočet vyžaduje rad priebežných súhrnov, ktoré by sa museli opätovne vytvoriť, ak sa údaje zmenia. Ak ste Power User v Exceli, môžete vytvoriť vzorce poľa, ktoré by vykonali úlohu. Prípadne v relačnej databáze môžete písať vnorené podvýbery.

S programom DAX však môžete vytvoriť jeden vzorec, ktorý vráti správnu hodnotu, a výsledky sa automaticky aktualizujú vždy, keď pridáte údaje do tabuliek.

= MAXX (FILTER (predaj; [ProdKey] = STARŠIa ([ProdKey])); predaj [OrderQty])

Podrobný návod tohto vzorca nájdete v starších.

Stručne povedané, STARŠIa funkcia ukladá kontext riadka z operácie, ktorá predchádzala aktuálnej operácii. Po celú dobu funkcia ukladá do pamäte dve množiny kontextu: jedna množina kontextu predstavuje aktuálny riadok pre vnútornú slučku vzorca a iný kontext predstavuje aktuálny riadok pre vonkajšiu slučku vzorca. DAX automaticky nakŕmi hodnoty medzi dvoma slučkami tak, aby ste mohli vytvárať komplexné agregáty.

Na začiatok stránky

Kontext dotazu

Kontext dotazu odkazuje na podmnožinu údajov, ktoré sa implicitne načítajú pre vzorec. Keď do bunky v kontingenčnej tabuľke presuniete pole mierky alebo inú hodnotu, PowerPivot motor skontroluje hlavičky riadkov a stĺpcov, rýchle filtre a filtre zostáv na určenie kontextu. PowerPivot potom vykoná potrebné výpočty na vyplnenie každej bunky v kontingenčnej tabuľke. Množina načítaných údajov je kontext dotazu pre každú bunku.

Keďže kontext sa môže meniť v závislosti od umiestnenia vzorca, výsledky vzorca sa tiež zmenia v závislosti od toho, či vzorec používate v kontingenčnej tabuľke s mnohými zoskupeniami a filtrami, alebo vo vypočítavanom 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čítavanom stĺpci v tabuľke predaj , výsledky pre vzorec budú rovnaké pre celú tabuľku, pretože kontext dotazu pre vzorec je vždy celá množina údajov v tabuľke predaj . Vaše výsledky budú mať zisk pre všetky oblasti, všetky produkty, všetky roky atď.

Zvyčajne však nechcete, aby sa rovnaký výsledok zobrazil stokrát, ale namiesto toho chcete získať zisk za konkrétny rok, konkrétnu krajinu alebo oblasť, konkrétny produkt alebo kombináciu týchto výrazov, a potom získate 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. Môžete vytvoriť vzorec, ako je uvedené vyššie, v miere a potom ho umiestniť 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 je meradlo vyhodnotené. V kontexte sa tiež ovplyvňujú operácie na krájanie a filtrovanie. Rovnaký vzorec použitý v kontingenčnej tabuľke sa preto vyhodnotí v inom kontexte dotazu pre každú bunku.

Na začiatok stránky

Kontext filtra

Pri zadávaní obmedzení filtrovania v množine hodnôt povolených v stĺpci alebo tabuľke pomocou argumentov vo vzorci sa pridá kontext filtra. Kontext filtra sa vzťahuje na ďalšie kontexty, ako je napríklad kontext riadka alebo kontext dotazu.

Kontingenčná tabuľka napríklad vypočítava hodnoty pre každú bunku na základe záhlavia riadkov a stĺpcov, ako je to popísané v predchádzajúcej časti v kontexte dotazu. V rámci opatrení alebo vypočítavaný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é používa vzorec. Môžete tiež selektívne vymazať filtre v jednotlivých stĺpcoch.

Ďalšie informácie o vytváraní filtrov vo vzorcoch nájdete v téme funkcie filtra.

Príklad toho, ako možno filtre vyprázdniť na vytvorenie celkových súčtov, nájdete v téme všetky.

Príklady selektívneho vymazania a použitia filtrov vo vzorcoch nájdete v téme funkcia ALLEXCEPT.

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

Na začiatok stránky

Určenie kontextu vo vzorcoch

Keď vytvoríte vzorec, PowerPivot pre Excel najprv skontroluje všeobecnú syntax a potom skontroluje názvy stĺpcov a tabuliek, ktoré ste zadávali proti možným stĺpcom a tabuľkám v aktuálnom kontexte. Ak PowerPivot nedokáže nájsť stĺpce a tabuľky, ktoré sú uvedené v tomto vzorci, zobrazí sa chybové hlásenie.

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

Ak ste napríklad importovali niektoré údaje do novej tabuľky a nepoužili ste žiadne filtre, celá množina stĺpcov v tabuľke je súčasťou aktuálneho kontextu. Ak máte viacero tabuliek, ktoré sú prepojené 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 údajov.

Kontext je mocný koncept, ktorý môže tiež sťažiť riešenie vzorcov. 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. V nasledujúcej časti sú uvedené aj príklady toho, ako vzorce používajú rôzne typy kontextu na dynamickú návratnosť výsledkov.

Príklady kontextu vo vzorcoch

  • SÚVISIACa funkcia rozbalí kontext aktuálneho riadka tak, aby obsahoval hodnoty v súvisiacom stĺpci. To vám umožní vykonávať vyhľadávania. Príklad v tejto téme znázorňuje interakciu v kontexte filtrovania a riadkov.

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

  • Funkcia ALL nastaví kontext v rámci vzorca. Môžete ju použiť na prepísanie filtrov, ktoré sa použijú ako výsledok kontextu dotazu.

  • Funkcia ALLEXCEPT umožňuje odstrániť všetky filtre okrem toho, ktoré zadáte. Obe témy zahŕňajú príklady, ktoré vás prevedie vytvorením vzorcov a pochopením zložitých kontextov.

  • PREDCHÁDZAJÚCE a najSKORŠIE funkcie umožňujú slučky cez tabuľky vykonaním výpočtov, pričom odkazujú na hodnotu z vnútornej slučky. Ak poznáte koncept Rekurzia a vnútorné a vonkajšie slučky, oceníte silu, ktorú poskytujú staršie a najSKORŠIE funkcie. Ak ste v týchto konceptoch nepracovali, mali by ste postupovať podľa krokov v tomto príklade a zistiť, ako sa vnútorné a vonkajšie kontexty používajú vo výpočtoch.

Na začiatok stránky

Referenčná integrita

Táto časť popisuje niektoré rozšírené koncepty týkajúce sa chýbajúcich hodnôt v PowerPivot tabuľkách, ktoré sú prepojené vzťahmi. Táto časť môže byť užitočná v prípade, ak máte zošity s viacerými tabuľkami a zložitými vzorcami a potrebujete pomoc pri pochopení výsledkov.

Ak máte koncept relačných údajov, odporúčame vám najprv prečítať úvodnú tému, Prehľad vzťahov.

Referenčná integrita a vzťahy PowerPivot

PowerPivot nevyžaduje, aby sa referenčná integrita vynútila medzi dvoma tabuľkami s cieľom definovať platný vzťah. Namiesto toho sa vytvorí prázdny riadok na konci každého vzťahu One-to-many a použije sa na spracovanie všetkých nezhodných riadkov zo súvisiacej tabuľky. Účinne sa chová ako vonkajšie spojenie SQL.

Ak sa v kontingenčných tabuľkách zoskupujú údaje na jednej strane vzťahu, všetky nezhodné údaje na mnohých vedľajších vzťahoch sú zoskupené a budú zahrnuté do súčtov s prázdnym záhlavím riadka. Prázdne záhlavie je približne rovnocenné s neznámym členom.

Informácie o Neznámy člen

Ak ste pracovali s viacrozmernými databázovými systémami, ako sú napríklad služby SQL Server Analysis Services, koncept neznámeho člena je pravdepodobne oboznámený s vami. Ak je výraz pre vás nový, v nasledujúcom príklade je vysvetlené, čo je neznámy člen a ako ovplyvní výpočty.

Predpokladajme, že vytvárate výpočet, ktorý sčíta mesačný predaj pre každý obchod, ale stĺpec v tabuľke predaj neobsahuje hodnotu názvu obchodu. Vzhľadom na to, že tabuľky určené na ukladanie a predaj sú prepojené názvom obchodu, čo by ste očakávali vo vzorci? Ako má skupina kontingenčnej tabuľky Zobraziť údaje o predaji, ktoré nesúvisia s existujúcim obchodom?

Tento problém je obyčajný v dátových skladoch, pričom veľké tabuľky faktov musia byť logicky prepojené 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. Ak chcete problém vyriešiť, všetky nové skutočnosti, ktoré sa nevzťahujú na existujúcu entitu, sa dočasne priradia neznámemu členovi. Preto sa nesúvisiace fakty zobrazia v kontingenčnej tabuľke pod prázdnym nadpisom.

Spracovanie prázdnych hodnôt oproti prázdnemu riadku

Prázdne hodnoty sa odlišujú od prázdnych riadkov, ktoré sa pridávajú, aby sa prispôsobili neznámemu členovi. Prázdna hodnota je špeciálna hodnota, ktorá sa používa na zastupovanie 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 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.

×