Izrazi za analizu podataka (DAX) u početku zvuči pomalo zastrašujuće, ali ne dozvolite da vas ime zavara. DAX osnove su zaista prilično lake za razumevanje. Prvo - DAX NIJE programski jezik. DAX je jezik formula. DAX možete da koristite za definisanje prilagođenih izračunavanja za izračunate kolone i mere (poznata i kao izračunata polja). DAX obuhvata neke od funkcija koje se koriste u Excel formulama, kao i dodatne funkcije dizajnirane za rad sa relacionim podacima i izvršavanje dinamičkog agregiranja.
Razumevanje DAX formula
DAX formule su veoma slične Excel formulama. Da biste ga kreirali, otkucajte znak jednakosti iza kojeg sledi ime funkcije ili izraz i sve neophodne vrednosti ili argumenti. Kao i Excel, DAX pruža veliki broj funkcija koje možete koristiti za rad sa niskama, izračunavanja pomoću datuma i vremena ili kreiranje uslovnih vrednosti.
Međutim, DAX formule se razlikuju na sledeće važne načine:
- Ako želite da prilagodite izračunavanja na osnovu redova po redova, DAX uključuje funkcije koje vam omogućavaju da koristite trenutnu vrednost reda ili srodnu vrednost kako biste izvršili izračunavanja koja se razlikuju u zavisnosti od konteksta.
- DAX obuhvata tip funkcije koja vraća tabelu kao rezultat, a ne jednu vrednost. Ove funkcije mogu da se koriste za obezbeđivanje unosa za druge funkcije.
- Funkcije vremenske inteligencijeu DAX jeziku omogućavaju izračunavanja pomoću opsega datuma i porede rezultate u paralelnim periodima.
Gde se koriste DAX formule
U programskom dodatku Power Pivot možete da kreirate formule u izračunatim kolonama ili izračunatim poljima.
Izračunate kolone
Izračunata kolona je kolona koju dodajete u postojeću Power Pivot tabelu. Umesto da lepite ili uvozite vrednosti u kolonu, pravite DAX formulu koja definiše vrednosti u koloni. Ako uključite Power Pivot tabelu u izvedenu tabelu (ili izvedeni grafikon), izračunata kolona može da se koristi kao i bilo koja druga kolona podataka.
Formule u izračunatim kolonama veoma su slične formulama koje pravite u programu Excel. Za razliku od programa Excel, ipak ne možete da kreirate drugačiju formulu za različite redove u tabeli; umesto toga, DAX formula se automatski primenjuje na celu kolonu.
Kada kolona sadrži formulu, vrednost se računa za svaki red. Rezultati se izračunavaju za kolonu čim napravite formulu. Vrednosti kolone se ponovo izračunavaju samo ako se osnovni podaci osvežavaju ili ako se koristi ručno ponovno izračunavanje.
Možete da napravite izračunate kolone zasnovane na merama i drugim izračunatim kolonama. Međutim, izbegavajte da koristite isto ime za izračunatu kolonu i meru jer to može dovesti do zbunjujućih rezultata. Kad upućujete na kolonu, najbolje je da koristite potpuno kvalifikovanu referencu kolone kako ne biste slučajno pozvali meru.
Detaljnije informacije potražite u članku "Izračunate kolone u programskom dodatku Power Pivot".
Aktuelne mere
Mera je formula koja je napravljena posebno za korišćenje u izvedenoj tabeli (ili izvedenom grafikonu) koja koristi Power Pivot podatke. Mere mogu biti zasnovane na standardnim agregatnim funkcijama, kao što su COUNT ili SUM, odnosno možete da definišete sopstvenu formulu pomoću jezika DAX. Mera se koristi u oblasti vrednosti izvedene tabele. Ako želite da postavite izračunate rezultate u drugu oblast izvedene tabele, umesto toga koristite izračunatu kolonu.
Kada definišete formulu za eksplicitnu meru, ništa se ne dešava dok ne dodate meru u izvedenu tabelu. Kada dodate meru, formula se procenjuje za svaku ćeliju u oblasti vrednosti u izvedenoj tabeli. Pošto se rezultat pravi za svaku kombinaciju zaglavlja reda i kolone, rezultat za meru može biti različit u svakoj ćeliji.
Definicija mere koju napravite čuva se sa tabelom izvornih podataka. Pojavljuje se na listi polja izvedene tabele i dostupna je svim korisnicima radne sveske.
Detaljnije informacije potražite u članku "Mere" u programskom dodatku Power Pivot.
Kreiranje formula pomoću polja za formulu
Power Pivot, poput programa Excel, obezbeđuje polje za formulu za lakše kreiranje i uređivanje formula i funkcionalnost automatskog dovršavanja radi smanjivanja grešaka u kucanju i sintaksi.
Da biste uneli ime tabele Počnite da kucate ime tabele. Automatsko dovršavanje formula pruža padajuću listu koja sadrži važeća imena koja počinju tim slovima.
Da biste uneli ime kolone Otkucajte zagradu i odaberite kolonu sa liste kolona u trenutnoj tabeli. Za kolonu iz druge tabele počnite da kucate prva slova imena tabele, a zatim odaberite kolonu sa padajuće liste za automatsko dovršavanje.
Više detalja i uputstva za izradu formula potražite u članku "Pravljenje formula za izračunavanja u programskom dodatku Power Pivot".
Saveti za korišćenje automatskog dovršavanja
Možete da koristite automatsko dovršavanje formula usred postojeće formule sa ugnežđenim funkcijama. Tekst neposredno pre mesta umetanja koristi se za prikaz vrednosti u padajućoj listi, a sav tekst posle mesta umetanja ostaje nepromenjen.
Definisana imena koja kreirate za konstante ne prikazuju se u padajućoj listi automatskog dovršavanja, ali i dalje možete da ih otkucate.
Power Pivot ne dodaje zatvorene zagrade funkcija niti se zagrade automatski podudaraju. Trebalo bi da se uverite da je svaka funkcija sintaksički ispravna ili ne možete da sačuvate ili koristite formulu.
Korišćenje više funkcija u formuli
Funkcije možete da ugnezdite, što znači da rezultate iz jedne funkcije koristite kao argument druge funkcije. U izračunate kolone možete da ugnezdite do 64 nivoa funkcija. Međutim, ugnežđivanje može da oteža kreiranje formula ili rešavanje problema sa njima.
Mnoge DAX funkcije su dizajnirane tako da se koriste samo kao ugnežđene funkcije. Ove funkcije daju tabelu koja ne može da se direktno sačuva; Trebalo bi da se obezbedi kao ulaz za funkciju tabele. Na primer, funkcije SUMX, AVERAGEX i MINX zahtevaju tabelu kao prvi argument.
Napomena
U okviru mera postoje neka ograničenja ugnežđivanja funkcija kako bi se obezbedilo da na performanse ne utiču številna izračunavanja koja zahtevaju zavisnosti između kolona.
Poređenje DAX i Excel funkcija
Biblioteka DAX funkcija zasnovana je na biblioteci funkcija programa Excel, ali biblioteke imaju mnogo razlika. Ovaj odeljak rezimira razlike i sličnosti između Excel funkcija i DAX funkcija.
- Veliki broj DAX funkcija ima isti naziv i isto opšte ponašanje kao i Excel funkcije, ali su izmenjene da primaju različite tipove unosa i u nekim slučajevima mogu da vrate drugačiji tip podataka. Obično ne možete da koristite DAX funkcije u Excel formuli ili Excel formule u programskom dodatku Power Pivot bez izmene.
- DAX funkcije nikad ne uzimaju referencu ćelije ili opsega kao referencu, već umesto toga DAX funkcije uzimaju kolonu ili tabelu kao referencu.
- DAX funkcije datuma i vremena daju tip podataka datum/vreme. Nasuprot tome, Excel funkcije za datum i vreme daju ceo broj koji predstavlja datum kao redni broj.
- Mnoge nove DAX funkcije vraćaju tabelu vrednosti ili prave izračunavanja na osnovu tabele vrednosti kao unos. Nasuprot tome, Excel nema funkcije koje vraćaju tabelu, ali neke funkcije mogu da rade sa nizovima. Mogućnost lakog upućivanja na cele tabele i kolone predstavlja novu funkciju u programskom dodatku Power Pivot.
- DAX obezbeđuje nove funkcije za pretraživanje slične funkcijama za pretraživanje niza i vektora u programu Excel. Međutim, DAX funkcije zahtevaju da se uspostavi relacija između tabela.
- Očekuje se da podaci u koloni uvek budu istog tipa podataka. Ako podaci nisu istog tipa, DAX menja celu kolonu u tip podataka koji najbolje odgovara svim vrednostima.
DAX tipovi podataka
U Power Pivot model podataka možete da uvezete podatke iz mnogo različitih izvora podataka koji mogu podržavati različite tipove podataka. Kada uvezete ili učitate podatke, a zatim ih koristite u izračunavanjima ili izvedenim tabelama, podaci se konvertuju u jedan od tipova podataka programskog dodatka Power Pivot. Listu tipova podataka potražite u članku Tipovi podataka u modelima podataka.
Tip podataka tabele je novi tip podataka u jeziku DAX koji se koristi kao ulaz ili izlaz za mnoge nove funkcije. Na primer, funkcija FILTER uzima tabelu kao ulaz i izlazi drugu tabelu koja sadrži samo redove koji ispunjavaju uslove filtera. Kombinovanjem funkcija tabele sa funkcijama agregacije možete da izvršite složena izračunavanja preko dinamički definisanih skupova podataka. Dodatne informacije potražite u članku " Agregacije" u programskom dodatku Power Pivot.
Formule i relacioni model
Prozor programskog dodatka Power Pivot predstavlja oblast u kojoj možete da radite sa više tabela sa podacima i da povežete tabele u relacioni model. U okviru ovog modela podataka, tabele su međusobno povezane relacijama, što vam omogućava da kreirate korelacije sa kolonama u drugim tabelama i kreirate zanimljivija izračunavanja. Na primer, možete kreirati formule koje sabiraju vrednosti za srodnu tabelu, a zatim tu vrednost sačuvati u jednoj ćeliji. Ili, da biste kontrolisali redove iz srodne tabele, možete da primenite filtere na tabele i kolone. Više informacija potražite u članku "Relacije između tabela u modelu podataka".
Pošto tabele možete da povežete pomoću relacija, izvedene tabele mogu da uključuju i podatke iz više kolona koje su iz različitih tabela.
Međutim, pošto formule mogu da rade sa celim tabelama i kolonama, treba da dizajnirate izračunavanja drugačije nego u programu Excel.
- DAX formula u koloni se obično uvek primenjuje na ceo skup vrednosti u koloni (nikada samo na nekoliko redova ili ćelija).
- Tabele u programskom dodatku Power Pivot moraju uvek da imaju isti broj kolona u svakom redu i svi redovi u koloni moraju da sadrže isti tip podataka.
- Kada su tabele povezane relacijom, od vas se očekuje da se uverite da dve kolone koje se koriste kao ključevi imaju vrednosti koje se u najvećoj meri podudaraju. Pošto Power Pivot ne nameće referencijalni integritet, moguće je da vrednosti koje se ne podudaraju nalaze u koloni ključa, a da i dalje kreiraju relaciju. Međutim, prisustvo praznih vrednosti ili vrednosti koje se ne podudaraju može da utiče na rezultate formula i izgled izvedenih tabela. Više informacija potražite u članku Pronalaženja u formulama programskog dodatka Power Pivot.
- Kada povezujete tabele pomoću relacija, povećavate opseg ili kontekst u kojem se formule procenjuju. Na primer, na formule u izvedenoj tabeli mogu da utiču svi filteri ili naslovi kolona i redova u izvedenoj tabeli. Možete da pišete formule koje manipulišu kontekstom, ali kontekst može i da izazove promenu rezultata na načine koje možda ne možete da predvidite. Više informacija potražite u članku Kontekst u DAX formulama.
Ažuriranje rezultata formula
Osvežavanje i ponovno izračunavanje podataka su dve odvojene, ali povezane operacije koje bi trebalo da razumete kada dizajnirate model podataka koji sadrži složene formule, velike količine podataka ili podatke koji se dobijaju iz spoljnih izvora podataka.
Osvežavanje podataka je proces ažuriranja podataka u radnoj svesci novim podacima iz spoljnog izvora podataka. Podatke možete da osvežavate ručno u intervalima koje navedete. Ili, ako ste radnu svesku objavili na SharePoint lokaciji, možete da isplanirate automatsko osvežavanje iz spoljnih izvora.
Ponovno izračunavanje je proces ažuriranja rezultata formula tako da odražava sve promene u samim formulama i da odrazi te promene u osnovnim podacima. Ponovno izračunavanje može da utiče na performanse na sledeće načine:
- Za izračunatu kolonu, rezultat formule treba uvek ponovo izračunati za celu kolonu svaki put kada promenite formulu.
- Za meru se rezultati formule ne izračunavaju sve dok se mera ne postavi u kontekst izvedene tabele ili izvedenog grafikona. Formula će se ponovo izračunati i kada promenite naslov reda ili kolone koji utiče na filtere podataka ili kada ručno osvežite izvedenu tabelu.
Rešavanje problema sa formulama
Greške prilikom pisanja formula
Ako dobijete grešku prilikom definisanja formule, formula možda sadrži sintaktičku grešku, semantičku grešku ili grešku u proračunu.
Sintaksičke greške je najlakše otkloniti. Obično uključuju nedostajuću zagradu ili zarez. Pomoć u vezi sa sintaksom pojedinačnih funkcija potražite u članku "Referenca za DAX funkciju".
Drugi tip greške javlja se kada je sintaksa ispravna, ali vrednost ili kolona na koju se upućuje nemaju smisla u kontekstu formule. Takve semantičke greške i greške u proračunu može da izazove bilo koji od sledećih problema:
- Formula se odnosi na nepostojeću kolonu, tabelu ili funkciju.
- Formula izgleda ispravno, ali kada mašina podataka preuzme podatke pronalazi nepodudaranje tipa i daje grešku.
- Formula funkciji prosleđuje netačan broj ili tip parametara.
- Formula se odnosi na drugu kolonu koja ima grešku i zato su njene vrednosti nevažeće.
- Formula se odnosi na kolonu koja nije obrađena, što znači da sadrži metapodatke, ali ne i stvarne podatke koje može da koristi za izračunavanja.
U prva četiri slučaja DAX označava zastavicom celu kolonu koja sadrži nevažeću formulu. U poslednjem slučaju, DAX zasivljuje kolonu da bi ukazao da je kolona u neobrađenom stanju.
Netačni ili neuobičajeni rezultati pri rangiranju ili raspoređivanju vrednosti kolone
Prilikom rangiranja ili redosleda kolone koja sadrži vrednost NaN (nije broj), možete dobiti pogrešne ili neočekivane rezultate. Na primer, kada izračunavanje deli 0 sa 0, dobija se NaN rezultat.
To je zato što mašina formula izvršava redosled i rangiranje upoređivanjem numeričkih vrednosti; međutim, NaN se ne može uporediti sa drugim brojevima u koloni.
Da biste dobili tačne rezultate, možete koristiti uslovne izjave pomoću funkcije IF za testiranje NaN vrednosti i vraćanje numeričke vrednosti 0.
Kompatibilnost sa tabelarnim modelima programa Analysis Services i režimom DirectQuery
Uopšte uzev, DAX formule koje kreirate u programskom dodatku Power Pivot potpuno su kompatibilne sa tabelarnim modelima programa Analysis Services. Međutim, ako migrirate Power Pivot model u Analysis Services instancu, a zatim primenite model u režimu DirectQuery, postoje neka ograničenja.
- Neke DAX formule mogu da daju drugačije rezultate ako primenite model u režimu DirectQuery.
- Neke formule mogu da izazovu greške u proveri valjanosti kada primenite model u režimu DirectQuery, zato što formula sadrži DAX funkciju koja nije podržana u relacionom izvoru podataka.
Više informacija potražite u dokumentaciji za tabelarno modeliranje programa Analysis Services u sistemu SQL Server 2012 BooksOnline.