Kontekst u DAX formulama

Kontekst omogućuje izvođenje dinamičke analize u kojoj se rezultati formule mogu promijeniti tako da odražavaju trenutni odabir redaka ili ćelija te sve povezane podatke. Razumijevanje konteksta i učinkovito korištenje konteksta vrlo su važne za stvaranje formula s visokim radnim rezultatima, dinamične analize i otklanjanje poteškoća u formulama.

U ovom se odjeljku definiraju različite vrste konteksta: kontekst retka, kontekst upita i kontekst filtra. Objašnjava kako se kontekst procjenjuje za formule u izračunatim stupcima i zaokretnim tablicama.

Zadnji dio ovog članka sadrži 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 koji se koriste u formulama. Kontekst omogućuje dinamičku analizu. Objašnjenje konteksta važno je za stvaranje i otklanjanje poteškoća s formulama.

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

Kontekst retka može se koristiti kao "trenutni redak". Ako ste stvorili izračunati stupac, kontekst retka sastoji se od vrijednosti u svakom pojedinačnom retku i vrijednosti u stupcima koji su povezani s trenutnim retkom. Postoje i neke funkcije (EARLIER i EARLIEST) koje od trenutnog retka dohadju do vrijednosti, a zatim koriste tu vrijednost tijekom izvođenja operacije iznad 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 su definirane izrazima filtra unutar formule.

Vrh stranice

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 retku.

Pretpostavimo, primjerice, da stvorite izračunati stupac, =[Vozarina] + [Porez],

, koji zbraje dva stupca iz iste tablice. Ova formula ponaša se kao formule u tablici Excel, koja automatski upućuje na vrijednosti iz istog retka. Imajte na umu da se tablice razlikuju od raspona: ne možete referencu na vrijednost iz retka ispred trenutnog retka koristiti notaciju raspona i ne možete referencu na 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 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 otpremljena. Porezna vrijednost određuje se pomoću vrijednosti za regiju u trenutnoj tablici, gledajući regiju u povezanoj tablici, a zatim iz povezane tablice dobiti poreznu stopu za tu regiju.

= [Vozarina] + RELATED('Regija'[Porezna stopa])

Ova formula jednostavno dobiva poreznu stopu za trenutnu regiju iz tablice Regija. Ne morate znati ni navesti ključ koji povezuje tablice.

Kontekst više redaka

Osim toga, DAX obuhvaća funkcije koje is iteriraju izračune iznad 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 želite proći kroz cijelu prodajnu tablicu, koja je puna transakcija koje obuhvaćaju više proizvoda i pronaći najveću količinu naručenu za svaki proizvod u bilo kojoj transakciji.

U Excel, za ovaj izračun potreban je niz posrednih sažetaka koji bi se trebao ponovno izgraditi ako se podaci promijene. Ako ste power user of Excel, možda ćete moći izraditi formule polja koje će obaviti posao. Osim toga, u relacijska baza podataka možete napisati ugniježđene pododjelake.

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;[ProdKey]=EARLIER([ProdKey])),Prodaja[Narudžba])

Detaljne upute za ovu formulu potražite u odjeljku EARLIER.

Ukratko, funkcija EARLIER pohranjuje kontekst retka iz operacije koja je prethodila trenutnoj operaciji. Funkcija se u svim vremenima pohranjuje u memoriju dva skupa konteksta: jedan skup konteksta predstavlja trenutni redak za unutarnju petlju formule, a drugi skup konteksta predstavlja trenutni redak vanjske petlje formule. DAX automatski objedinjuje vrijednosti između dviju petlji da biste mogli stvarati složene agregirane podatke.

Vrh stranice

Kontekst upita

Kontekst upita odnosi se na podskup podataka koji se implicitno dohvaćaju za formulu. Kada ispustite mjeru ili drugo polje vrijednosti u ćeliju u zaokretnoj tablici, Power Pivot će pregledati 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 podataka koji se dohvaća jest kontekst upita za svaku ćeliju.

Budući da se kontekst može promijeniti ovisno o mjestu na koje 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 jednostavnu formulu koja zbraje vrijednosti u stupcu Dobit tablice Prodaja:=SUM('Prodaja'[Dobit]).

Ako tu formulu koristite u izračunatom stupcu u tablici 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 imati dobit za sve regije, sve proizvode, sve godine i tako dalje.

No obično ne želite vidjeti isti rezultat stotinama puta, no 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 sveukupni 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 iznad, 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čenje i filtriranje utječu i na kontekst. Stoga se ista formula koja se koristi u zaokretnoj tablici procjenjuje u drugom kontekstu upita za svaku ćeliju.

Vrh stranice

Kontekst filtra

Kontekst filtra dodaje se kada navedete ograničenja filtra na skupu vrijednosti dopuštenih u stupcu ili tablici pomoću argumenata u formulu. Kontekst filtra primjenjuje se na druge kontekste, kao što su kontekst retka ili kontekst upita.

Zaokretna tablica, primjerice, izračunava svoje vrijednosti za svaku ćeliju na temelju naslova redaka i stupaca, kao što je opisano u prethodnoj sekciji u kontekstu upita. No u mjerama ili izračunatim stupcima koje dodate u zaokretnu tablicu možete odrediti izraze filtra da biste kontrolirali vrijednosti koje formula koristi. Možete i selektivno očistiti filtre na određenim stupcima.

Dodatne informacije o stvaranju filtara u formulama potražite u članku Funkcije filtra.

Primjer kako se filtri mogu očistiti da biste stvorili sveukupne zbrojove, pogledajte sve.

Primjere selektivnog jasne i primjene filtara unutar formula pogledajte u funkciji 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.

Vrh stranice

Određivanje konteksta u formulama

Kada stvorite formulu, Power Pivot za Excel provjere općenite sintakse, a zatim provjerava nazive stupaca i tablica koje navedite u odnosu na moguće stupce i tablice u trenutnom kontekstu. Ako Power Pivot ne možete pronaći stupce i tablice navedene u formuli, prikazuje 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 naslova stupaca i korištenjem rezača, kontekst obuhvaća povezane tablice i filtre na podacima.

Kontekst je moć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 počnite eksperimentirati s jednostavnim formulama u zaokretnim tablicama. U sljedećem su odjeljku navedeni 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 uvrstiti 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 određivanje redaka koje želite uvrstiti u trenutni kontekst. Primjeri u ovoj temi ilustriraju kako ugraditi filtre unutar drugih funkcija koje izvode agregacije.

  • Funkcija ALL postavlja kontekst unutar formule. Pomoću njega možete nadjačati filtre koji se primjenjuju kao rezultat konteksta upita.

  • Funkcija ALLEXCEPT omogućuje uklanjanje svih filtara osim onih koje navedete. Obje teme obuhvaćaju primjere koji vas prouče kroz stvaranje formula i razumijevanje složenih konteksta.

  • FunkcijeEARLIER i EARLIEST mogu vam dopustiti da se kroz tablice ponavljate izvođenjem izračuna, a referencirate vrijednost iz unutarnje petlje. Ako ste upoznati s konceptom rekurzije i unutrašnjim i vanjskim petljama, cijenit ćete snagu koju pružaju funkcijeEARLIER i EARLIEST. Ako ste novi u tim konceptima, pažljivo slijedite korake u primjeru da biste vidjeli kako se unutarnji i vanjski konteksti koriste u izračunima.

Vrh stranice

Referencijalni integritet

U ovom se odjeljku raspravlja o naprednim konceptima povezanima s vrijednostima koje nedostaju Power Pivot tablicama koje su povezane odnosima. Ova vam sekcija može biti korisna ako imate radne knjige s više tablica i složenih formula i želite pomoć u razumijevanju rezultata.

Ako niste upoznati s konceptima relacijskih podataka, preporučujemo da najprije pročitate uvodnu temu Pregled odnosa.

Referencijalni integritet i Power Pivot odnosi

Power Pivot ne 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 grupirati podatke s jedne strane odnosa, svi neusklađeni podaci s više strana odnosa grupiraju se zajedno i bit će uvršteni u ukupne zbrojove 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, npr. SQL Server Analysis Services. Ako vam je pojam 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 trgovine Store i Prodaja povezane nazivom trgovine, što biste očekivali da će se dogoditi u formuli? Kako grupirati zaokretnu tablicu ili prikazati prodajne podatke koji nisu povezani s postojećim spremištem?

Taj je problem čest u podatkovnim skladištima u kojima 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, nepoznatom članu privremeno se dodjeljuju nove činjenice koje nisu povezane s postojećim entitetom. Zato će se nepovezane činjenice pojaviti grupirane u zaokretnoj tablici ispod praznog naslova.

Obrada praznih vrijednosti u odnosu na prazan redak

Prazne vrijednosti razlikuju se od praznih redaka koji se dodaju da bi odgovarali nepoznatom članu. Prazna je vrijednost posebna vrijednost koja se koristi za predstavljanje null, praznih nizova i drugih vrijednosti koje nedostaju. Dodatne informacije o praznoj vrijednosti, kao i o drugim VRSTAMA PODATAKA ZA DAX potražite u članku Vrste podataka u podatkovnim modelima.

Vrh stranice

Potrebna vam je dodatna pomoć?

Proširite svoje vještine korištenja sustava Office
Istražite osposobljavanje

Jesu li vam ove informacije bile korisne?

×