Kontekst omogoča izvajanje dinamične analize, v kateri se rezultati formule lahko spremenijo tako, da odražajo trenutno vrstico ali izbor celic in morebitne povezane podatke. Razumevanje konteksta in učinkovita uporaba konteksta sta zelo pomembna za ustvarjanje visoko učinkovitih formul, dinamičnih analiz in odpravljanje težav v formulah.
V tem razdelku so opredeljene različne vrste konteksta: kontekst vrstice, kontekst poizvedbe in kontekst filtra. Razloženo je, kako je kontekst ocenjen za formule v izračunanih stolpcih in vrtilnih tabelah.
V zadnjem delu članka so navedene povezave do podrobnih primerov, ki prikazujejo, kako se rezultati formul spreminjajo glede na kontekst.
Razumevanje konteksta
Na formule v dodatku Power Pivot lahko vplivajo filtri, uporabljeni v vrtilni tabeli, relacije med tabelami in filtri, ki se uporabljajo v formulah. Kontekst je tisto, kar omogoča izvajanje dinamične analize. Razumevanje konteksta je pomembno pri oblikovanju formul in odpravljanju težav z njimi.
Na voljo so različne vrste konteksta: kontekst vrstice, kontekst poizvedbe in kontekst filtra.
Kontekst vrstice si lahko predstavljate kot »trenutna vrstica«. Če ste ustvarili izračunani stolpec, je kontekst vrstice sestavljen iz vrednosti v vsaki posamezni vrstici in vrednosti v stolpcih, ki so povezani s trenutno vrstico. Obstajajo tudi nekatere funkcije (EARLIER in EARLIEST), ki pridobijo vrednost iz trenutne vrstice in nato uporabijo to vrednost med izvajanjem operacije nad celotno tabelo.
Kontekst poizvedbe se nanaša na podnabor podatkov, ki je implicitno ustvarjen za vsako celico v vrtilni tabeli, odvisno od glav vrstic in stolpcev.
Kontekst filtra je nabor vrednosti, ki so dovoljene v posameznem stolpcu in temeljijo na omejitvah filtra, uporabljenih v vrstici ali določenih 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.
Vzemimo za primer, da ustvarite izračunani stolpec =[Prevoz] + [Davek], ki sešteje dva stolpca iz iste tabele. Ta formula deluje kot formule v Excelovi tabeli, ki se samodejno sklicujejo na vrednosti iz iste vrstice. Ne pozabite, da se tabele razlikujejo od obsegov: z zapisom obsega se ne morete sklicevati na vrednost iz vrstice pred trenutno vrstico in ne morete se sklicevati na nobeno poljubno posamezno vrednost v tabeli ali celici. Vedno morate delati s tabelami in stolpci.
Kontekst vrstice samodejno sledi relacijam med tabelami in tako 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 glede na regijo, v katero je bilo naročilo poslano. Davčna vrednost je določena z uporabo vrednosti za regijo v trenutni tabeli, iskanjem regije v povezani tabeli in pridobivanjem davčne stopnje za to regijo iz povezane tabele.
= [Freight] + RELATED('Območje'[TaxRate])
Ta formula preprosto pridobi davčno stopnjo za trenutno regijo iz tabele »Regija«. Ni vam treba poznati ali določiti ključa, ki povezuje tabele.
Kontekst z več vrsticami
Poleg tega DAX vključuje funkcije, ki ponavljajo izračune v tabeli. Te funkcije imajo lahko več trenutnih vrstic in kontekstov vrstic. V programskem smislu lahko ustvarite formule, ki se ponavljajo prek notranje in zunanje zanke.
Recimo, da delovni zvezek vsebuje tabeli »Izdelki« in » Prodaja «. Morda boste želeli pregledati celotno tabelo prodaj, ki vključuje transakcije, ki vključujejo več izdelkov, in poiskati največjo količino, naročeno za vsak izdelek v posamezni transakciji.
V Excelu ta izračun zahteva niz vmesnih povzetkov, ki bi jih bilo treba obnoviti, če bi se podatki spremenili. Če ste zahteven uporabnik Excela, boste morda lahko ustvarili formule polja, ki bi ustrezale temu delu. V relacijski zbirki podatkov lahko napišete tudi ugnezdene podizbore.
S formulo DAX pa lahko ustvarite eno samo formulo, ki vrne pravilno vrednost, rezultati pa se samodejno posodobijo, vsakič ko dodate podatke v tabele.
=MAXX(FILTER(Prodaja,[ProdKljuč]=PREJ([ProdKljuč])),Prodaja[Količin naročila])
Če želite podroben pregled te formule, glejte funkcijo EARLIER
Funkcija EARLIER shrani kontekst vrstice iz postopka, ki je bil pred trenutnim postopkom. Funkcija v pomnilnik vedno shranjuje dva nabora konteksta: en nabor konteksta predstavlja trenutno vrstico za notranjo zanko formule, drugi nabor konteksta pa predstavlja trenutno vrstico za zunanjo zanko formule. DAX samodejno dodaja vrednosti med dvema zankama, tako da lahko ustvarite zapletene agregate.
Kontekst poizvedbe
Kontekst poizvedbe se nanaša na podnabor podatkov, ki so implicitno pridobljeni za formulo. Ko v celico vrtilne tabele spustite mero ali polje druge vrednosti, mehanizem Power Pivot pregleda glave vrstic in stolpcev, razčlenjevalnike in filtre poročila, da določi kontekst. PowerPivot nato naredi potrebne izračune za vnos celic vrtilne tabele. Nabor podatkov, ki jih pridobite, je kontekst poizvedbe za vsako celico.
Ker se kontekst lahko spremeni glede na to, kam postavite formulo, se spremenijo tudi rezultati formule glede na to, ali uporabljate formulo v vrtilni tabeli s številnimi združevanji in filtri ali v izračunanem stolpcu brez filtrov in z minimalnim kontekstom.
Vzemimo za primer, da ustvarite to preprosto formulo, ki sešteje vrednosti v stolpcu »Dobiček « v tabeli » Prodaja «:
=SUM('Prodaja'[Dobiček])
Če uporabite to formulo v izračunanem stolpcu v tabeli » Prodaja «, bodo rezultati formule enaki za celotno tabelo, ker je kontekst poizvedbe za formulo vedno celoten nabor podatkov v tabeli »Prodaja «. Vaši rezultati bodo zaznamovali dobiček za vse regije, vse izdelke, vsa leta itd.
Vendar pa običajno ne želite več stokrat videti istega rezultata, temveč želite dobiti dobiček za določeno leto, določeno državo ali regijo, določen izdelek ali katero od kombinacij 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 formuli, v meri, in jo nato spustite v vrtilno tabelo. Vsakič, ko dodate glave stolpcev ali vrstic v vrtilno tabelo, spremenite kontekst poizvedbe, v kateri je mera ovrednotena. Tudi operacije rezanja in filtriranja vplivajo na kontekst. Zato je ista formula, uporabljena v vrtilni tabeli, ovrednotena v drugačnem kontekstu poizvedbe za vsako celico.
Kontekst filtra
Kontekst filtra je dodan, ko določite omejitve filtra za nabor vrednosti, ki so dovoljene v stolpcu ali tabeli, tako da uporabite argumente v formuli. Kontekst filtra se uporablja nad drugimi konteksti, 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 o kontekstu poizvedbe. Vendar pa lahko znotraj mer ali izračunanih stolpcev, ki jih dodate v vrtilno tabelo, določite izraze filtrov za nadzor vrednosti, ki jih uporablja formula. Filtre lahko počistite tudi v določenih stolpcih.
Če želite več informacij o tem, kako ustvarite filtre v formulah, glejte funkcije filtra.
Primer, kako lahko počistite filtre za ustvarjanje skupnih vsot, si oglejte funkcijo ALL.
Če želite primere selektivnega čiščenja in uporabe filtrov v formulah, si oglejte funkcijo ALLEXPEK.
Zato morate pregledati definicijo mer ali formul, ki se uporabljajo v vrtilni tabeli, da boste pri interpretaciji rezultatov formul seznanjeni s kontekstom filtra.
Določanje konteksta v formulah
Ko ustvarite formulo, PowerPivot za Excel najprej preveri splošno sintakso, nato pa preveri imena stolpcev in tabel, ki jih navedete, glede na morebitne stolpce in tabele v trenutnem kontekstu. Če Power Pivot ne najde stolpcev in tabel, ki so navedene s formulo, se prikaže sporočilo o napaki.
Kontekst je določen, kot je opisano v prejšnjih razdelkih, z uporabo razpoložljivih tabel v delovnem zvezku, morebitnih relacij med tabelami in morebitnih filtrov, ki so bili uporabljeni.
Če ste na primer pravkar uvozili nekaj podatkov v novo tabelo in niste uporabili nobenega filtra, 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 glav stolpcev in uporabo razčlenjevalnikov, kontekst vključuje sorodne tabele in morebitne filtre za podatke.
Kontekst je vpliven 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, nato pa se preskušate s preprostimi formulami 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 povezanem stolpcu. To vam omogoča izvajanje iskanj. Primer v tej temi ponazarja interakcijo filtriranja in konteksta vrstice.
- S funkcijo FILTER lahko določite vrstice, ki jih želite vključiti v trenutni kontekst. Primeri v tej temi prikazujejo tudi, kako vdelati 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 tistega, ki ga določite. Obe temi vključujeta primere, ki vas bodo vodila skozi oblikovanje formul in razumevanje zapletenih kontekstov.
- S funkcijama EARLIER in EARLIEST se lahko krožno premikate po tabelah z izvajanjem izračunov, medtem ko se sklicujete na vrednost iz notranje zanke. Če poznate koncept rekurzije ter notranje in zunanje zanke, boste cenili moč, ki jo ponujata funkciji EARLIER in EARLIEST Če teh konceptov še ne poznate, pozorno sledite korakom v primeru, da vidite, kako sta notranji in zunanji kontekst uporabljena v izračunih.
Referenčna integriteta
V tem razdelku so opisani nekateri napredni koncepti, povezani z manjkajočimi vrednostmi v tabelah dodatka Power Pivot, ki so povezane z relacijami. Ta razdelek bo morda uporaben za vas, če imate delovne zvezke z več tabelami in zapletenimi formulami ter želite pomoč pri razumevanju rezultatov.
Če ste šele začeli uporabljati koncepte relacijskih podatkov, vam priporočamo, da najprej preberete uvodno temo »Pregled relacij«.
Referenčna integriteta in relacije dodatka Power Pivot
Power Pivot ne zahteva, da se referenčna integriteta vsiljuje med dvema tabelama, da bi določil veljavno relacijo. Namesto tega je ustvarjena prazna vrstica na koncu vsakega odnosa »ena proti mnogo«, ki se uporablja za obravnavo vseh neujemajočih se vrstic iz povezane tabele. Učinkovito deluje kot zunanje združevanje SQL.
Če v vrtilnih tabelah združite podatke po strani »ena« relacije, se vsi neujemajoči podatki na strani »mnogo« relacije združijo in bodo vključeni v skupno vsoto z glavo prazne vrstice. Prazen naslov je približno enakovreden pojmu »neznani član«.
Razumevanje neznanega člana
Koncept neznanega člana vam je verjetno znan, če ste delali z večdimenzionalnimi sistemi zbirk podatkov, kot je SQL Server Analysis Services. Če tega izraza še ne poznate, je v tem primeru razloženo, kaj je neznani član in kako vpliva na izračune.
Vzemimo za primer, da ustvarjate izračun, ki sešteje mesečno prodajo za vsako trgovino, vendar v stolpcu v tabeli » Prodaja « manjka vrednost za ime trgovine. 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 rezultate prodaje, ki niso povezani z obstoječo trgovino?
Ta težava se pogosto pojavlja v podatkovnih skladiščih, kjer morajo biti velike tabele podatkov logično povezane s tabelami dimenzij, ki vsebujejo informacije o trgovinah, regijah in druge atribute, ki se uporabljajo za razvrščanje in izračunavanje dejstev. Pri reševanju težave so vsa nova dejstva, ki niso povezana z obstoječo entiteto, začasno dodeljena neznanemu članu. Zato bodo nepovezana dejstva prikazana združena v vrtilni tabeli s praznim naslovom.
Obravnava praznih vrednosti v primerjavi s prazno vrstico
Prazne vrednosti se razlikujejo od praznih vrstic, ki so dodane, da se prilagodijo neznanemu članu. Prazna vrednost je posebna vrednost, ki se uporablja za predstavitev ničel, praznih nizov in drugih manjkajočih vrednosti. Če želite več informacij o prazni vrednosti in drugih podatkovnih tipih DAX, glejte Podatkovni tipi v podatkovnih modelih.