Top50 2024

Excel kuhinjica – DAX i konteksti izračunavanja

Da biste ovladali DAX‑om, a onda i BI tehnikama u Excel‑u, važno je da razumete kako ovaj specijalizovani programski jezik računa. Uz nekoliko karakterističnih primera, sve će biti jasno…

Kontekst Filtera

Da li to što sam slične težine kao Vladimir Kličko znači i to da bih smeo da se borim protiv njega u ringu? Ne baš! U životu, kao i u DAX‑u, važan je kontekst u kome sagledavamo neku pojavu – ako želite da ovladate ovim jezikom, bitno je da razumete kako on računa. U ovom tekstu biće reči o kontekstima izračunavanja, a spomenućemo i nekoliko funkcija‑iteratora.

Filteri i redovi

DAX poznaje dva važna konteksta izračunavanja: kontekst filtera i kontekst redova. Kontekst filtera podrazumeva da se agregacija obavlja nad svim podacima, a da dalje samo filtriramo informacije. Zamislite sledeći scenario: napravili smo pivot tabelu i u nju prevlačimo dimenziju KOL, čime Excel automatski kreira implicitnu meru SUM of KOL. Izveštaj koji smo dobili ne govori nam ništa posebno – vidimo sumu prodatih količina koje Excel računa na osnovu tabele transakcija. Ako bismo dalje u polje Rows dodali i dimenziju KLASIFIKACIJA, izveštaj bi dobio neki smisao: videli bismo prodaju u zavisnosti od klasifikacije artikala u bazi. Kontekst filtera shvatite kao izračunavanje koje se obavlja nad čitavim skupom podataka. Agregacija podataka pravi se kao u relacionim bazama, pa ako želimo da kreiramo meru koja, primenom konteksta filtera, izračunava sumu svih količina, napisali bismo izraz:

Pročitajte i:  Kako koristiti funkciju SWITCH u Excelu

ProdajaKOL:=SUM([KOL])

Kontekst redova označava da se računanje obavlja red po red, kao u tradicionalnim Excel tabelama. Kada pišemo DAX izraze za kreiranje izračunatih kolona, u većini slučajeva upotrebljavamo kontekst redova. Ako želimo da napišemo meru koja primenjuje ovaj kontekst, poslužićemo se funkcijama iteratorima, koje još zovemo i „X funkcijama“ jer se nazivaju slično kao funkcije za agregaciju podataka, samo se završavaju slovom X.

Funkcije iteratori automatski menjaju kontekst izračunavanja iz konteksta filtera u kontekst reda. Pošto se izračunavanje obavlja red po red, one imaju neke dodatne mogućnosti u odnosu na klasične funkcije agregacije. Pođimo od sintakse funkcije SUMX:

SUMX (<naziv tabele>, <izraz>)

Prvi argument funkcije je naziv tabele, a drugi je izraz. Izraz može da bude i naziv neke kolone, a u tom slučaju rezultat se ne razlikuje od onog koji bismo dobili pomoću „običnog“ SUM, samo što bi se kalkulacija obavljala red po red. Ako pomoću ove funkcije želimo da napišemo formulu koja računa sumu svih količina, napisali bismo:

Pročitajte i:  Power Query: spajanje i nadovezivanje tabela

ProdajaKOL_X:=SUMX
(Transakcije, [KOL])

U praksi, ove funkcije često se koriste kada su potrebne aritmetičke operacije između više kolona, bez prethodnog kreiranja izračunatih kolona. Na primer, ako želimo da izračunamo sumu svih iznosa, treba da napišemo izraz:

Prodaja_IZNOS_X:= SUMX(Transakcije,
[KOL]*RELATED
(Artikli[PC]))

PCPress.rs Image
Kontekst Redova

Ako se sećate prethodnog teksta, kada je bilo reči o upotrebi funkcije RELATED, kreirali smo izračunatu kolonu IZNOS. Na taj način sumiramo sve iznose bez pravljenja izračunate kolone.

X funkcije

Hajde da spomenemo još nekoliko „X“ funkcija. Prosečnu vrednost računamo pomoću funkcije AVERAGEX, čija je sintaksa:

AVERAGEX (<naziv tabele>, <izraz>)

Shodno tome, za izračunavanje prosečne vrednosti prodatih količina treba da napišemo:

ProsekProdaje_X:=AVERAGEX (Transakcije, [KOL])

Istu sintaksu kao AVERAGEX imaju i funkcije za izračunavanje maksimuma i minimuma, MAXX i MINX, pa je zgodno da u Model dodamo još dva izraza:

NajveceKolicine_X:=MAXX (Transakcije, [KOL])

NajmanjeKolicine_X:=MINX (Transakcije, [KOL])

COUNTX koristimo za prebrojavanje, a ima istu sintaksu kao prethodno navedene funkcije. Pitanje za milion dolara glasi: „Kada koristiti koji kontekst?“ Odgovor je da to zavisi od toga šta želite da postignete. U većini slučajeva verovatno ćete koristiti kontekst filtera, međutim ima situacija kada je neophodno vršiti izračunavanje red po red. Tada samo uz pomoć konteksta redova možete da dođete do željenog rezultata.

Pročitajte i:  Power Query: rotiranje kolona u izveštaju

Slavko „Sam Le Chef“ Vujnović

(Objavljeno u PC#240)

Facebook komentari:
Računari i Galaksija
Tagovi: , , ,