S kontekstom lahko izvedete dinamično analizo, v kateri se rezultati formule lahko spremenijo tako, da odražajo trenutno vrstico ali izbor celic in vse povezane podatke. Razumevanje konteksta in učinkovite uporabe konteksta sta zelo pomembna pri ustvarjanju visokokakovostnih formul, dinamičnih analiz in odpravljanju težav v formulah.
V tem razdelku so določene različne vrste konteksta: kontekst vrstice, kontekst poizvedbe in kontekst filtra. Razloženo je, kako je kontekst ovrednoten za formule v izračunanih stolpcih in vrtilnih tabelah.
V zadnjem delu tega članka so navedene povezave do podrobnih primerov, ki prikazujejo, kako se rezultati formul spreminjajo glede na kontekst.
Razumevanje konteksta
Na formule v Power Pivot lahko vplivajo filtri, uporabljeni v vrtilni tabeli, odnosi med tabelami in filtri, ki se uporabljajo v formulah. Kontekst omogoča dinamično analizo. Razumevanje konteksta je pomembno za ustvarjanje in odpravljanje težav s formulami.
Na voljo so različne vrste konteksta: kontekst vrstice, kontekst poizvedbe in kontekst filtra.
Kontekst vrstice je lahko »trenutna vrstica«. Če ste ustvarili izračunan stolpec, je kontekst vrstice sestavljen iz vrednosti v vsaki posamezni vrstici in vrednostih v stolpcih, ki so povezane s trenutno vrstico. Obstajajo tudi nekatere funkcije (EARLIER in EARLIEST), ki pridobiti vrednost iz trenutne vrstice, nato pa to vrednost uporabiti med izvajanjem operacije prek celotne tabele.
Kontekst poizvedbe se nanaša na podnabor podatkov, ki so implicitno ustvarjeni za vsako celico v vrtilni tabeli, odvisno od glav vrstic in stolpcev.
Kontekst filtra je nabor vrednosti, dovoljenih v posameznem stolpcu, na podlagi omejitev filtra, ki so bile uporabljene v vrstici ali ki so določene z izrazi filtra v formuli.
Kontekst vrstice
Če ustvarite formulo v izračunanem stolpcu, kontekst vrstice za to formulo vključuje vrednosti iz vseh stolpcev v trenutni vrstici. Če je tabela povezana z drugo tabelo, vsebina vključuje tudi vse vrednosti iz te druge tabele, ki so povezane s trenutno vrstico.
Recimo, da ustvarite izračunan stolpec =[Prevoz] + [Davek],
, s tem pa seštejete dva stolpca iz iste tabele. Ta formula deluje kot formule v Excelovi tabeli, ki se samodejno sklicujejo na vrednosti iz iste vrstice. Tabele se razlikujejo od obsegov: z zapisom obsega se ne morete sklicevati na vrednost iz vrstice pred trenutno vrstico in se ne morete sklicevati na poljubno posamezno vrednost v tabeli ali celici. Vedno morate delati s tabelami in stolpci.
Kontekst vrstice samodejno sledi relacijam med tabelami, da določi, katere vrstice v povezanih tabelah so povezane s trenutno vrstico.
Ta formula na primer uporablja funkcijo RELATED za pridobivanje davčne vrednosti iz povezane tabele, ki temelji na regiji, v katero je bilo naročilo poslano. Davčna vrednost je določena z vrednostjo za regijo v trenutni tabeli, ki išče regijo v povezani tabeli in nato iz povezane tabele pridobiva davčno stopnjo za to regijo.
= [Prevoz] + RELATED('Regija'[Davčna številka])
Ta formula preprosto pridobi davčno stopnjo za trenutno regijo iz tabele Regija. Ključa, ki povezuje tabele, vam ni treba poznati ali ga navesti.
Kontekst več vrstic
Poleg tega dax vključuje funkcije, ki iteriranje izračunov nad tabelo. Te funkcije imajo lahko več trenutnih vrstic in kontekstov trenutne vrstice. V programskih izrazih lahko ustvarite formule, ki se ponavljajo prek notranje in zunanje zanke.
Delovni zvezek na primer vsebuje tabelo »Izdelki « in tabelo » Prodaja«. Morda si boste želeli ogledati celotno tabelo prodaje, ki je polna transakcij, ki vključujejo več izdelkov, in poiskati največjo naročeno količino za vsak izdelek v poljubni transakciji.
V Excelu ta izračun zahteva niz vmesnih povzetkov, ki bi jih bilo treba znova ustvariti, če bi se podatki spremenili. Če ste poten uporabnik Excela, boste morda lahko ustvarili formule s polji, ki bi opravile to opravilo. Lahko pa v relacijski zbirki podatkov napišete ugnezdene podizbore.
Toda s formulo DAX lahko ustvarite eno samo formulo, ki vrne pravilno vrednost, rezultati pa so samodejno posodobljeni vsakič, ko dodate podatke v tabele.
=MAXX(FILTER(Prodaja;[KljučIzdelka]=EARLIER([Ključizdelka])),Prodaja[Naročila])
Če želite podrobna navodila za to formulo, glejte STAREJŠO.
Na kratko, funkcija EARLIER shrani kontekst vrstice iz operacije, ki je bila pred trenutno operacijo. Funkcija vedno shrani v pomnilnik dva nabora konteksta: en nabor konteksta predstavlja trenutno vrstico za notranjo zanko formule, drug nabor konteksta pa predstavlja trenutno vrstico za zunanjo zanko formule. DAX samodejno podaja vrednosti med dvema zankama, tako da lahko ustvarite zapletene združene vrednosti.
Kontekst poizvedbe
Kontekst poizvedbe se nanaša na podnabor podatkov, ki so implicitno pridobljeni za formulo. Ko spustite mero ali drugo polje z vrednostjo v celico v vrtilni tabeli, mehanizem za Power Pivot pregleda glave vrstic in stolpcev, razčlenjevalnike in filtre poročila, da določi kontekst. Nato Power Pivot potrebne izračune za izpolnjevanje posameznih celic v vrtilni tabeli. Nabor podatkov, ki se pridobijo, je kontekst poizvedbe za vsako celico.
Ker se kontekst lahko spremeni glede na mesto, kamor vstavite formulo, se spremenijo tudi rezultati formule, odvisno od tega, ali uporabljate formulo v vrtilni tabeli z veliko združevanji in filtri ali v izračunanem stolpcu brez filtrov in minimalnega konteksta.
Recimo, da ustvarite to preprosto formulo, ki sešteje vrednosti v stolpcu »Dobiček« tabele »Prodaja«:=SUM('Prodaja'[Dobiček]).
Če to formulo uporabite v izračunanem stolpcu v tabeli »Prodaja«, bodo rezultati za formulo enaki za celotno tabelo, ker je kontekst poizvedbe za formulo vedno celoten nabor podatkov v tabeli »Prodaja«. Rezultati bodo imeli dobiček za vse regije, vse izdelke, vsa leta in tako naprej.
Običajno pa ne želite videti več stokrat istega rezultata, namesto tega pa želite dobiček za določeno leto, določeno državo ali regijo, določen izdelek ali kombinacijo teh, in nato dobiti skupno vsoto.
V vrtilni tabeli lahko preprosto spremenite kontekst tako, da dodate ali odstranite glave stolpcev in vrstic ter dodate ali odstranite razčlenjevalnike. Ustvarite lahko formulo, podobno zgornji, v meri, in jo spustite v vrtilno tabelo. Ko dodate glave stolpcev ali vrstic v vrtilno tabelo, spremenite kontekst poizvedbe, v katerem je mera ovrednotena. Na kontekst vplivajo tudi postopki za zličevanje in filtriranje. Zato je ista formula, uporabljena v vrtilni tabeli, ovrednotena v drugem kontekstu poizvedbe za vsako celico.
Kontekst filtra
Kontekst filtra je dodan, ko določite omejitve filtra za nabor vrednosti, dovoljenih v stolpcu ali tabeli, z uporabo argumentov v formuli. Kontekst filtra je uporabljen za druge kontekste, na primer kontekst vrstice ali kontekst poizvedbe.
Vrtilna tabela na primer izračuna vrednosti za vsako celico na podlagi glav vrstic in stolpcev, kot je opisano v prejšnjem razdelku v kontekstu poizvedbe. Vendar pa lahko znotraj mer ali izračunanih stolpcev, ki jih dodate v vrtilno tabelo, določite izraze filtra za nadzor vrednosti, ki jih uporablja formula. Filtre za določene stolpce lahko tudi počistite.
Če želite več informacij o ustvarjanju filtrov v formulah, glejte Funkcije za filtriranje.
Če si želite ogledati primer, kako je mogoče počistiti filtre, da ustvarite skupne vsote, glejte VSE.
Če si želite ogledati primere, kako selektivno počistite in uporabite filtre v formulah, glejte Funkcija ALLEXCEPT.
Zato morate pregledati definicijo mer ali formul, uporabljenih v vrtilni tabeli, tako da ste med interpretiranjem rezultatov formul seznanjeni s kontekstom filtra.
Določanje konteksta v formulah
Ko ustvarite formulo, Power Pivot Excel najprej preveri splošno sintakso, nato pa preveri imena stolpcev in tabel, ki jih navedete, in jih primerja z morebitnimi stolpci in tabelami v trenutnem kontekstu. Če Power Pivot ne najdete stolpcev in tabel, določenih s formulo, se prikaže napaka.
Kontekst je določen, kot je opisano v prejšnjih razdelkih, tako da se uporabijo tabele, ki so na voljo v delovnem zvezku, morebitne relacije med tabelami in vsi uporabljeni filtri.
Če ste na primer pravkar uvozili nekaj podatkov v novo tabelo in niste uporabili filtrov, je celoten nabor stolpcev v tabeli del trenutnega konteksta. Če imate več tabel, ki so povezane z relacijami in delate v vrtilni tabeli, ki je bila filtrirana z dodajanjem naslovov stolpcev in z razčlenjevalniki, kontekst vključuje sorodne tabele in filtre za podatke.
Kontekst je zmogljiv koncept, ki lahko oteži tudi odpravljanje težav s formulami. Priporočamo, da začnete s preprostimi formulami in relacijami, da vidite, kako deluje kontekst, in nato začnite preskušati preproste formule v vrtilnih tabelah. V tem razdelku je tudi nekaj primerov, kako formule uporabljajo različne vrste konteksta za dinamično vračanje rezultatov.
Primeri konteksta v formulah
-
Funkcija RELATED razširi kontekst trenutne vrstice, da vključi vrednosti v povezan stolpec. Tako lahko izvedete iskanja. Primer v tej temi prikazuje interakcijo filtriranja in konteksta vrstice.
-
S funkcijo FILTER lahko določite vrstice, ki jih želite vključiti v trenutni kontekst. Primeri v tej temi ponazarjajo tudi, kako vdelate filtre v druge funkcije, ki izvajajo združevanje.
-
Funkcija ALL nastavi kontekst v formuli. Uporabite ga lahko za preglasitev filtrov, ki so uporabljeni kot rezultat konteksta poizvedbe.
-
S funkcijo ALLEXCEPT lahko odstranite vse filtre, razen tistih, ki jih določite. Obe temi vključujeta primere, ki vas bodo vodili skozi ustvarjanje formul in razumevanje zapletenih kontekstov.
-
S funkcijama EARLIER in EARLIEST se lahko premikate med tabelami tako, da izvedete izračune, pri tem pa se sklicujete na vrednost notranje zanke. Če poznate koncept rekurzije ter notranje in zunanje zanke, boste cenili moč, ki jo nudita funkciji EARLIER in EARLIEST. Če teh konceptov še ne uporabljate, pozorno upoštevajte navodila v primeru, da boste videli, kako se notranji in zunanji konteksti uporabljajo v izračunih.
Referenčna integriteta
V tem razdelku je opisanih nekaj naprednih konceptov, povezanih z manjkajočimi vrednostmi Power Pivot tabelah, ki so povezane z relacijami. Ta razdelek vam bo morda uporaben, če imate delovne zvezke z več tabelami in zapletenimi formulami ter potrebujete pomoč pri razumevanju rezultatov.
Če ste nov koncept relacijskih podatkov, priporočamo, da najprej preberete uvodno temo Pregled relacij.
Referenčna integriteta in Power Pivot relacije
Power Pivot ni treba vsiliti referenčne integritete med dvema tabelama, da bi določili veljavno relacijo. Namesto tega je prazna vrstica ustvarjena na koncu »ena« vsake relacije »ena proti mnogo« in se uporablja za obravnavo vseh vrstic, ki se ne ujemajo s povezano tabelo. Deluje učinkovito kot zunanje združevanje SQL.
Če v vrtilnih tabelah združite podatke na eni strani relacije, so vsi neujemajoč se podatki na strani »mnogo« relacije združeni in vključeni v vsote s praznim naslovom vrstice. Prazen naslov je približno enakovreden »neznanem članu«.
Razumevanje neznanega člana
Koncept neznanega člana je verjetno znan, če ste delali z večdimenzijskimi sistemi zbirke podatkov, kot SQL Server Analysis Services. Če ste nov izraz, je v spodnjem primeru razloženo, kaj je neznani član in kako vpliva na izračune.
Denimo, da ustvarjate izračun, ki sešteje mesečno prodajo za vsako shrambo, vendar v stolpcu v tabeli »Prodaja« manjka vrednost za ime shrambe. Glede na to, da sta tabeli za Trgovino in Prodajo povezani z imenom trgovine, kaj bi pričakovali v formuli? Kako naj vrtilna tabela združi ali prikaže podatke o prodaji, ki niso povezani z obstoječo shrambo?
Ta težava je pogosta v podatkovnih skladiščih, kjer morajo biti velike tabele dejstev logične povezane s tabelami dimenzij, ki vsebujejo informacije o trgovinah, regijah in drugih atributih, ki se uporabljajo za razvrščanje v kategorije in izračun dejstev. Če želite odpraviti težavo, so vsa nova dejstva, ki niso povezana z obstoječo entiteto, začasno dodeljena neznanemu članu. Zato bodo nepovezana dejstva prikazana v vrtilni tabeli pod praznim naslovom.
Obravnava praznih vrednosti v primerjavi s prazno vrstico
Prazne vrednosti se razlikujejo od praznih vrstic, ki so dodane zaradi neznanega člana. Prazna vrednost je posebna vrednost, ki predstavlja ničelne vrednosti, prazne nize in druge manjkajoče vrednosti. Če želite več informacij o prazni vrednosti in drugih podatkovnih tipih JEZIKA DAX, glejte Podatkovni tipi v podatkovnih modelih.