DAX filteri i funkcija calculate

Poslovni izveštaji uglavnom su veoma obimni pa se usled obilja podataka, dešava „da od šume ne vidimo drvo“. Zbog toga je potrebno suziti set podataka na osnovu zadatog kriterijuma. Umesto Pivot tabele i filtera, podatke možemo eksplicitno da filtriramo i koristimo u DAX izrazima.

Funkcija FILTER

Prva funkcija o kojoj će biti reči zove se FILTER, a njena sintaksa je: FILTER (<tabela>, <filter>). Prvi argument ove funkcije jeste tabela čije podatke filtriramo, a drugi je kriterijum na osnovu koga se obavlja ova operacija. Na primer, ako u tabeli s podacima o artiklima neke veleprodaje pića želimo da suzimo set prikazanih podataka samo na piva, kreiraćemo izraz:

FILTER(Artikli, [KLAS]=”PIVA”))

Funkcija FILTER nikada se ne koristi samostalno, već uvek u kombinaciji s nekom drugom DAX funkcijom. Ona kao rezultat vraća filtriranu tabelu, pa možemo da je upotrebimo kod svake funkcije koja za argument ima neku tabelu. Na primer, ako želimo da prebrojimo sve artikle koji su piva u tabeli artikala, napisaćemo sledeći izraz:

BrojArtikalaPiva:=

COUNTROWS (FILTER

(Artikli, [KLAS]=”PIVA”))

Uz iteratore

Funkcija FILTER koristi se često u kombinaciji sa funkcijama‑iteratorima. Na primer, ako u tabeli transakcija želimo da izračunamo sumu svih prodatih količina piva, samo treba da dodamo filter koji smo malopre kreirali kao prvi argument funkcije SUMX. Radi preglednijeg izveštaja, kreiraćemo dve mere: prvu koja računa sumu svih prodatih količina i drugu koja izdvaja sumu prodatih piva.

UkupnaProdaja:=SUMX

(Transakcije, [KOL])

UkupnaProdajaPiva:= SUMX(FILTER(Artikli, [KLAS]=”PIVA”),

[UkupnaProdaja])

Funkcija FILTER koristi se za eksplicitno zadavanje filtera koji se koriste prilikom prikaza nekog izveštaja. Međutim, u praksi se često dešava da korisnici implicitno zadaju filtere, bilo prevlačenjem neke izveštajne dimenzije u polje Filters, bilo kreiranjem interaktivnih filtera (Slicers, Timeline). U tom slučaju ćemo poništiti filtere kako bismo mogli da obavimo željenu računsku operaciju. To možemo da učinimo pomoću funkcija ALL i ALLEXCEPT.

Funkcija ALL i ALLEXCEPT

Sintaksa funkcije ALL je:

ALL( {<naziv tabele> | <kolona1>[, <kolona2>

[, <kolona3>[, …]]]} )

Komanda omogućava da uklonimo sve filtere u nekoj tabeli ili samo filtere za određene zadate kolone. Da se nadovežemo na prethodni primer, za prikaz svih prodatih količina (anuliranje filtera), napisaćemo izraz:

SveKolicine:=SUMX (ALL (Transakcije),

[UkupnaProdaja])

Ako želimo da uklonimo određene filtere, koristićemo funkciju ALLEXCEPT, čija je sintaksa:

ALLEXCEPT(<tabela>,

<kolona1>[, <kolona2> [,…]])

Na primer, ako želimo da uklonimo sve filtere, osim filtera PROIZVOĐAČ, napisaćemo:

SveOsimProizvodjaca:=SUMX

(ALLEXCEPT(Artikli,

Artikli[PROIZVOĐAČ]), [UkupnaProdaja])

Postoji još jedna funkcija za eksplicitno filtriranje čiji je cilj da naglasi upotrebu nekog filtera, a zove se ALLSELECTED. Njena sintaksa je:

ALLSELECTED([<tabela>

| <kolona>])

A onda, računanje…

Funkcija CAL­CU­LA­TE

Sve do sada opisane funkcije veoma su korisne, ali nijedna ne može da se uporedi sa funkcijom CALCULATE. Ona se koristi za izračunavanje uz pomoć neke od funkcija za agregaciju uz istovremenu primenu nijednog, jednog ili više filtera. Snagu ove funkcije čini mogućnost kombinovanja s brojnim drugim funkcijama koje sužavaju skup podataka za koje se vrši agregacija. Njena sintaksa je:

CALCULATE(<izraz>,

<filter1>, … , <filtern>)

Na primer, ako želimo da izračunamo ukupnu prodaju artikala, upotrebićemo ovu funkciju bez filtera:

C_UkupnaProdaja:=

CALCULATE(SUM([KOL]))

Ako želimo da suzimo prodaju samo na piva, dodaćemo jedan filter:

C_ProdajaPiva:=

CALCULATE(SUM([KOL]),

Artikli[KLAS]=”PIVA”)

A ako želimo da vidimo samo prodaju piva „Apatinske pivare“, napisaćemo izraz:

C_ProdajaPiva_AP:=

CALCULATE(SUM([KOL]),

Artikli[KLAS]=”PIVA”,

Artikli[PROIZVOĐAČ]=

”APATINSKA PIVARA”)

Funkcija CALCULATE intuitivna je i laka za korišćenje, a ovo je često „čarobni štapić“ koji će vam omogućiti da kreirate meru koja daje željene rezultate. Njen prvi argument je, da ponovimo, funkcija koja vrši agregaciju, a svi filteri koji slede mogu da uvećaju ili da umanje skup podataka koji se agregira. Na taj način ona može da bude od velike koristi prilikom računanja različitih procenata prodaje, a u kombinaciji sa ostalim funkcijama olakšava uključivanje ili isključivanje različitih implicitno zadatih filtera.

Slavko „Sam Le Chef“ Vujnović

(Objavljeno u PC#241)

Facebook komentari:
SBB Solutions Tagovi: , ,