DAX i veze između tabela

U jednom od ranijih tekstova bilo je reči o tome da u Model podataka dodajemo tabele i kreiramo veze između njih. Veze koje smo napravili ništa nam ne znače prilikom pisanja DAX izraza. Ako želimo da u formuli upotrebimo kolonu koja se nalazi u nekoj povezanoj tabeli to moramo na neki način da naglasimo. Ovo se radi upotrebom funkcija RELATED i RELATEDTABLE o kojima možete da saznate nešto više u tekstu koji sledi…

Hajde da vidimo kako se one koriste kroz jedan praktičan primer! Otvorimo prozor Modela podataka (Manage) i izaberimo tabelu Transakcije. Ova tabela je u vezi sa tabelama Artikli i Objekti, a u njoj se beleže transakcije- promet u maloprodajnim objektima. U tabeli imamo kolonu u kojoj su evidentirane prodate količine, a potrebno je da kreiramo novu koja će sadržati iznose prodaje, kao proizvod količina i prodajne cene. Ako bi smo probali da unesemo formulu:

=[KOL]*Artikli[PC]

Excel bi javio grešku. Iako smo napravili vezu između tabele Artikli i Transakcije on to ne može da “vidi” u okviru DAX izraza.

Kako bi smo izbegli ovu grešku upotrebićemo funkciju RELATED:

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

Funkcija RELATED ima za argument naziv kolone u susednoj, povezanoj tabeli. Ako unesemo formulu na ovaj način Excel neće prijaviti grešku. Samo bi bilo dobro da ime izračunate kolone promenimo u “IZNOS” i moći ćemo da je upotrebimo kao izveštajnu dimenziju u PowerPivot tabeli.

00124-1

Ako nam je za kreiranje izraza potreban broj redova u susednoj tabeli iskoristićemo funkciju RELATEDTABLE. Kreirajmo meru:

BrojArtikala:=COUNTROWS(RELATEDTABLE(Artikli))

Kao što se vidi, funkcija RELATEDTABLE takođe ima samo jedan argument, naziv tabele. Rezultat formule je broj zapisa u tabeli Artikli.