Ovaj vodič za brzi početak rada namijenjen je korisnicima koji tek počinju koristiti Power Pivot u programu Excel ili tablične modele projekata stvorene u programu SQL Server Data Tools. Svrha je tog izraza pružiti brz i jednostavan uvod u korištenje izraza za analizu podataka (DAX) za rješavanje niza osnovnih problema modeliranja podataka i analitičkih problema. Ova tema obuhvaća konceptualne informacije, niz zadataka koje možete dovršiti i nekoliko testova kojima se provjerava ono što ste naučili. Nakon što završite ovu temu, trebali biste dobro razumjeti osnovna temeljna koncepta jezika DAX.
Što je DAX?
DAX je zbirka funkcija, operatora i konstanti koje se mogu koristiti u formuli ili izrazu radi izračuna i vraćanja jedne ili više vrijednosti. Jednostavnije rečeno, DAX omogućuje stvaranje novih informacija iz podataka koji se već nalaze u modelu.
Zašto je DAX toliko važan?
Jednostavno je stvoriti radnu knjigu i uvesti neke podatke u nju. Možete čak stvarati i zaokretne tablice ili zaokretne grafikone koji prikazuju važne informacije bez korištenja DAX formula. No što ako morate analizirati ključne podatke o prodaji u nekoliko kategorija proizvoda i za različita raspona datuma? Ili želite kombinirati važne podatke o inventaru iz nekoliko tablica u različitim izvorima podataka? DAX formule omogućuju tu mogućnost, ali i mnoge druge važne mogućnosti. Učenje stvaranja učinkovitih DAX formula pomoći će vam da najbolje iskoristite svoje podatke. Kada dobijete potrebne informacije, možete početi rješavati stvarne poslovne probleme koji utječu na vaš krajnji rezultat. To je poslovna inteligencija i DAX će vam pomoći da do nje dođete.
Preduvjeti
Možda vam je već poznat način stvaranja formula u programu Microsoft Excel. To će vam znanje biti korisno u razumijevanju jezika DAX, ali čak i ako nemate iskustva s formulama programa Excel, ovdje opisani koncepti pomoći će vam da odmah započnete sa stvaranjem DAX formula i rješavanjem stvarnih BI problema.
Usredotočit ćemo se konkretno na razumijevanje DAX formula koje se koriste u izračunima. Trebali biste već biti upoznati s osnovnim konceptima izračunatih stupaca i mjera (poznatih i kao izračunata polja), a oba su opisana u pomoći za Power Pivot. Proučite i okruženje za stvaranje i alate dodatka Power Pivot u programu Excel.
Ogledna radna knjiga
Najbolji način da naučite DAX jest stvoriti neke osnovne formule, koristiti ih sa stvarnim podacima i sami vidjeti rezultate. U primjerima i zadacima ovdje korišten je primjer radne knjige Contoso Sample DAX Formulas.xlsx. Radnu knjigu možete preuzeti na web-mjestu http://go.microsoft.com/fwlink/?LinkID=237472&clcid=0x409. Kada radnu knjigu preuzmete na računalo, otvorite je, a zatim otvorite prozor dodatka Power Pivot.
Počnimo!
DAX ćemo uokviriti oko tri vrlo važna temeljna koncepta: sintakse, funkcija i konteksta. Naravno, postoje i drugi važni koncepti u DAX-u, ali razumijevanje ova tri koncepta pružit će vam najbolji temelj za izgradnju DAX vještina.
Sintaksa
Pogledajmo prije stvaranja vlastitih formula sintaksu DAX formula. Sintaksa obuhvaća različite elemente od kojih se sastoje formula ili, jednostavnije, način na koji je formula napisana. Pogledajmo, primjerice, jednostavnu DAX formulu koja se koristi za stvaranje novih podataka (vrijednosti) za svaki redak u izračunatom stupcu pod nazivom Marža u tablici FactSales: (boje teksta formule služe samo kao ilustrativna slika)
Sintaksa formule sadrži sljedeće elemente:
- Operator znaka jednakosti (=) označava početak formule, a kada se formula izračuna, vratit će rezultat ili vrijednost. Sve formule za izračun vrijednosti započinju znakom jednakosti.
- Referentni stupac [SalesAmount] sadrži vrijednosti od kojih želimo oduzeti. Referenca stupca u formuli uvijek je okružena zagradama []. Za razliku od formula programa Excel koje se pozivaju na ćeliju, DAX formula uvijek se poziva na stupac.
- Matematički operator oduzimanja (-).
- Referentni stupac [UkupniTrošak] sadrži vrijednosti koje želimo oduzeti od vrijednosti u stupcu [IznosProdaje].
Kada pokušavate shvatiti kako čitati DAX formulu, često je korisno raščlaniti svaki element na jezik koji svakodnevno razmišljate i govorite. Ovu formulu, primjerice, možete pročitati na sljedeći način:
U tabliciStvarnaProdaja, za svaki redak u izračunatom stupcu Marža računajte (=) vrijednost oduzimanjem (-) vrijednosti u stupcu [UkupniTrošak] od vrijednosti u stupcu [IznosProdaje].
Pogledajmo još jednu vrstu formule, onu koja se koristi u mjeri:
Ova formula sadrži sljedeće elemente sintakse:
- Naziv mjere Zbroj iznosa prodaje. Formule za mjere mogu sadržavati naziv mjere, iza kojeg slijedi dvotočka, a nakon njega formula izračuna.
- Operator znaka jednakosti (=) označava početak formule izračuna. Prilikom izračuna vratit će se rezultat.
- Funkcija SUM zbraja sve brojeve u stupcu [IznosProdaje]. Kasnije ćete saznati više o funkcijama.
- Zagrada () okružuje jedan ili više argumenata. Sve funkcije zahtijevaju najmanje jedan argument. Argument prosljeđuje vrijednost funkciji.
- referencirana tablica FactSales.
- Referentni stupac [SalesAmount] u tablici FactSales. Pomoću tog argumenta funkcija SUM zna u kojem stupcu treba zbrojiti funkciju SUM.
Ovu formulu možete pročitati na sljedeći način:
Za mjeru nazvanu Zbroj iznosa prodaje izračunaj (=) zbroj vrijednosti u stupcu [IznosProdaje] tabliceStvarnaProdaja.
Kada je mjera smjestila u zonu ispuštanja vrijednosti na popisu polja zaokretne tablice, izračunava i vraća vrijednosti definirane svakom ćelijom u zaokretnoj tablici, primjerice Mobilni telefoni u SAD-u.
Obratite pozornost na to da se ta formula nekoliko razlikuje od formule koju smo koristili za izračunati stupac Marža. Konkretno, uveli smo funkciju SUM. Funkcije su unaprijed napisane formule koje olakšavaju složene izračune i manipulacije brojevima, datumima, vremenom, tekstom i još mnogo toga. Kasnije ćete saznati više o funkcijama.
Za razliku od ranijeg izračunatog stupca Marža, stupcu [SalesAmount] prethodila je tablica FactSales kojoj stupac pripada. To se naziva punokvalificiranim nazivom stupca jer uključuje naziv stupca kojem prethodi naziv tablice. Za stupce na koje se poziva ista tablica nije potrebno uvrstiti naziv tablice u formulu. Tako bi duge formule koje upućuju na mnogo stupaca mogle biti kraće i čitkije. No preporučujemo da uvijek uvrstite naziv tablice u formule mjera, čak i kada se nalazite u istoj tablici.
Napomena
Ako naziv tablice sadrži razmake, rezervirane ključne riječi ili nedopuštene znakove, naziv tablice morate staviti u jednostruke navodnike. Nazive tablica morate staviti u navodnike ako naziv sadrži znakove izvan ANSI alfanumeričkog raspona znakova, bez obzira na to podržava li vaša regionalna shema taj skup znakova.
Vrlo je važno da formule imaju ispravnu sintaksu. Ako sintaksa nije ispravna, u većini slučajeva vratit će se pogreška sintakse. U drugim slučajevima sintaksa može biti točna, ali vraćene vrijednosti možda nisu ono što ste očekivali. Power Pivot (i SQL Server Data Tools) sadrži IntelliSense, značajku koja se koristi za stvaranje sintaktički ispravnih formula tako da vam pomaže pri odabiru ispravnih elemenata.
Stvorimo jednostavnu formulu. Ovaj će vam zadatak pomoći da bolje shvatite sintaksu formule i kako vam značajka IntelliSense u traci formule može pomoći.
Zadatak: stvaranje jednostavne formule za izračunati stupac
- Ako se još ne nalazite u prozoru dodatka Power Pivot, u programu Excel na vrpci dodatka Power Pivot kliknite prozor dodatka PowerPivot.
- U prozoru dodatka Power Pivot kliknite tablicu (karticu) FactSales .
- Pomaknite se do krajnjeg desnog stupca, a zatim u zaglavlju stupca kliknite Dodaj stupac.
- Kliknite traku formule pri vrhu prozora dizajnera modela.
Pokazivač će se pojaviti na traci formule. Traka formule mjesto je na koje možete upisati formulu za izračunati stupac ili izračunato polje.
Pogledajmo nakratko tri gumba s lijeve strane trake formule.
Ta tri gumba postaju aktivna kada je pokazivač aktivan na traci formule. Krajnji lijevi gumb, X, jednostavno je gumb za otkazivanje. Slobodno je kliknite. Pokazivač se više neće prikazivati na traci formule, a gumb Otkaži i gumb za kvačice više se ne pojavljuju. Nastavite i ponovno kliknite traku formule. Gumb za odustajanje i gumb za kvačicu sada će se ponovno pojaviti. To znači da ste spremni za unos formule.
Gumb kvačice jest gumb za provjeru formule. Dok ne unesete formulu, ona ne čini mnogo. Vratit ćemo se malo kasnije.
Kliknite gumb Fx . Vidjet ćete da se pojavljuje novi dijaloški okvir; dijaloškom okviru Umetanje funkcije. Dijaloški okvir Umetanje funkcije najjednostavniji je način za početak unosa DAX formule. Funkciju ćemo dodati u formulu kada budemo stvarali mjeru nakon nekog vremena, no zasad u formulu izračunatog stupca ne morate dodavati funkciju. Nastavite i zatvorite dijaloški okvir Umetanje funkcije. - U traku formule upišite znak jednakosti =, a zatim upišite otvorenu zagradu [. Prikazat će se mali prozor sa svim stupcima u tablici FactSales. To je IntelliSense na djelu.
Budući da se izračunati stupci uvijek stvaraju u aktivnoj tablici u kojoj se nalazite, naziv tablice ne mora biti prethodni nazivom stupca. Pomaknite se dolje, a zatim dvokliknite [KoličinaProdaje]. Možete se i pomaknuti na željeni naziv stupca, a zatim pritisnuti tipku tabulatora.
Pokazivač je sada aktivan s desne strane argumenta [KoličinaProdaje]. - Upišite razmak, zatim operator oduzimanja - (znak minus), a zatim unesite još jedan razmak.
- Sada upišite još jednu otvorenu zagradu [. Ovaj put odaberite stupac [KoličinaPovrata], a zatim pritisnite enter.
Ako se prikaže pogreška, pažljivo pregledajte sintaksu. Ako je potrebno, usporedite je s prethodno opisanom formulom u izračunatom stupcu margine.
Kada pritisnete Enter da biste dovršili formulu, na traci stanja pri dnu prozora dodatka Power Pivot pojavit će se riječ Izračunavanje . To ide brzo, čak i ako ste upravo izračunali nove vrijednosti za više od tri milijuna redaka. - Desnom tipkom miša kliknite zaglavlje stupca te mu promijenite naziv u NetoProdaja.
I to je to! Upravo ste stvorili jednostavnu, ali vrlo snažnu DAX formulu. Za svaki redak u tablici FactSales formula Neto Sales izračunava vrijednost oduzimanjem vrijednosti u stupcu [KoličinaRezultata] od vrijednosti u stupcu [KoličinaProdaje]. Primijetite kako smo upravo rekli "Za svaki redak". Ovo je uvid u još jedan vrlo važan koncept u DAX-u; Kontekst retka. Dodatne informacije o kontekstu retka saznat ćete kasnije.
Prilikom unosa operatora u DAX formulu vrlo je važna vrsta podataka u argumentima koje koristite. Ako biste, primjerice, upisali sljedeću formulu, = 1 & 2, vraćena vrijednost bila bi tekstna vrijednost "12". To je zato što je operator ampersanda (&) za spajanje teksta. DAX ovu formulu tumači tako: Rezultat se izračunava tako da vrijednost 1 uzmete kao tekst, a vrijednost 2 dodate kao tekst. Ako upišete = 1 + 2, DAX će ovu formulu pročitati na sljedeći način: Rezultat izračunajte tako da uzmete brojčanu vrijednost 1 i dodate brojčanu vrijednost 2. Rezultat je naravno "3", brojčana vrijednost. DAX izračunava konačne vrijednosti ovisno o operatoru u formuli, a ne na temelju vrste podataka stupaca korištenih u argumentu. Vrste podataka u jeziku DAX vrlo su važne, ali izvan opsega ovog vodiča za brzi početak rada. Dodatne informacije o vrstama podataka i operatorima u DAX formulama potražite u članku Referenca za DAX (http://go.microsoft.com/fwlink/?LinkId=239769&clcid=0x409) na servisu Books Online.
Pokušajmo s drugim. Ovaj put stvorit ćete mjeru upisivanjem formule i pomoću značajke IntelliSense. Ne brinite se previše ako ne razumijete potpuno formulu. Ovdje je važno naučiti kako stvoriti formulu koristeći nekoliko elemenata zajedno u pravilnoj sintaksi.
Zadatak: stvaranje formule mjere
- U tablici FactSales kliknite bilo koju praznu ćeliju u području izračuna. To je područje praznih ćelija neposredno ispod tablice u prozoru dodatka Power Pivot.
- U traku formule upišite naziv Prodaja u prethodnom tromjesečju:
- Upišite znak jednakosti = da biste započeli formulu izračuna.
- Upišite prvih nekoliko slova CAL, a zatim dvokliknite funkciju koju želite koristiti. U ovoj formuli želite koristiti funkciju CALCUMENT .
- Upišite otvorenu zagradu (da biste započeli argumente koji će se prosljeđivati funkciji CALCUMENT).
Primijetit ćete da nakon upisivanja otvorene oble IntelliSense prikazuje argumente potrebne za funkciju CALCULATE. O argumentima ćete naučiti uskoro. - Upišite prvih nekoliko slova tablice FactSales , a zatim na padajućem popisu dvokliknite FactSales[Sales].
- Upišite zarez (,) da biste odredili prvi filtar, zatim upišite PRE, a potom dvokliknite funkciju PREVIOUSQUARTER .
Nakon odabira funkcije PREVIOUSQUARTER pojavit će se još jedna lijeva zagrada, što upućuje na to da je potreban drugi argument. ovaj put za funkciju PREVIOUSQUARTER. - Upišite prvih nekoliko slova Dim, a zatim dvokliknite DimDate[KljučDatuma].
- Zatvorite argument koji se prosljeđuje u funkciju PREVIOUSQUARTER i u funkciju CALCULATE upisivanjem dvije zatvorene zagrade )).
Formula bi sada trebala izgledati ovako:
Prodaja u prethodnom tromjesečju:=CALCULATE(StvarnaProdaja[Prodaja], PREVIOUSQUARTER(DimDate[KljučDatuma])) - Kliknite gumb za provjeru formule na traci formule da biste provjerili valjanost formule. Ako se prikaže pogreška, provjerite svaki element sintakse.
Uspjeli ste! Upravo ste stvorili mjeru pomoću jezika DAX, i to nije bila jednostavna. Ta formula izračunava ukupnu prodaju za prethodno tromjesečje, ovisno o filtrima primijenjenima u zaokretnoj tablici ili zaokretnom grafikonu.
Upravo ste se upoznali s nekoliko važnih aspekata DAX formula. Prvo, ta je formula uključivala dvije funkcije. Primijetite da je funkcija PREVIOUSQUARTER ugniježđena kao argument proslijeđen funkciji CALCULATE . DAX formule mogu sadržavati do 64 ugniježđene funkcije. Malo je vjerojatno da bi formula sadržavala toliko ugniježđenih funkcija. Zapravo, takvu formulu bi bilo vrlo teško izraditi i ispraviti pogreške, a vjerojatno ne bi bila ni jako brza.
U ovoj ste formuli koristili i filtre. Filtri sužavaju opseg izračuna. U ovom ste slučaju odabrali jedan filtar kao argument, a zapravo je druga funkcija. Dodatne informacije o filtrima potražite poslije.
Naposljetku, upotrijebili ste funkciju CALCUMENT. Ovo je jedna od najmoćnijih funkcija u DAX-u. Tijekom stvaranja podatkovnih modela i stvaranja složenijih formula vjerojatno ćete mnogo puta koristiti ovu funkciju. Rasprava o funkciji CALCULATE izvan je opsega ovog vodiča za brzi početak rada, ali kako se vaše znanje o DAX-u bude povećavalo, obratite posebnu pozornost na nju.
Napomena
Da biste u DAX formulama koristili funkcije inteligencije vremena, obično morate navesti jedinstveni stupac datuma pomoću dijaloškog okvira Označi kao tablicu datuma. U radnoj knjizi Contoso DAX formula Samples.xlsx stupac DatumDatuma odabran je kao jedinstveni stupac datuma.
Dodatni kredit
Možda se pitate: "Koja je najjednostavnija DAX formula koju mogu stvoriti?" Pa, odgovor na to je 'formula koju ne morate'. I to je upravo ono što možete učiniti korištenjem standardne agregacijske funkcije u mjeri. Gotovo svaki podatkovni model mora filtrirati i izračunavati na temelju agregiranih podataka. Na primjer, funkcija SUM u mjeri Zbroj iznosa prodaje koju ste ranije vidjeli koristi se za zbrajanje svih brojeva u određenom stupcu. DAX obuhvaća i nekoliko drugih funkcija za zbrajanje vrijednosti. Pomoću značajke automatskog zbroja možete automatski stvoriti formule pomoću standardnih agregacija.
Zadatak s dodatnim kreditom: stvaranje formule mjere pomoću značajke automatskog zbroja
- U tablici FactSales pomaknite se do stupca KoličinaPovrata, a zatim kliknite zaglavlje stupca da biste odabrali cijeli stupac.
- Na kartici Polazno na vrpci u grupi Izračuni kliknite gumb Automatski zbroj .
Kliknite strelicu prema dolje pokraj mogućnosti Automatski zbroj, a zatim kliknite Prosjek (obratite pozornost na ostale standardne agregacijske funkcije koje možete koristiti).
Odmah se stvara nova mjera s nazivom Prosjek od KoličinaRezultata, nakon čega slijedi formula =AVERAGE([KoličinaRezultata]).
Nije li to bilo jednostavno? Naravno, neće sve formule koje stvorite biti tako jednostavne. No pomoću značajke automatskog zbroja možete stvarati brze i jednostavne formule pomoću standardnih agregacijskih izračuna.
To bi vam trebalo pomoći da prilično dobro razumijete sintaksu koja se koristi u DAX formulama. Upoznali ste se i s nekim stvarno sjajnim značajkama kao što su IntelliSense i automatski zbroj za stvaranje brzih, jednostavnih i točnih formula. Naravno, o sintaksi možete naučiti još mnogo toga. Bolje mjesto da saznate više jest DAX priručnik ili SQL Books Online.
Brzi kviz sintakse
- Funkcija gumba na traci formule
- Što se uvijek okružuje oko naziva stupca u DAX formuli?
- Kako biste napisali formulu za sljedeće:
U tablici DimProduct za svaki redak u izračunatom stupcu JediničnaMarža izračunavate vrijednost oduzimanjem vrijednosti u stupcu JediničniTrošak od vrijednosti u stupcu JediničnaCijena?
Odgovori su navedeni na kraju ove teme.
Funkcije
Funkcije su unaprijed definirane formule koje izvode izračune pomoću određenih vrijednosti, koje se zovu argumenti, u točno zadanom redoslijedu ili strukturi. Argumenti mogu biti druge funkcije, druga formula, reference stupca, brojevi, tekst, logičke vrijednosti kao što su TRUE ili FALSE ili konstante.
DAX obuhvaća sljedeće kategorije funkcija: funkcije datuma i vremena, informacije, logičke, matematičke, statističke, tekstne i vremenske inteligencije. Ako ste upoznati s funkcijama u formulama programa Excel, mnoge će funkcije u programu DAX izgledati slično vama. No DAX funkcije jedinstvene su na sljedeće načine:
- DAX funkcija uvijek se poziva na cijeli stupac ili tablicu. Ako želite koristiti samo određene vrijednosti iz tablice ili stupca, u formulu možete dodati filtre.
- Ako morate prilagođavati izračune redak po redak, DAX nudi funkcije koje omogućuju korištenje trenutne vrijednosti retka ili povezane vrijednosti kao vrste argumenta radi izvođenja izračuna koji ovise o kontekstu. Više o kontekstu saznat ćete kasnije.
- DAX sadrži brojne funkcije koje vraćaju tablicu, a ne vrijednost. Tablica se ne prikazuje, ali služi za pružanje ulaznih podataka drugim funkcijama. Možete, primjerice, dohvatiti tablicu i prebrojati pojedinačne vrijednosti u njoj ili pak izračunati dinamičke zbrojeve u filtriranim tablicama ili stupcima.
- DAX obuhvaća razne funkcije inteligencije vremena. Te funkcije omogućuju definiranje ili odabir raspona datuma te izvođenje dinamičkih izračuna na temelju njih. Primjerice, možete usporediti zbrojeve iz paralelnih razdoblja.
Ponekad je teško odrediti koje je funkcije potrebno koristiti u formuli. Power Pivot i dizajner tabličnog modela u programu SQL Server Data Tools sadrže značajku Umetanje funkcije, dijaloški okvir koji olakšava odabir funkcija po kategoriji i nudi kratke opise za svaku funkciju.
Stvorimo novu formulu koja sadrži funkciju koju ćete odabrati pomoću značajke Umetanje funkcije:
Zadatak: dodavanje funkcije u formulu pomoću funkcije Insert
- U tablici FactSales pomaknite se do krajnjeg desnog stupca, a zatim u zaglavlju stupca kliknite Dodaj stupac.
- U traku formule upišite znak jednakosti, =.
- Kliknite gumb Umetni funkciju .
Time ćete otvoriti dijaloški okvir Umetanje funkcije . - U dijaloškom okviru Umetanje funkcije kliknite okvir s popisom Odabir kategorije . Po zadanom je odabrano Sve , a sve funkcije u kategoriji Sve navedene su u nastavku. To je mnogo funkcija, pa ćete ih htjeti filtrirati da biste lakše pronašli vrstu funkcije koju tražite.
- Za ovu formulu želite vratiti neke podatke koji već postoje u drugoj tablici. Za to ćete koristiti funkciju u kategoriji Filtar. Nastavite i kliknite kategoriju filtra , a zatim se u odjeljku Odabir funkcije pomaknite dolje i dvokliknite funkciju POVEZANO. Kliknite U redu da biste zatvorili dijaloški okvir Umetanje funkcije .
- Pomoću značajke IntelliSense možete pronaći i odabrati stupac DimChannel[NazivKanala].
- Zatvorite formulu pa pritisnite Enter.
- Kada pritisnete Enter da biste dovršili formulu, na traci stanja pri dnu prozora dodatka Power Pivot pojavit će se riječ Izračunavanje. Sada ćete vidjeti da ste upravo stvorili novi stupac u tablici FactSales s informacijama o kanalu iz tablice DimChannel.
- Preimenujte stupac Kanal.
Formula bi trebala izgledati ovako: =RELATED(DimChannel[ChannelName])
Upravo ste se upoznali s još jednom vrlo važnom funkcijom u DAX-u, funkcijom RELATED . Funkcija RELATED vraća vrijednosti iz druge tablice. Možete koristiti RELATED pod uvjetom da postoji odnos između tablice u kojoj se trenutno nalazite i tablice koja sadrži vrijednosti koje želite dohvatiti. Naravno, funkcija RELATED ima goleme mogućnosti. U tom slučaju sada u tablicu FactSales možete uvrstiti prodajni kanal za svaku prodaju. Sada možete sakriti tablicu DimChannel s popisa polja zaokretne tablice, što olakšava navigaciju i prikaz samo najvažnijih informacija koje su vam zaista potrebne. Slično gore opisanoj funkciji CALCULATE, funkcija RELATED vrlo je važna i vjerojatno ćete je mnogo puta koristiti.
Kao što vidite, funkcije u jeziku DAX omogućuju stvaranje vrlo naprednih formula. Dotakli smo se samo osnova funkcija. Kako se vaše DAX vještine budu poboljšavale, stvarat ćete formule pomoću mnogo različitih funkcija. Jedno od najboljih mjesta za saznati pojedinosti o svim DAX funkcijama jest referenca za izraze za analizu podataka (DAX).
Brzi kviz o funkcijama
- Na što se funkcija uvijek poziva?
- Može li formula sadržavati više funkcija?
- Koju biste kategoriju funkcija koristili za združivanje dva tekstna niza u jedan?
Odgovori su navedeni na kraju ove teme.
Kontekst
Kontekst je jedan od najvažnijih DAX koncepata za razumijevanje. Postoje dvije vrste konteksta u jeziku DAX: kontekst retka i kontekst filtra. Prvo ćemo pogledati kontekst retka.
Kontekst retka
Kontekst retka najjednostavnije je zamisliti kao trenutni redak. Sjećate se, primjerice, izračunatog stupca margine koji ste ranije vidjeli prilikom upoznavanja sa sintaksom? Formula =[IznosProdaje] - [UkupniTrošak] izračunava vrijednost u stupcu Marže za svaki redak tablice. Vrijednosti za svaki redak izračunavaju se iz vrijednosti u druga dva stupca, [SalesAmount] i [TotalCost] u istom retku. DAX može izračunati vrijednosti za svaki redak u stupcu Marža zato što sadrži kontekst: DAX za svaki redak uzima vrijednosti iz stupca [UkupniTrošak] i oduzima ih od vrijednosti u stupcu [IznosProdaje].
U odabranoj ćeliji prikazanoj u nastavku vrijednost 49,54 kn u trenutnom retku izračunata je oduzimanjem vrijednosti 51,54 kn u stupcu [UkupniTrošak] od vrijednosti 101,08 dolara u stupcu [IznosProdaje].
Kontekst retka ne odnosi se samo na izračunate stupce. Kontekst retka primjenjuje se i svaki put kada formula sadrži funkciju koja primjenjuje filtre radi prepoznavanja pojedinačnog retka u tablici. Funkcija će po svojoj prirodi primijeniti kontekst retka za svaki redak tablice preko kojeg filtrira. Ta se vrsta konteksta retka najčešće odnosi na mjere.
Kontekst filtra
Kontekst filtra malo je teže razumjeti nego kontekst retka. Kontekst filtra možete zamisliti kao: Jedan ili više filtara primijenjenih u izračunu koji određuje rezultat ili vrijednost.
Kontekst filtra ne postoji umjesto konteksta retka; Primjenjuje se uz kontekst retka. Da biste, primjerice, dodatno suzili vrijednosti koje će biti uvrštene u izračun, možete primijeniti kontekst filtra koji ne samo da određuje kontekst retka, već i samo određenu vrijednost (filtar) u kontekstu tog retka.
Kontekst filtra lako je vidljiv u zaokretnim tablicama. Kada, primjerice, dodate UkupniTrošak u područje Vrijednosti, a zatim dodate Godina i Regija u redak ili stupce, definirate kontekst filtra koji odabire podskup podataka na temelju dane godine i regije.
Zašto je kontekst filtra toliko važan za DAX? Budući da se kontekst filtra najjednostavnije može primijeniti dodavanjem oznaka stupaca i redaka te rezača u zaokretnu tablicu, kontekst filtra može se primijeniti i u DAX formuli definiranjem filtra pomoću funkcija kao što su ALL, RELATED, FILTER, CALCULATE, by relationships te pomoću drugih mjera i stupaca. Pogledajmo, na primjer, sljedeću formulu u mjeri pod nazivom ProdajaTrgovine:
Jasno je da je ova formula složenija od nekih drugih formula koje ste vidjeli. No, da bismo bolje razumjeli tu formulu, možemo je raščlaniti, kao što smo to činili s drugim formulama.
Ova formula sadrži sljedeće elemente sintakse:
- Naziv mjere StoreSales, nakon kojeg slijedi dvotočka :.
- Operator znaka jednakosti (=) označava početak formule.
- Funkcija CALCULATE procjenjuje izraz kao argument u kontekstu koji su izmijenili navedeni filtri.
- Zagrada () okružuje jedan ili više argumenata.
- Mjera [Prodaja] u istoj tablici kao i izraz. Mjera prodaje sadrži formulu: =SUM(StvarnaProdaja[IznosProdaje]).
- Filtre su odvojene zarezom (;).
- Referentni stupac i određena vrijednost, DimChannel[NazivKanala] ="Trgovina", kao filtar.
Ova će formula osigurati da se samo vrijednosti prodaje koje definira mjera prodaje kao filtar izračunavaju samo za retke u stupcu DimChannel[NazivKanala] s vrijednošću "Trgovina" kao filtar.
Kao što možete zamisliti, mogućnost definiranja konteksta filtra unutar formule ima ogromne i snažne mogućnosti. Mogućnost pozivanja samo na određenu vrijednost u povezanoj tablici samo je jedan od takvih primjera. Ne brinite ako odmah ne razumijete potpuno kontekst. Prilikom stvaranja vlastitih formula bolje ćete shvatiti kontekst i zašto je on toliko važan u jeziku DAX.
Kontekstni brzi kviz
- Koje su dvije vrste konteksta?
- Što je kontekst filtra?
- Što je kontekst retka?
Odgovori su navedeni na kraju ove teme.
Sažetak
Sada kada ste osnovno razumjeli najvažnije koncepte jezika DAX, možete sami početi stvarati DAX formule za izračunate stupce i mjere. DAX doista može biti malo težak za naučiti, ali dostupno vam je mnogo resursa. Nakon što ste nekoliko puta pročitali ovu temu i isprobali nekoliko vlastitih formula, možete saznati više o drugim DAX konceptima i formulama koji vam mogu pomoći u rješavanju vlastitih poslovnih problema. Dostupni su vam brojni resursi za DAX u pomoći za Power Pivot, mrežnoj knjizi SQL Server Books Online, studijama i blogovima Microsoftovih stručnjaka i vodećih stručnjaka za poslovno obavještavanje. DAX Resource Center Wiki (http://social.technet.microsoft.com/wiki/contents/articles/dax-resource-center.aspx) sjajno je mjesto za početak. Referenca za izraze za analizu podataka (DAX) također je odličan resurs. Obavezno je spremite u favorite.
DAX u dokumentaciji o tabličnom modelu poslovnog obavještavanja koja je dostupna za preuzimanje (http://go.microsoft.com/fwlink/?LinkID=237472&clcid=0x409) nudi detaljniji pregled ovdje predstavljenih koncepata, kao i mnogih drugih naprednih koncepata i formula. I u ovoj se dokumentaciji koristi ista Formulas.xlsx radnu knjigu koju već imate DAX tvrtke Contoso.
Odgovori na brzi izazov
Sintaksa:
- Otvara značajku Umetanje funkcije.
- Zagrade [].
- =[JediničnaCijena] - [JediničniTrošak]
Funkcije:
- Tablica i stupac.
- Da. Formula može sadržavati do 64 ugniježđene funkcije.
- Funkcije teksta.
Kontekst:
- Kontekst retka i kontekst filtra.
- Jedan ili više filtara u izračunu koji određuje jednu vrijednost.
- Trenutni redak.