Excel kuhinjica – DAX funkcije | PC Press

Excel kuhinjica – DAX funkcije

Priča o DAX‑u (Data Analysis Expressions) je priča o njegovim komandama. Neke od njih imaju istu svrhu, pa čak i sintaksu, kao tradicionalne Excel funkcije, dok druge znatno proširuju mogućnosti Excel‑a, približavajući ga SQL Server Analysis Services BI rešenjima. Upoznajmo osnovne funkcije.

Funkcija SUM

U primeru koji ćemo koristiti za kreiranje DAX izraza, u model podataka uključene su tri tabele: Artikli (artikli kojima trguje fiktivno preduzeće koje se bavi veleprodajom pića), Objekti (podaci o maloprodajama) i Transakcije (prodaje evidentirane po datumima, sa šifrom artikla, šifrom maloprodajnog objekta i prodatoj količini). Prve funkcije s kojima se upoznajemo u Excel‑u jesu funkcije za agregaciju (združivanje) podataka, pa je sasvim logično da prvo pokažemo DAX ekvivalente ovih funkcija. Agregacija podataka je ono što implicitno radimo kada god prevučemo izveštajnu dimenziju u polje Values Pivot tabele, odnosno za zadatu dimenziju računamo sumu, prosečnu vrednost, prebrojavamo… Ipak, u praksi je često korisno da napravimo meru koja će obavljati ovu operaciju.

Sve počinje od sabiranja

Najčešće se koristi funkcija SUM, čija je sintaksa SUM (<kolona>). Ovde kolona označava kolonu neke od tabela u modelu. Ako bismo npr. u tabeli Transakcije želeli da izračunamo sumu svih prodatih količina, napisali bismo:

ProdajaKOL:=SUM([KOL])

Ako ovu DAX meru prevučemo u polje Values Pivot tabele, dobili bismo isti rezultat kao da smo u isto polje prevukli dimenziju KOL. Prednost kreiranja mere jeste u tome što kasnije možemo da je koristimo u drugim DAX izrazima.

Za računanje aritmetičke sredine koristimo funkcije AVERAGE ili AVERAGEA, čije su sintakse AVERAGE (<kolona>) odnosno AVERAGEA (<kolona>). Obe funkcije za argument uzimaju neku kolonu u tabeli, ali AVERAGE radi samo s brojnim vrednostima, dok AVERAGEA može da izračuna i prosečnu vrednost kolone koja sadrži brojeve definisane kao tekst u bazi podataka. Sličnu sintaksu imaju i funkcije za prebrojavanje COUNT i COUNTA: COUNT (<kolona>) i COUNTA (<kolona>). COUNT se koristi za prebrojavanje numeričkih, a COUNTA za prebrojavanje svih vrednosti u nekoj koloni.

Prebrojavanje

Pomenimo i funkcije COUNTBLANK (prebrojava blanko vrednosti u zadatoj koloni. Da bismo prebrojali ukupan broj redova u tabeli, koristimo funkciju COUNTROWS, koja za argument ima naziv tabele: COUNTROWS (<tabela>). Pošto se dešava da se vrednosti u nekoj koloni ponavljaju, ako želimo da izdvojimo samo one koje su jedinstvene, iskoristićemo funkciju DISTINCT čija je sintaksa DISTINCT (<kolona>). Ova funkcija koristi se uvek u kombinaciji s nekom drugom funkcijom. Primera radi, ako želimo da prebrojimo koliko proizvođača proizvodi artikle koje imamo evidentirane u bazi, napisaćemo:

BrojProizvodjaca:=
COUNTROWS(DISTINCT
(Artikli[PROIZVOĐAČ]))

U tu svrhu možemo da iskoristimo i funkciju DISTINCTCOUNT, koja za argument ima kolonu, a prebrojava sve jedinstvene vrednosti unutar zadate kolone. Malopređašnji izraz možemo da napišemo i ovako:

KolikoImaProizvodjaca:=DISTINCTCOUNT
(Artikli[PROIZVOĐAČ])

Za agregaciju vrednosti možemo da iskoristimo i funkcije MAX i MIN koje računaju maksimalnu i minimalnu vrednost brojeva u nekoj tabeli. Postoje i funkcije MAXA i MINA koje operišu  s kolonama u kojima su brojne vrednosti definisane kao tekst.

Kombinovane tabele

Related

Iako u modelu podataka povezujemo tabele, da bismo pristupili koloni iz neke druge tabele, često je neophodno da to naglasimo. U tu svrhu koristi se funkcija RELATED, čija je sintaksa: RELATED (<kolona>). Na primer, ako u tabeli Transakcije želimo da izračunamo iznos, to treba da uradimo tako što ćemo pomnožiti vrednosti količine i cene, koja se čuva u tabeli Artikli. Prostim množenjem ove dve kolone dogodila bi se greška, a pomoću funkcije RELATED možemo da napišemo pravilan DAX izraz:

IZNOS=[KOL]*RELATED
(Artikli[PC])

Za uspostavljanje relacija ponekad se koristi i funkcija RELATEDTABLE, koja za argument ima naziv tabele. Nju upotrebljavamo kada želimo da iskoristimo neku od DAX funkcija koje koriste kompletnu tabelu kao argument.

Bio je to prvi nastavak teksta o jeziku DAX. U sledećim brojevima bavićemo se kontekstima izračunavanja, funkcijama iteratorima, filterima… Sve što mogu dalje da vam savetujem jeste – vežbajte, i „pratite put od žute cigle“.

Agregatne funkcije

Brojevi kao tekst

Kako se dešava da brojne vrednosti budu u tabeli unesene kao tekst? Prilikom izvoza podataka u tabele, pa novog uvoza u neku drugu bazu, oni često bivaju zapamćeni kao tekstualne vrednosti. Ako ne želite da se bavite konverzijom, možete da iskoristite neku od ovih funkcija za agregaciju koje se završavaju na slovo A“.

Slavko „Sam Le Chef“ Vujnović

(Objavljeno u PC#239)


Asus


Original

Excel kuhinjica

Twitter