Kontekst vam omogućava da izvršite dinamičku analizu, pri kojoj rezultati formule mogu da se promene tako da odražavaju trenutni red ili izbor ćelije, kao i sve povezane podatke. Razumevanje konteksta i efikasno korišćenje konteksta veoma su važni za izradu formula sa visokim performansama, dinamičkih analizi i za rešavanje problema u formulama.
Ovaj odeljak definiše različite tipove konteksta: kontekst reda, kontekst upita i kontekst filtera. On objašnjava kako se procenjuje kontekst za formule u izračunatim kolonama i izvedenim tabelama.
Poslednji deo ovog članka pruža veze ka detaljnim primerima koji ilustruju kako se rezultati formula menjaju u skladu sa kontekstom.
Razumevanje konteksta
Na formule u Power Pivot mogu da utiču filteri primenjeni u izvedenoj tabeli, relacije između tabela i filteri koji se koriste u formulama. Kontekst je ono što omogućava izvršavanje dinamičke analize. Razumevanje konteksta je važno za pravljenje i rešavanje problema formula.
Postoje različiti tipovi konteksta: kontekst reda, kontekst upita i kontekst filtera.
Kontekst reda se može smatrati "trenutnim redom". Ako ste napravili izračunatu kolonu, kontekst reda se sastoji od vrednosti u svakom pojedinačnom redu i vrednostima u kolonama koje su povezane sa trenutnim redom. Postoje i neke funkcije (EARLIER i EARLIEST) koje dobijaju vrednost iz trenutnog reda, a zatim koriste tu vrednost prilikom izvršavanja operacije nad celom tabelom.
Kontekst upita se odnosi na podskup podataka koji je implicitni kreiran za svaku ćeliju u izvedenoj tabeli, u zavisnosti od zaglavlja redova i kolona.
Kontekst filtera je skup vrednosti koje su dozvoljene u svakoj koloni, na osnovu ograničenja filtera koja su primenjena na red ili koje definišu izrazi filtera u okviru formule.
Kontekst reda
Ako kreirate formulu u izračunatoj koloni, kontekst reda za tu formulu uključuje vrednosti iz svih kolona u trenutnom redu. Ako je tabela povezana sa drugom tabelom, sadržaj uključuje i sve vrednosti iz te druge tabele koje su povezane sa trenutnim redom.
Na primer, pretpostavimo da kreirate izračunatu kolonu =[Troškovi Prevoz] + [Porez], koja sabva dve kolone iz iste tabele. Ova formula se ponaša kao formule u Excel tabeli, koje automatski upućuju na vrednosti iz istog reda. Imajte na umu da se tabele razlikuju od opsega: ne možete da ukažete na vrednost iz reda pre trenutnog reda pomoću zapisivanja opsega i ne možete da ukažete na bilo koju proizvoljnu pojedinačnu vrednost u tabeli ili ćeliji. Uvek morate da radite sa tabelama i kolonama.
Kontekst reda automatski prati relacije između tabela da bi utvrdio koji redovi u povezanim tabelama su povezani sa trenutnim redom.
Na primer, sledeća formula koristi funkciju RELATED za dobavljanje poreske vrednosti iz povezane tabele, na osnovu regiona u koji je porudžbina isporučena. Poreska vrednost se određuje pomoću vrednosti za region u trenutnoj tabeli, tražeći region u povezanoj tabeli, a zatim dobijati poresku stopu za taj region iz srodne tabele.
= [Troškovi prevoza] + RELATED('Region'[Poreska Stopa])
Ova formula jednostavno dobija poresku stopu za trenutni region, iz tabele "Region". Ne morate da znate niti da navodite ključ koji povezuje tabele.
Kontekst za više redova
Pored toga, DAX uključuje funkcije koje ponavljaju izračunavanja preko tabele. Ove funkcije mogu da imaju više trenutnih redova i konteksta trenutnih redova. U terminima za programiranje možete da kreirate formule koje se ponavljaju preko unutrašnje i spoljne petlje.
Na primer, pretpostavimo da radna sveska sadrži tabelu "Proizvodi " i tabelu "Prodaja ". Možda ćete želeti da prođete kroz celu tabelu prodaje koja je puna transakcija koje uključuju više proizvoda i da pronađete najveću poručenu količinu za svaki proizvod u bilo kojoj transakciji.
U programu Excel ovo izračunavanje zahteva niz posrednih rezimea, koji bi trebalo ponovo da se izgnuju ako se podaci promene. Ako ste moćni korisnik programa Excel, možda ćete moći da napravite formule niza koje će obaviti posao. Druga mogućnost je da u relacionoj bazi podataka napišete ugnežđene podizbore.
Međutim, pomoću funkcije DAX možete da napravite jednu formulu koja vraća ispravnu vrednost, a rezultati se automatski ažuriraju svaki put kada dodate podatke u tabele.
=MAXX(FILTER(Prodaja,[Ključprodaje]=EARLIER([KljučProduke])),Prodaja[Koliki broj porudžbine])
Detaljno uputstvo za ovu formulu potražite u funkciji EARLIER.
Ukratko, funkcija EARLIER skladišti kontekst reda iz operacije koja je prethnjala trenutnu operaciju. Funkcija sve vreme skladišti dva skupa konteksta u memoriji: jedan skup konteksta predstavlja trenutni red za unutrašnju petlju formule, a drugi skup konteksta predstavlja trenutni red za spoljnu petlju formule. DAX automatski ubaciva vrednosti između dve petlje kako biste mogli da kreirate složene skupove.
Kontekst upita
Kontekst upita se odnosi na podskup podataka koji se implicitno preuzima za formulu. Kada otpustite meru ili drugo polje za vrednost u ćeliju u izvedenoj tabeli, mašina Power Pivot pregleda zaglavlja redova i kolona, module "Slicer" i filtere izveštaja da bi utvrdila kontekst. Zatim Power Pivot računa neophodna izračunavanja za popunjavanje svake ćelije u izvedenoj tabeli. Skup podataka koji se preuzima predstavlja kontekst upita za svaku ćeliju.
Pošto se kontekst može promeniti u zavisnosti od toga gde postavite formulu, rezultati formule se menjaju i u zavisnosti od toga da li formulu koristite u izvedenoj tabeli sa mnogo grupisanja i filtera ili u izračunatoj koloni bez filtera i minimalnog konteksta.
Na primer, pretpostavimo da kreirate ovu jednostavnu formulu koja sabira vrednosti u koloni "Profit " tabele "Prodaja ":
=SUM('Prodaja'[Profit])
Ako koristite ovu formulu u izračunatoj koloni u tabeli "Prodaja", rezultati za formulu će biti isti za celu tabelu, jer je kontekst upita za formulu uvek ceo skup podataka tabele "Prodaja". Rezultati će imati profit za sve regione, sve proizvode, sve godine i tako dalje.
Međutim, obično ne želite da vidite isti rezultat stotinama puta, već umesto toga želite da dobijete profit za određenu godinu, određenu zemlju ili region, određeni proizvod ili neku kombinaciju ovih, a zatim da dobijete sveukupnu vrednost.
U izvedenoj tabeli lako je promeniti kontekst dodavanjem ili uklanjanjem zaglavlja kolona i redova i dodavanjem ili uklanjanjem modula "Slicer". U meri možete da kreirate formulu kao što je ona iznad, a zatim da je otpustite u izvedenu tabelu. Svaki put kada dodate naslove kolona ili redova u izvedenu tabelu, menjate kontekst upita u kojem se procenjuje mera. Operacije sečenja i filtriranja takođe utiču na kontekst. Stoga se ista formula, koja se koristi u izvedenoj tabeli, procenjuje se u drugom kontekstu upita za svaku ćeliju.
Kontekst filtera
Kontekst filtera se dodaje kada navedete ograničenja filtera za skup vrednosti koji je dozvoljen u koloni ili tabeli pomoću argumenata u formuli. Kontekst filtera se primenjuje na druge kontekste, kao što su kontekst reda ili kontekst upita.
Na primer, izvedena tabela izračunava vrednosti za svaku ćeliju na osnovu naslova redova i kolona, kao što je opisano u prethodnom odeljku o kontekstu upita. Međutim, unutar mera ili izračunatih kolona koje dodajete u izvedenu tabelu možete da navedete izraze filtera za kontrolisanje vrednosti koje formula koristi. Takođe možete selektivno da obrišete filtere u određenim kolonama.
Dodatne informacije o tome kako da kreirate filtere u okviru formula potražite u članku Funkcije filtera.
Primer toga kako filteri mogu da se obriše za kreiranje sveukupnih vrednosti potražite u funkciji ALL.
Primere o tome kako da selektivno obrišete i primenite filtere u okviru formula, pogledajte funkciju ALLEXCEPT.
Stoga morate da pregledate definiciju mera ili formula koje se koriste u izvedenoj tabeli kako biste bili svesni konteksta filtera prilikom tumačenja rezultata formula.
Određivanje konteksta u formulama
Kada kreirate formulu, Power Pivot za Excel prvo proverava da li postoji opšta sintaksa, a zatim u trenutnom kontekstu proverava imena kolona i tabela koja ste obezbedili u odnosu na moguće kolone i tabele. Ako Power Pivot da pronađe kolone i tabele koje navodi formula, dobijate grešku.
Kontekst se određuje kao što je opisano u prethodnom odeljku, korišćenjem dostupnih tabela u radnoj svesci, relacija između tabela i filtera koji su primenjeni.
Na primer, ako ste upravo uvezli neke podatke u novu tabelu i niste primenili filtere, ceo skup kolona u tabeli je deo trenutnog konteksta. Ako imate više tabela koje su povezane relacijama i radite u izvedenoj tabeli koja je filtrirana dodavanjem naslova kolona i modulima "Slicer", kontekst uključuje povezane tabele i sve filtere za podatke.
Kontekst je moćan koncept koji takođe može otežati rešavanje problema sa formulama. Preporučujemo da počnete sa jednostavnim formulama i relacijama da biste videli kako kontekst funkcioniše, a zatim da počnete da eksperimentišete sa jednostavnim formulama u izvedenim tabelama. Sledeći odeljak pruža i neke primere načina na koji formule koriste različite tipove konteksta da bi dinamički dale rezultate.
Primeri konteksta u formulama
-
Funkcija RELATED širi kontekst trenutnog reda kako bi uključila vrednosti u povezanu kolonu. To vam omogućava da izvršite pretraživanja. Primer u ovoj temi ilustruje interakciju filtriranja i konteksta reda.
-
Funkcija FILTER vam omogućava da navedete redove koje treba uključiti u trenutni kontekst. Primeri u ovoj temi takođe ilustruju kako da ugradite filtere unutar drugih funkcija koje izvršavaju agregatne funkcije.
-
Funkcija ALL postavlja kontekst u okviru formule. Možete da ga koristite da biste zamenili filtere koji su primenjeni kao rezultat konteksta upita.
-
Funkcija ALLEXCEPT vam omogućava da uklonite sve filtere osim jednog koji navedete. Obe teme uključuju primere koji vas vodi kroz izradu formula i razumevanje složenih konteksta.
-
Funkcije EARLIER i EARLIEST omogućavaju vam da se petljate kroz tabele izvršavanjem izračunavanja, a da pritisnete vrednost iz unutrašnje petlje. Ako ste upoznati sa konceptom rekurzije i unutrašnjim i spoljnim petlјama, cenićete moć koju pružaju funkcije EARLIER i EARLIEST. Ako niste ranije koristili ove koncepte, trebalo bi da pažljivo pratite korake u primeru da biste videli kako se unutrašnji i spoljni konteksti koriste u izračunavanjima.
Referencijalni integritet
Ovaj odeljak govori o nekim naprednim konceptima povezanim sa vrednostima koje nedostaju Power Pivot tabelama koje su povezane relacijama. Ovaj odeljak može biti koristan ako imate radne sveske sa više tabela i složenih formula i želite pomoć u razumevanju rezultata.
Ako prvi put koristite koncepte relacija podataka, preporučujemo da prvo pročitate uvodnu temu, Pregled relacija.
Referencijalni integritet i Power Pivot relacije
Power Pivot zahteva da referencijalni integritet bude nametnut između dve tabele da bi se definisala važeća relacija. Umesto toga, kreira se prazan red na kraju svake relacije jedan-prema-više i koristi se za rukovanje svim redovima koji se ne podudaraju iz srodne tabele. On se efikasno ponaša kao SQL spoljni spoj.
Ako u izvedenim tabelama grupišete podatke sa jedne strane relacije, svi podaci bez podudaranja na strani "više" relacije grupišu se zajedno i biće uključeni u ukupne vrednosti sa praznim naslovom reda. Prazan naslov je otprilike jednak "nepoznatom članu".
Razumevanje nepoznatog člana
Koncept nepoznatog člana vam je verovatno poznat ako ste radili sa višedimenzionalnim sistemima baza podataka, kao što je SQL Server Analysis Services. Ako vam je termin nov, sledeći primer objašnjava šta je nepoznati član i kako utiče na izračunavanja.
Pretpostavimo da kreirate izračunavanje koje sabira mesečnu prodaju za svaku prodavnicu, ali koloni u tabeli "Prodaja" nedostaje vrednost za ime skladišta. S okviru toga da su tabele za prodavnicui prodaju povezane imenom prodavnice, šta biste očekivali da se dogodi u formuli? Kako bi trebalo da grupa izvedene tabele ili prikaže podatke o prodaji koji nisu povezani sa postojećim skladištem?
Ovaj problem je uobičajen u skladištima podataka, gde velike tabele podataka činjenica moraju logično da budu povezane sa tabelama dimenzija koje sadrže informacije o skladištima, regionima i drugim atributima koji se koriste za kategorizaciju i izračunavanje činjenica. Da biste rešili problem, sve nove činjenice koje nisu povezane sa postojećim entitetom privremeno se dodeljuju nepoznatom članu. Zbog toga će nepovezane činjenice izgledati grupisane u izvedenoj tabeli ispod praznog naslova.
Tretman praznih vrednosti naspram praznog reda
Prazne vrednosti se razlikuju od praznih redova koji su dodati da bi se prilagodili nepoznatom članu. Prazna vrednost je posebna vrednost koja se koristi za predstavljanje polja bez vrednosti, praznih niski i drugih vrednosti koje nedostaju. Više informacija o praznoj vrednosti, kao i drugim DAX tipovima podataka potražite u članku Tipovi podataka u modelima podataka.