Izrazi za analizu podataka (DAX) u početku zvuče pomalo zastrašujuće, ali nemojte dozvoliti da vas ime zavara. DAX osnove je veoma lako razumeti. Prvo ono što je prvo – DAX NIJE programski jezik. DAX je jezik formule. Možete da koristite DAX da biste definisali prilagođena izračunavanja za izračunate kolone i za mere (poznata i kao izračunata polja). DAX obuhvata neke funkcije koje se koriste u Excel formulama, kao i dodatne funkcije dizajnirane za rad sa relacionim podacima i izvršavanje dinamičke agregacije.
Razumevanje DAX formula
DAX formule su veoma slične Excel formulama. Da biste kreirali neki, otkucajte znak jednakosti, a zatim ime funkcije ili izraz, kao i sve potrebne vrednosti ili argumente. Kao i Excel, DAX pruža različite funkcije koje možete da koristite za rad sa niskama, izvršavanje 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 po redovima, DAX sadrži funkcije koje vam omogućavaju da koristite trenutnu vrednost reda ili srodnu vrednost za izračunavanja koja se razlikuju u zavisnosti od konteksta.
-
DAX sadrži tip funkcije koji kao rezultat vraća tabelu, a ne jednu vrednost. Ove funkcije mogu da se koriste za obezbeđivanje unosa drugim funkcijama.
-
Funkcije vremenske inteligencije u daX-u dozvoljava izračunavanja koristeći opsege datuma i upoređivanje rezultata u paralelnom periodu.
Gde se koriste DAX formule
Formule možete da kreirate u Power Pivot u izračunatim columnima ili u izračunatim fildima.
Izračunate kolone
Izračunata kolona je kolona koju dodajete u postojeću Power Pivot tabelu. Umesto da nalepite ili uvezete vrednosti u kolonu, kreirate DAX formulu koja definiše vrednosti kolona. Ako tabelu Power Pivot uključite u izvedenu tabelu (ili izvedeni grafikon), izračunata kolona može da se koristi kao i bilo koja druga kolona sa podacima.
Formule u izračunatim kolonama umnogome su poput formula koje kreirate u programu Excel. Međutim, za razliku od programa Excel, ne možete da kreirate drugu formulu za različite redove u tabeli; umesto toga, DAX formula se automatski primenjuje na celu kolonu.
Kada kolona sadrži formulu, vrednost se izračunava za svaki red. Rezultati se izračunavaju za kolonu čim kreirate formulu. Vrednosti kolona se ponovo izračunavaju samo ako se osnovni podaci osvežavaju ili ako se koristi ručno ponovno izračunavanje.
Možete da kreirate izračunate kolone koje su zasnovane na merama i drugim izračunatim kolonama. Međutim, izbegavajte korišćenje istog imena za izračunatu kolonu i meru, jer to može dovesti do zbunjujućih rezultata. Prilikom upućivanja na kolonu, najbolje je da koristite potpuno određenu referencu kolone da biste izbegli slučajno pozivanje mere.
Detaljnije informacije potražite u članku Izračunate kolone u programskom dodatku Power Pivot.
Mere
Mera je formula koja se kreira posebno za upotrebu u izvedenoj tabeli (ili izvedenom grafikonu) koja Power Pivot podatke. Mere mogu da se zasnivaju na standardnim agregatnim funkcijama, kao što su COUNT ili SUM, ili možete da definišete sopstvenu formulu pomoću DAX-a. 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 izričitu 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 izvedene tabele. Pošto se rezultat kreira za svaku kombinaciju zaglavlja redova i kolona, rezultat mere može da se razlikuje u svakoj ćeliji.
Definicija mere koju kreirate č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 trake sa formulama
Power Pivot, kao što je Excel, obezbeđuje polje za formulu koje olakšava kreiranje i uređivanje formula, kao i funkcionalnost automatskog dovršavanja, za umanjivanje kucanja i sintaksnih grešaka.
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, a zatim 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 Automatsko dovršavanje.
Više detalja i uputstva o tome kako da napravite formule potražite u članku Kreiranje formula za izračunavanja u programskom dodatku Power Pivot.
Saveti za korišćenje automatskog dovršavanje
Automatsko dovršavanje formula možete da koristite u sredini postojeće formule sa ugnežđenim funkcijama. Tekst neposredno pre mesta umetanja koristi se za prikazivanje vrednosti na padajućoj listi, a sav tekst posle mesta umetanja ostaje nepromenen.
Definisana imena koja kreirate za konstante ne prikazuju se na padajućoj listi Automatsko dovršavanje, ali i dalje možete da ih otkucate.
Power Pivot ne dodaje zatvorenu zagradu funkcija niti se automatski podudara sa zagradama. Trebalo bi da se uverite da je svaka funkcija sintaksno ispravna ili da 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 otežati kreiranje formula ili rešavanje problema sa formulama.
Mnoge DAX funkcije su dizajnirane tako da se koriste samo kao ugnežđene funkcije. Ove funkcije vraćaju tabelu koja se ne može direktno sačuvati zbog toga; trebalo bi da se obezbedi kao unos za funkciju tabele. Na primer, funkcije SUMX, AVERAGEX i MINX zahtevaju tabelu kao prvi argument.
Napomena: Neka ograničenja ugnežđivanja funkcija postoje u okviru mera kako bi se osiguralo da na performanse ne utiče mnogo izračunavanja koja zahtevaju zavisnosti među kolonama.
Poređenje DAX funkcija i Excel funkcija
Biblioteka funkcija DAX 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.
-
Mnoge DAX funkcije imaju isto ime i isto opšte ponašanje kao Excel funkcije, ali su izmenjene tako da uzimaju različite tipove unosa, a u nekim slučajevima mogu da daju drugačiji tip podataka. DaX funkcije obično ne možete da koristite u Excel formuli ili da koristite Excel formule u programu Power Pivot bez neke izmene.
-
DAX funkcije nikada ne uzimaju referencu ćelije ili opseg kao referencu, već umesto toga DAX funkcije uzimaju kolonu ili tabelu kao referencu.
-
DAX funkcije za datum i vreme daju tip podataka "datum/vreme". Nasuprot tome, Excel funkcije za datum i vreme daju ceo broj koji predstavlja datum kao redni broj.
-
Mnoge od novih DAX funkcija daju tabelu vrednosti ili izračunavanja kreiraju na osnovu tabele vrednosti kao unosa. Nasuprot tome, Excel nema funkcije koje vraćaju tabelu, ali neke funkcije mogu da rade sa nizovima. Mogućnost jednostavnog upućivanja na dovršene tabele i kolone je nova funkcija u programu Power Pivot.
-
DAX obezbeđuje nove funkcije za pronalaženje koje su slične nizu i vektorske funkcije za pronalaženje u programu Excel. Međutim, DAX funkcije zahtevaju da se uspostavi relacija između tabela.
-
Očekuje se da će podaci u koloni uvek biti istog tipa podataka. Ako podaci nisu isti tip, DAX menja celu kolonu u tip podataka koji najbolje odgovara svim vrednostima.
DAX tipovi podataka
Možete da uvezete podatke u Power Pivot podataka iz mnogo različitih izvora podataka koji možda podržavaju različite tipove podataka. Kada uvezete ili učitate podatke, a zatim koristite podatke u izračunavanjima ili izvedenim tabelama, podaci se konvertuju u jedan od Power Pivot podataka. Listu tipova podataka potražite u članku Tipovi podataka u modelima podataka.
Tip podataka tabele je novi tip podataka u daX-u koji se koristi kao unos ili izlaz za mnoge nove funkcije. Na primer, funkcija FILTER uzima tabelu kao unos i izvozi drugu tabelu koja sadrži samo redove koji ispunjavaju uslove filtriranja. Kombinovanje funkcija tabele sa agregatnim funkcijama omogućava vam da izvršite složena izračunavanja nad dinamički definisanim skupovima podataka. Više informacija potražite u članku Agregacije u programskom dodatku Power Pivot.
Formule i relacioni model
Prozor Power Pivot je oblast gde možete da radite sa više tabela sa podacima i povežete tabele u relacionom modelu. 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 da kreirate formule koje sabiranje vrednosti za povezanu tabelu, a zatim tu vrednost čuvaju 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.
Izvedene tabele mogu da sadrže podatke iz više kolona koje su iz različitih tabela jer možete da povežete tabele pomoću relacija.
Međutim, pošto formule mogu da rade sa celim tabelama i kolonama, morate da dizajnirate izračunavanja drugačije nego u programu Excel.
-
Uopšte uzev, DAX formula u koloni se uvek primenjuje na ceo skup vrednosti u koloni (nikada samo na nekoliko redova ili ćelija).
-
Tabele u Power Pivot uvek moraju da imaju isti broj kolona u svakom redu, a svi redovi u koloni moraju da sadrže isti tip podataka.
-
Kada su tabele povezane relacijama, očekuje se da proverite da li dve kolone koje se koriste kao tasteri imaju vrednosti koje se najviše podudaraju. Pošto Power Pivot nameće referencijalni integritet, moguće je da u koloni ključa postoje vrednosti koje se ne podudaraju, a da se i dalje kreira relacija. 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 Power Pivot formulama.
-
Kada povežete tabele pomoću relacija, povećavate opseg ili ctekst u kojem se procenjuju formule. 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 takođe može dovesti do promene rezultata na načine za koje možda ne očekujete. Više informacija potražite u članku Kontekst u DAX formulama.
Ažuriranje rezultata formula
Podaci refres i ponovno izračunavanje su dve zasebne, ali srodne operacije koje bi trebalo da razumete prilikom dizajniranja modela podataka koji sadrži složene formule, velike količine podataka ili podatke dobijene 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žite ručno u intervalima koje navedete. Odnosno, ako ste objavili radnu svesku na SharePoint lokaciji, možete da zakažete automatsko osvežavanje iz spoljnih izvora.
Ponovno izračunavanje je proces ažuriranja rezultata formula tako da odražavaju sve promene u samim formulama i odražavaju 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 uvek treba ponovo izračunati za celu kolonu svaki put kada promenite formulu.
-
Za meru, rezultati formule se ne izračunavaju dok se mera ne postavi u kontekst izvedene tabele ili izvedenog grafikona. Formula će se takođe ponovo izračunati kada promenite bilo koji naslov reda ili kolone koji utiče na filtere na podacima 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že da sadrži sintatičku grešku, semantičku grešku ili grešku u izračunavanju.
Najlakše je rešiti sintatičke greške. Oni obično uključuju zagrade koje nedostaju ili zareze. 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 nema smisla u kontekstu formule. Ovakve semantičke greške i greške u izračunavanju mogu da izazovu neki od sledećih problema:
-
Formula se odnosi na nepostojeću kolonu, tabelu ili funkciju.
-
Izgleda da je formula ispravna, ali kada mašina podataka dobavi podatke, pronalazi nepodudaranje tipa i podiže grešku.
-
Formula funkciji dodaje netačan broj ili tip parametara.
-
Formula se odnosi na drugu kolonu koja sadrži grešku, a samim tim i njene vrednosti su 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 treba koristiti 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 zasivljena je kolonom da bi ukazala na to da se kolona nalazi u neodređenom stanju.
Netačni ili neuobičajeni rezultati prilikom rangiranja ili redosleda vrednosti kolona
Prilikom rangiranja ili redosleda kolone koja sadrži vrednost NaN (Ne broj), možda ćete dobiti pogrešne ili neočekivane rezultate. Na primer, kada izračunavanje podeli 0 sa 0, dobija se rezultat NaN.
To je zato što mašina formule izvršava redosled i rangiranje upoređivajući numeričke vrednosti; međutim, nije moguće uporediti NaN sa drugim brojevima u koloni.
Da biste obezbedili ispravne rezultate, možete da koristite uslovne izjave pomoću funkcije IF za testiranje vrednosti naN-a i vraćanje numeričke vrednosti 0.
Kompatibilnost sa tabelarnim modelima usluge Analysis Services i režimom direktnog upita
Uopšte uzev, DAX formule koje gradite u sistemu Power Pivot potpuno su kompatibilne sa tabelarnim modelima usluge Analysis Services. Međutim, ako migrirate Power Pivot u Analysis Services instancu, a zatim primenite model u directQuery režimu, postoje neka ograničenja.
-
Neke DAX formule mogu da daju različite rezultate ako primenite model u režimu DirectQuery.
-
Neke formule mogu da dovode do grešaka u proveri valjanosti kada primenite model na DirectQuery režim zato što formula sadrži DAX funkciju koja nije podržana u relacionom izvoru podataka.
Više informacija potražite u članku Dokumentacija za tabelarno modeliranje usluge Analysis Services u članku SQL Server 2012 BooksOnline.