Kontekst u DAX formulama

Primjenjuje se na
Excel za Microsoft 365 Excel 2024 Excel 2021 Excel 2019 Excel 2016

Kontekst omogućuje dinamičku analizu u kojoj se rezultati formule mogu mijenjati 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 visokih performansi, 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 procjenjuje za formule u izračunatim stupcima i u zaokretnim tablicama.

U posljednjem dijelu članka navedene su veze na detaljne primjere koji pokazuju kako se rezultati formula mijenjaju u skladu s kontekstom.

Razumijevanje konteksta

Na formule u dodatku Power Pivot mogu utjecati filtri primijenjeni u zaokretnim tablicama, odnosi među tablicama i filtri koji se koriste u formulama. Kontekst je ono što omogućuje dinamičku analizu. Razumijevanje konteksta važno je za stvaranje formula i otklanjanje poteškoća s njima.

Postoje različite vrste konteksta: kontekst retka, kontekst upita i kontekst filtra.

Kontekst retka može se smatrati "trenutnim retkom". Ako ste stvorili izračunati stupac, kontekst retka sastoji se od vrijednosti u svakom pojedinačnom retku i vrijednosti u stupcima koje su povezane s trenutnim retkom. Postoje i neke funkcije (EARLIER i EARLIEST) koje dohvaćaju vrijednost iz trenutnog retka i zatim koriste tu vrijednost prilikom izvođenja operacije na cijeloj tablici.

Kontekst upita odnosi se na podskup podataka koji se implicitno stvara za svaku ćeliju u zaokretnoj tablici, ovisno o zaglavljima redaka i stupaca.

Kontekst filtra skup je vrijednosti dopuštenih u svakom stupcu, a temelji se na ograničenjima filtra primijenjenim na redak ili definiranima izrazima filtra u formuli.

Vrh stranice

Kontekst retka

Ako u izračunatom stupcu stvorite formulu, 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 koje su povezane s trenutnom retkom.

Na primjer, pretpostavimo da stvarate izračunati stupac =[Vozarina] + [Porez] koji zbraja dva stupca iz iste tablice. Ta se formula ponaša slično 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 se referencirati na vrijednost iz retka prije trenutnog retka pomoću notacije raspona i ne možete referencirati proizvoljnu pojedinačnu vrijednost u tablici ili ćeliji. Uvijek morate raditi s tablicama i stupcima.

Kontekst retka automatski prati odnose između tablica da bi se utvrdilo koji su reci u povezanim tablicama povezani s trenutačnim retkom.

U sljedećoj formuli, primjerice, funkcija RELATED dohvaća vrijednost poreza iz povezane tablice na temelju regije u koju je narudžba isporučena. Vrijednost poreza određuje se korištenjem vrijednosti za regiju u trenutnoj tablici, traženjem regije u povezanoj tablici i dohvaćanjem porezne stope za tu regiju iz povezane tablice.

= [Vozarina] + RELATED('Regija'[PoreznaStopa])

Ta formula jednostavno dohvaća poreznu stopu za trenutnu regiju iz tablice Regija. Ne morate znati ni navesti ključ koji povezuje tablice.

Kontekst s više redaka

Osim toga, DAX sadrži funkcije kojima se izračuni ponavljaju u odnosu na tablicu. Ove funkcije mogu imati više trenutnih redaka i konteksta trenutnih redaka. U terminima programiranja možete stvarati formule koje se ponavljaju preko unutarnje i vanjske petlje.

Pretpostavimo, primjerice, da radna knjiga sadrži tablice Proizvodi i Prodaja . Možete proći kroz cijelu tablicu prodaje, koja je puna transakcija koje obuhvaćaju više proizvoda, i pronaći najveću količinu naručenu za svaki proizvod u pojedinačnoj transakciji.

Za taj izračun u programu Excel potreban je niz prijelaznih sažetaka, koji bi se morali ponovno sastaviti ako se podaci promijene. Ako ste napredni korisnik programa Excel, možda ćete moći stvoriti formule polja koje će vam to napraviti. Umjesto toga, u relacijskoj bazi podataka možete upisati ugniježđene pododabire.

Uz DAX pak možete stvoriti jednu formulu koja vraća točnu vrijednost, a rezultati se automatski ažuriraju svaki put kad dodate podatke u tablice.

=MAXX(FILTER(Sales,[ProdKey]=EARLIER ([ProdKey])),Sales[OrderQty])

Detaljni vodič po formuli potražite u funkciji STARe.

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 uvlači vrijednosti između dviju petlji da biste mogli stvarati složene agregate.

Vrh stranice

Kontekst upita

Kontekst upita odnosi se na podskup podataka koji se implicitno dohvaćaju za formulu. Kada polje mjere ili druge vrijednosti ispustite u ćeliju zaokretne tablice, modul Power Pivot ispituje zaglavlja redaka i stupaca, rezače i filtre izvješća radi određivanja konteksta. Power Pivot zatim obavlja potrebne izračune za popunjavanje svake ćelije u zaokretnoj tablici. Skup podataka koji se dohvaća kontekst je upita za svaku ćeliju.

Kako se kontekst može promijeniti ovisno o tome gdje ste postavili formulu, rezultati formule također se mijenjaju ovisno o tome koristite li formulu u zaokretnoj tablici s mnogo grupiranja i filtara ili u izračunatom stupcu bez filtara i s minimalnom kontekstom.

Pretpostavimo, na primjer, da ste stvorili ovu jednostavnu formulu koja zbraja vrijednosti u stupcu Dobit u tablici Prodaja :

=SUM('Prodaja'[Dobit])

Ako tu formulu koristite u izračunatom stupcu unutar tablice Prodaja , rezultati formule bit će jednaki za cijelu tablicu jer je kontekst upita za formulu uvijek cijeli skup podataka tablice Prodaja . Vaši će rezultati donijeti dobit za sve regije, sve proizvode, sve godine itd.

No, obično ne želite vidjeti isti rezultat stotine puta, nego želite dobiti dobit za određenu godinu, određenu državu ili regiju, određeni proizvod ili neku njihovu kombinaciju, a zatim dobiti ukupni zbroj.

U zaokretnoj tablici kontekst je jednostavno promijeniti dodavanjem ili uklanjanjem zaglavlja stupaca i redaka ili dodavanjem ili uklanjanjem rezača. Možete stvoriti formulu poput ove gore u mjeri, a zatim je ispustiti u zaokretnu tablicu. Svaki put kada u zaokretnu tablicu dodate naslove stupaca ili redaka, mijenjate kontekst upita u kojem se mjera procjenjuje. Operacije rezanja i filtriranja također utječu na kontekst. Zbog toga se ista formula, koja se koristi u zaokretnoj tablici, procjenjuje u različitom kontekstu upita za svaku ćeliju.

Vrh stranice

Kontekst filtra

Kontekst filtra dodaje se kada pomoću argumenata u formuli odredite ograničenja filtra za skup vrijednosti dopuštenih u stupcu ili tablici. Kontekst filtra primjenjuje se povrh drugih konteksta, kao što je 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 prethodnom odjeljku o kontekstu upita. No unutar mjera ili izračunatih stupaca koje dodate u zaokretnu tablicu možete navesti izraze filtra koji će kontrolirati vrijednosti koje formula koristi. Možete i selektivno očistiti filtre na određenim stupcima.

Dodatne informacije o stvaranju filtara unutar formula potražite u funkcijama filtra.

Primjer čišćenja filtara radi stvaranja sveukupnih zbrojeva potražite u funkciji ALL.

Primjere selektivnog čišćenja i primjene filtara u formulama potražite u funkciji ALLEXCÉ.

Stoga morate pregledati definiciju mjera ili formula koje se koriste u zaokretnoj tablici da biste prilikom tumačenja rezultata formula bili svjesni konteksta filtra.

Vrh stranice

Određivanje konteksta u formulama

Prilikom stvaranja formule Power Pivot za Excel najprije provjerava opću sintaksu, a zatim uspoređuje nazive stupaca i tablica koje navedete u odnosu na moguće stupce i tablice u trenutnom kontekstu. Ako Power Pivot ne može 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 tablica dostupnih u radnoj knjizi, odnosa između tablica i svih primijenjenih filtara.

Ako ste, primjerice, upravo uvezli neke podatke u novu tablicu i niste primijenili filtre, cijeli je skup stupaca u tablici dio trenutnog konteksta. Ako imate više tablica povezanih odnosima, a radite u zaokretnoj tablici filtriranoj dodavanjem zaglavlja stupaca i korištenjem rezača, kontekst obuhvaća povezane tablice i sve filtre na podacima.

Kontekst je snažan koncept koji može otežati i otklanjanje poteškoća s formulama. Preporučujemo da započnete s jednostavnim formulama i odnosima da biste vidjeli kako funkcionira kontekst, a zatim počnete eksperimentirati s jednostavnim formulama u zaokretnim tablicama. U sljedećem se odjeljku navode i primjeri dinamičnog vraćanja rezultata pomoću različitih vrsta konteksta.

Primjeri konteksta u formulama

  • Funkcija RELATED proširuje kontekst trenutnog retka radi uvrštavanja vrijednosti povezanog stupca. To vam omogućuje izvršavanje pretraživanja. Primjer u ovoj temi prikazuje interakciju filtriranja i konteksta retka.
  • Funkcija FILTER omogućuje određivanje redaka koje želite uvrstiti u trenutačni kontekst. Primjeri u ovoj temi pokazuju i kako ugrađivati filtre u druge funkcije koje izvode agregacije.
  • Funkcija ALL postavlja kontekst unutar formule. Možete ga koristiti da biste nadjačali filtre koji se primjenjuju kao rezultat konteksta upita.
  • Funkcija ALLEXCEPT omogućuje uklanjanje svih filtara osim jednog koji navedete. Obje teme obuhvaćaju primjere koji će vas provesti kroz izradu formula i razumijevanje složenih konteksta.
  • Funkcije EARLIER i EARLIEST omogućuju vam kretanje kroz tablice izvođenjem izračuna uz pozivanje na vrijednost iz unutarnje petlje. Ako ste upoznati s konceptom rekurzije te s unutarnjim i vanjskim petljama, cijenit ćete snagu koju pružaju funkcije EARLIER i FIRST. Ako vam je rad s tim konceptima nepoznat, pažljivo slijedite korake u primjeru da biste vidjeli kako se unutarnji i vanjski kontekst koriste u izračunima.

Vrh stranice

Referencijalna cjelovitost

U ovom se odjeljku opisuju napredni koncepti vezani uz nedostatak vrijednosti u tablicama dodatka Power Pivot povezanima odnosima. Ovaj odjeljak može vam biti koristan ako imate radne knjige s više tablica i složenim formulama te vam je potrebna pomoć za razumijevanje rezultata.

Ako vam je koncept relacijskih podataka nepoznat, preporučujemo da najprije pročitate uvodnu temu, Pregled odnosa.

Referencijalna cjelovitost i odnosi u dodatku Power Pivot

Da bi se definirao valjan odnos, u dodatku Power Pivot ne morate nametati referencijalni integritet između dviju tablica. Umjesto toga, na kraju svakog odnosa jedan-prema-više stvara se prazan redak koji se koristi za rukovanje svim nepodudarnim recima u povezanoj tablici. On se učinkovito ponaša kao vanjski spoj SQL-a.

Ako u zaokretnim tablicama podatke grupirate prema strani odnosa s jednim sudionikom, svi neupareni podaci na strani odnosa s više sudionika grupiraju se zajedno i uvrštavaju se u ukupne zbrojeve sa zaglavljem praznog retka. Prazan naslov otprilike odgovara pojmu "nepoznati član".

Razumijevanje nepoznatog člana

Koncept nepoznatog člana vjerojatno vam je poznat ako ste radili s višedimenzionalnim sustavima baza podataka, kao što je SQL Server Analysis Services. Ako vam je taj izraz nov, u sljedećem primjeru objašnjava se nepoznati član i kako utječe na izračune.

Pretpostavimo da stvarate izračun koji zbraja mjesečnu prodaju za svaku trgovinu, ali u stupcu u tablici Prodaja nedostaje vrijednost za naziv trgovine. S obzirom na to da su tablice za trgovinu Store i Prodaja povezane nazivom trgovine, što biste očekivali u formuli? Kako bi zaokretna tablica trebala grupirati ili prikazivati rezultate prodaje koji nisu povezani s postojećom trgovinom?

Taj je problem čest u skladištima podataka gdje velike tablice činjeničnih podataka moraju biti logički povezane s tablicama dimenzija koje sadrže informacije o spremištima, regijama i drugim atributima koji se koriste za kategorizaciju i izračun činjenica. Da bi se riješio problem, sve nove činjenice koje nisu povezane s postojećim entitetom privremeno se dodjeljuju nepoznatom članu. Zbog toga se nepovezane činjenice pojavljuju grupirane u zaokretnoj tablici pod praznim naslovom.

Usporedba praznih vrijednosti i praznog retka

Prazne vrijednosti razlikuju se od praznih redaka koji se dodaju da bi se smjestio nepoznati član. Prazna vrijednost posebna je vrijednost koja se koristi za predstavljanje vrijednosti null, praznih nizova i drugih vrijednosti koje nedostaju. Dodatne informacije o praznoj vrijednosti i drugim vrstama DAX podataka potražite u članku Vrste podataka u podatkovnim modelima.

Vrh stranice