Kontekst omogućuje izvođenje dinamičke analize u kojoj se rezultati formule mogu promijeniti da bi odražavali trenutni odabir retka ili ćelije te sve povezane podatke. Razumijevanje konteksta i učinkovito korištenje konteksta vrlo su važni za stvaranje formula s visokim performansama, dinamičkih analiza i za otklanjanje poteškoća u formulama.
U ovom se odjeljku definiraju različite vrste konteksta: kontekst retka, kontekst upita i kontekst filtra. Objašnjava se kako se kontekst izračunava za formule u izračunatim stupcima i u zaokretnim tablicama.
U zadnjem dijelu ovog članka navedene su veze na detaljne primjere koji ilustriraju kako se rezultati formula mijenjaju u skladu s kontekstom.
Objašnjenje konteksta
Na formule Power Pivot mogu utjecati filtri primijenjeni u zaokretnoj tablici, odnosi između tablica i filtri korišteni u formulama. Kontekst je ono što omogućuje izvođenje dinamičke analize. Razumijevanje konteksta važno je za sastavljanje i otklanjanje poteškoća s formulama.
Postoje različite vrste konteksta: kontekst retka, kontekst upita i kontekst filtra.
Kontekst retka može se govoriti kao o "trenutnom retku". Ako ste stvorili izračunati stupac, kontekst retka sastoji se od vrijednosti u svakom pojedinačnom retku i vrijednosti u stupcima povezanima s trenutnim retkom. Postoje i neke funkcije (EARLIER i EARLIEST) koje dohvaćaju vrijednost iz trenutnog retka, a zatim koriste tu vrijednost tijekom izvođenja operacije preko cijele tablice.
Kontekst upita odnosi se na podskup podataka koji je implicitno stvoren za svaku ćeliju u zaokretnoj tablici, ovisno o zaglavljima redaka i stupaca.
Kontekst filtra skup je vrijednosti dopuštenih u svakom stupcu na temelju ograničenja filtra primijenjenih na redak ili koje definiraju izrazi filtra unutar formule.
Kontekst retka
Ako stvorite formulu u izračunatom stupcu, kontekst retka za tu formulu obuhvaća vrijednosti iz svih stupaca u trenutnom retku. Ako je tablica povezana s drugom tablicom, sadržaj obuhvaća i sve vrijednosti iz te druge tablice povezane s trenutnim retkom.
Pretpostavimo, primjerice, da stvorite izračunati stupac =[Vozarina] + [Porez], koji zbraja dva stupca iz iste tablice. Ova formula ponaša se kao formule u tablici programa Excel, koje se automatski pozivaju na vrijednosti iz istog retka. Imajte na umu da se tablice razlikuju od raspona: ne možete referenciravati vrijednost iz retka prije trenutnog retka pomoću notacije raspona i ne možete se pozivati na proizvoljnu pojedinačnu vrijednost u tablici ili ćeliji. Uvijek morate raditi s tablicama i stupcima.
Kontekst retka automatski slijedi odnose između tablica da bi se odredilo koji su reci u povezanim tablicama povezani s trenutnim retkom.
Sljedeća formula, primjerice, koristi funkciju RELATED za dohvaćanje porezne vrijednosti iz povezane tablice na temelju regije u koju je narudžba isporučena. Porezna vrijednost određuje se pomoću vrijednosti za regiju u trenutnoj tablici, traženjem regije u povezanoj tablici, a zatim dobivanjem porezne stope za tu regiju iz povezane tablice.
= [Vozarina] + RELATED('Regija'[PoreznaZarat])
Ova formula jednostavno dohvaća poreznu stopu za trenutnu regiju iz tablice Regija. Ne morate znati ni navesti ključ koji povezuje tablice.
Kontekst višestrukog retka
Osim toga, DAX obuhvaća funkcije koje iteriraju izračune preko tablice. Te funkcije mogu imati više trenutnih redaka i trenutnih konteksta redaka. U programskim terminima možete stvoriti formule koje se ponavljaju preko unutarnje i vanjske petlje.
Pretpostavimo, primjerice, da radna knjiga sadrži tablicu Proizvodi i tablicu Prodaja. Možda ćete htjeti proći kroz cijelu prodajnu tablicu, koja je puna transakcija koje obuhvaćaju više proizvoda i pronaći najveću naručenu količinu za svaki proizvod u jednoj transakciji.
U programu Excel za ovaj izračun potreban je niz posrednih sažetaka, koji bi se trebao ponovno izgraditi ako se podaci pro mijenjaju. Ako ste power user of Excel, you might be able to build array formulas that would do the job. Možete i u relacijske baze podataka napisati ugniježđene pododaberke.
No uz DAX možete stvoriti jednu formulu koja vraća točnu vrijednost, a rezultati se automatski ažuriraju svaki put kada dodate podatke u tablice.
=MAXX(FILTER(Prodaja;[Ključprodaje]=EARLIER([KljučProd])),Prodaja[ZahtjevNarudžbe])
Detaljan vodič za ovu formulu potražite u odjeljku Funkcija EARLIER.
Ukratko, funkcija EARLIER pohranjuje kontekst retka iz operacije koja je prethodila trenutnoj operaciji. Funkcija u svakom trenutku pohranjuje dva skupa konteksta u memoriju: jedan skup konteksta predstavlja trenutni redak za unutarnju petlju formule, a drugi skup konteksta predstavlja trenutni redak za vanjsku petlju formule. DAX automatski unosi vrijednosti između dviju petlji da biste mogli stvarati složene agregate.
Kontekst upita
Kontekst upita odnosi se na podskup podataka koji je implicitno dohvaćen za formulu. Kada ispustite mjeru ili drugo polje vrijednosti u ćeliju u zaokretnoj tablici, modul Power Pivot pregledava zaglavlja redaka i stupaca, rezače i filtre izvješća da bi odredio kontekst. Zatim Power Pivot izračune potrebne za popunjavanje svake ćelije u zaokretnoj tablici. Skup dohvaćenih podataka kontekst je upita za svaku ćeliju.
Budući da se kontekst može promijeniti ovisno o tome gdje smjestite formulu, rezultati formule mijenjaju se i ovisno o tome koristite li formulu u zaokretnoj tablici s mnogo grupa i filtara ili u izračunatom stupcu bez filtara i minimalnog konteksta.
Pretpostavimo, primjerice, da stvorite ovu jednostavnu formulu koja zbrajanje vrijednosti u stupcu Dobit tablice Prodaja:
=SUM('Prodaja'[Dobit])
Ako ovu formulu koristite u izračunatom stupcu unutar tablice Prodaja, rezultati formule bit će isti za cijelu tablicu jer je kontekst upita za formulu uvijek cijeli skup podataka tablice Prodaja. Vaši će rezultati imati dobit za sve regije, sve proizvode, sve godine itd.
No obično ne želite vidjeti isti rezultat stotinama puta, ali umjesto toga želite dobiti dobit za određenu godinu, određenu državu ili regiju, određeni proizvod ili neku kombinaciju tih proizvoda, a zatim dobiti ukupni zbroj.
U zaokretnoj tablici kontekst je jednostavno promijeniti dodavanjem ili uklanjanjem zaglavlja stupaca i redaka te dodavanjem ili uklanjanjem rezača. Možete stvoriti formulu kao što je ona gore, u mjeri, a zatim je ispustiti u zaokretnu tablicu. Svaki put kada u zaokretnu tablicu dodate zaglavlja stupaca ili redaka, promijenite kontekst upita u kojem se mjera procjenjuje. Operacije sječnjanja i filtriranja utječu i na kontekst. Stoga se ista formula, koja se koristi u zaokretnoj tablici, vrednuju u drugom kontekstu upita za svaku ćeliju.
Kontekst filtra
Kontekst filtra dodaje se kada navedete ograničenja filtra za skup vrijednosti dopuštenih u stupcu ili tablici pomoću argumenata u formuli. Kontekst filtra primjenjuje se na vrh drugih konteksta, kao što su kontekst retka ili kontekst upita.
Zaokretna tablica, primjerice, izračunava vrijednosti za svaku ćeliju na temelju zaglavlja redaka i stupaca, kao što je opisano u prethodnoj sekciji konteksta upita. No u mjerama ili izračunatim stupcima koje dodajete u zaokretnu tablicu možete odrediti izraze filtra da biste kontrolirali vrijednosti koje formula koristi. Filtre možete i selektivno očistiti na određenim stupcima.
Dodatne informacije o stvaranju filtara u formulama potražite u članku Funkcije filtra.
Primjer načina na koji se filtri mogu očistiti radi stvaranja ukupnih zbrojeva potražite u članku Funkcija ALL.
Primjere selektivnog čišćenja i primjene filtara u formulama potražite u članku Funkcija ALLEXCEPT.
Stoga morate pregledati definiciju mjera ili formula koje se koriste u zaokretnoj tablici da biste bili svjesni konteksta filtra prilikom tumačenja rezultata formula.
Određivanje konteksta u formulama
Kada stvorite formulu, Power Pivot excel najprije traži općenitu sintaksu, a zatim provjerava nazive stupaca i tablica koje unesite u odnosu na moguće stupce i tablice u trenutnom kontekstu. Ako Power Pivot ne mogu pronaći stupce i tablice navedene u formuli, prikazat će se pogreška.
Kontekst se određuje na način opisan u prethodnim odjeljcima pomoću dostupnih tablica u radnoj knjizi, odnosa između tablica i primijenjenih filtara.
Ako ste, primjerice, upravo uvezli neke podatke u novu tablicu i niste primijenili filtre, cijeli skup stupaca u tablici dio je trenutnog konteksta. Ako imate više tablica koje su povezane odnosima i radite u zaokretnoj tablici filtriranoj dodavanjem zaglavlja stupaca i korištenjem rezača, kontekst obuhvaća povezane tablice i filtre na podacima.
Kontekst je snažan koncept koji može otežati otklanjanje poteškoća s formulama. Preporučujemo da počnete s jednostavnim formulama i odnosima da biste vidjeli kako kontekst funkcionira, a zatim eksperimentirajte s jednostavnim formulama u zaokretnim tablicama. U sljedećem se odjeljku navode i primjeri načina na koji formule koriste različite vrste konteksta za dinamično vraćanje rezultata.
Primjeri konteksta u formulama
-
Funkcija RELATED proširuje kontekst trenutnog retka radi uvrštavanje vrijednosti u povezani stupac. To vam omogućuje izvođenje pretraživanja. Primjer u ovoj temi ilustrira interakciju filtriranja i konteksta redaka.
-
Funkcija FILTER omogućuje vam da odredite retke koje želite uvrstiti u trenutni kontekst. Primjeri u ovoj temi ilustriraju kako ugraditi filtre unutar drugih funkcija koje izvode agregacija.
-
Funkcija ALL postavlja kontekst unutar formule. Pomoću njega možete nadjačati filtre primijenjene kao rezultat konteksta upita.
-
Funkcija ALLEXCEPT omogućuje uklanjanje svih filtara osim onih koje navedete. Obje teme obuhvaćaju primjere koji vas vodi kroz sastavljanje formula i razumijevanje složenih konteksta.
-
FunkcijeEARLIER i EARLIEST omogućuju vam ponavljanje tablica izvođenjem izračuna, a referenciranje vrijednosti iz unutarnje petlje. Ako ste upoznati s konceptom rekurzije i unutrašnjim i vanjskim petljama, cijenit ćete moć koju pružaju funkcijeEARLIER i EARLIEST. Ako ste novi u tim konceptima, pozorno slijedite korake u ovom primjeru da biste vidjeli kako se unutarnji i vanjski konteksti koriste u izračunima.
Referencijalni integritet
U ovom se odjeljku razmatraju napredni koncepti vezani uz vrijednosti koje nedostaju Power Pivot tablicama koje su povezane odnosima. Ta bi vam sekcija mogla biti korisna ako imate radne knjige s više tablica i složenih formula i ako vam je potrebna pomoć u razumijevanju rezultata.
Ako ste novi u relacijskim konceptima podataka, preporučujemo da najprije pročitate uvodnu temu, Pregled odnosa.
Referencijalni integritet i Power Pivot odnosi
Power Pivot zahtijeva nametanje referencijalnog integriteta između dviju tablica radi definiranja valjanog odnosa. Umjesto toga, na kraju svakog odnosa jedan-prema-više stvara se prazan redak i koristi se za rukovanje svim recima koji se ne podudaraju iz povezane tablice. Učinkovito se ponaša kao SQL vanjski spoj.
Ako u zaokretnim tablicama grupiranje podataka po jednoj strani odnosa, svi neupareni podaci na strani više odnosa grupiraju se zajedno i uvršt će se u ukupne zbrojeve s praznim naslovom retka. Prazan naslov otprilike je jednak "nepoznatom članu".
Razumijevanje nepoznatog člana
Koncept nepoznatog člana vjerojatno vam je poznat ako ste radili s višedimenzionalnim sustavima baze podataka, kao što su SQL Server Analysis Services. Ako vam je termin nov, u sljedećem se primjeru objašnjava što je nepoznati član i kako utječe na izračune.
Pretpostavimo da stvarate izračun koji zbraje mjesečnu prodaju za svako spremište, ali stupcu u tablici Prodaja nedostaje vrijednost za naziv trgovine. S obzirom na to da su tablice za Trgovinu i Prodaju povezane nazivom trgovine, što biste očekivali u formuli? Kako bi zaokretna tablica trebala grupirati ili prikazati iznose prodaje koji nisu povezani s postojećim spremištem?
Taj je problem uobičajen u podatkovnim skladištima, pri čemu velike tablice činjenica moraju biti logički povezane s tablicama dimenzija koje sadrže informacije o trgovinama, regijama i drugim atributima koji se koriste za kategorizaciju i izračun činjenica. Da biste riješili problem, svim novim činjenicama koje nisu povezane s postojećim entitetom privremeno se dodjeljuju nepoznatom članu. Zato će se nepovezane činjenice prikazati grupirane u zaokretnoj tablici pod praznim naslovom.
Liječenje praznih vrijednosti u odnosu na prazan redak
Prazne vrijednosti razlikuju se od praznih redaka koji se dodaju radi smještaja nepoznatog člana. Prazna je vrijednost posebna vrijednost koja se koristi za predstavljanje vrijednosti null, praznih nizova i drugih vrijednosti koje nedostaju. Dodatne informacije o praznoj vrijednosti i drugim DAX vrstama podataka potražite u članku Vrste podataka u podatkovnim modelima.