Opi DAX:n perusteet Power BI Desktopissa

Power BI Desktopin uudet käyttäjät voivat käyttää tätä artikkelia nopeana ja helppona esittelynä siitä, miten voit ratkaista monia peruslaskutoimituksia ja tietojen analysointiongelmia Daxin (Data Analysis Expressions) avulla. Artikkeli sisältää käsitteellisiä tietoja, joukon suoritettavia tehtäviä ja lähtötasotestin, jolla voit testata, mitä olet oppinut. Kun olet suorittanut tämän artikkelin, sinulla pitäisi olla hyvä käsitys DAXin tärkeimmistä peruskäsitteistä.

Mikä DAX on?

DAX on kokoelma funktioita, operaattoreita ja vakioita, joita voidaan käyttää kaavassa tai lausekkeessa yhden tai useamman arvon laskemiseen ja palauttamiseen. DAX auttaa luomaan uusia tietoja mallissa jo olevista tiedoista.

Miksi DAX on tärkeä?

Uuden Power BI Desktop -tiedoston luominen ja tietojen tuominen siihen on helppoa. Voit myös luoda raportteja, jotka näyttävät arvokasta tietoa käyttämättä ollenkaan DAX-kaavoja. Mutta entä jos sinun tarvitsee analysoida kaikkien tuoteluokkien kasvuprosenttia ja eri päivämääräjoukkoja? Tai sinun on laskettava vuosittainen kasvu verrattuna markkinoiden kehitykseen? DAX-kaavat tarjoavat tämän ominaisuuden ja monia muita tärkeitä ominaisuuksia. Opit luomaan tehokkaita DAX-kaavoja, jotta voit käyttää tietojasi mahdollisimman tehokkaasti. Kun saat tarvitsemasi tiedot, voit aloittaa todellisten liiketoimintaongelmien ratkaisemisen, jotka vaikuttavat tulokseen.

Edellytykset

Kaavojen luominen Microsoft Excelissä saattaa olla sinulle jo tuttua, ja tästä tietämyksestä on hyötyä DAXin ymmärtämisessä. Vaikka sinulla ei olisi kokemusta Excel-kaavoista, tässä kuvatut käsitteet auttavat sinua alkuun DAX-kaavojen luomisessa ja oikeiden bi-ongelmien ratkaisemisessa heti.

Painopisteenä on ymmärtää laskutoimituksissa käytettäviä DAX-kaavoja ja erityisesti mittareissa ja lasketuissa sarakkeissa. Power BI Desktopin, tietojen tuonnin ja kenttien lisäämisen raporttiin tulisi olla sinulle jo tuttuja, ja sinun tulisi tuntea myös peruskäsitteet mittari ja laskettu sarake.

Esimerkkityökirja

Paras tapa oppia DAX on luoda joitakin peruskaavoja, käyttää niitä todellisten tietojen kanssa ja nähdä tulokset itse. Tässä esitetyissä esimerkeissä ja tehtävissä käytetään Contoso Sales Sample for Power BI Desktop -tiedostoa. Tämä mallitiedosto on sama, jota käytetään Opetusohjelma: Omien mittarien luominen Power BI Desktopissa -artikkelissa.

Aloitetaan

Luomme ymmärryksemme DAX:ista kolmen peruskäsitteen ympärille: syntaksi, funktiot ja konteksti. DAX sisältää muitakin tärkeitä käsitteitä, mutta näiden kolmen käsitteen ymmärtäminen tarjoaa parhaan perustan DAX-taidoillesi.

Syntaksi

Ennen kuin luot omia kaavoja, tutustutaan DAX-kaavan syntaksiin. Syntaksi sisältää eri elementtejä, jotka muodostavat kaavan, tai yksinkertaisesti sen, miten kaava kirjoitetaan. Tässä on esimerkiksi yksinkertainen mittarin DAX-kaava:

Näyttökuva DAX-kaavasta, joka näyttää osoittimet yksittäisiin syntaksielementteihin.

Tämä kaava sisältää seuraavat syntaksielementit:

V. Mittarin nimi Total Sales.

B. Yhtäläisyysmerkkioperaattori (=), joka ilmaisee kaavan alun. Kun lasku on laskettu, se palauttaa tuloksen.

C. DAX-funktio SUM, joka laskee yhteen kaikki Sales[SalesAmount]-sarakkeen luvut. Funktioista on lisätietoja jäljempänä.

D. Kaarisulkeet (), jotka ympäröivät lauseketta, joka sisältää yhden tai useampia argumentteja. Useimmat funktiot vaativat vähintään yhden argumentin. Argumentti välittää arvon funktiolle.

E. Viitattu taulukko Sales-taulukko.

F. Viitattu sarake [SalesAmount] Sales-taulukossa. Tämän argumentin avulla SUM-funktio tietää, mihin sarakkeeseen SUM koostetaan.

Kun yrität ymmärtää DAX-kaavaa, on usein hyödyllistä eritellä kukin elementit kielellä, jolla ajattelet ja jota puhut päivittäin. Voit esimerkiksi lukea tämän kaavan seuraavasti:

Mittarille nimeltä Total Sales, laske (=) Sales-taulukon [SalesAmount ] -sarakkeen arvojen SUMMA (SUM).

Kun tämä mittayksikkö lisätään raporttiin, se laskee ja palauttaa arvoja laskemalla yhteen kaikkien muiden sisällyttämämme kenttien myyntimäärät, esimerkiksi Yhdysvaltojen Solu-Puhelin.

Saatat ajatella: "Eikö tämä mittari tee saman kuin jos vain lisäisin SalesAmount-kentän omaan raporttiini?" Kyllä vain. Mutta on olemassa hyvä syy sille, miksi kannattaa luoda oma mittari, joka laskee yhteen SalesAmount-kentän arvoja: voimme käyttää sitä argumenttina muissa kaavoissa. Tämä ratkaisu saattaa nyt vaikuttaa hieman sekavalta, mutta kun DAX-kaavataitosi kasvavat, tämän mittayksikön tietäminen tekee kaavoistasi ja mallistasi tehokkaampia. Tulet itse asiassa näkemään Total Sales -mittarin argumenttina muissa kaavoissa myöhemmin.

Käydäänpä seuraavaksi uudestaan muutamia muita tätä kaavaa liittyviä seikkoja. Toimme erityisesti käyttöön funktion SUM. Funktiot ovat ennalta laadittuja kaavoja, jotka helpottavat monimutkaisia laskutoimituksia ja käsittelytoimintoja esimerkiksi numeroiden, päivämäärien, ajan ja tekstin kanssa. Funktioista on lisätietoja jäljempänä.

Näet myös, että sarakkeen nimeä [SalesAmount] edelsi Sales-taulukko, johon sarake kuuluu. Tätä nimeä kutsutaan sarakkeen täydelliseksi nimeksi, koska se sisältää sarakkeen nimen, jonka edessä on taulukon nimi. Samassa taulukossa viitatut sarakkeet eivät edellytä taulukon nimen sisällymistä kaavaan, jolloin pitkistä kaavoista, jotka viittaavat moniin sarakkeisiin, saadaan lyhempiä ja helpommin luettavissa olevia. On kuitenkin hyvä sisällyttää taulukon nimi mittarikaavoihin, myös silloin kun ne ovat samassa taulukossa.

Muistiinpano

Jos taulukon nimessä on välilyöntejä, varattuja avainsanoja tai ei-sallittuja merkkejä, sinun on kirjoitettava taulukon nimi puolilainausmerkkien sisään. Taulukoiden nimet on kirjoitettava lainausmerkkien sisään myös, jos nimi sisältää aakkosnumeeriseen ANSI-merkkialueeseen kuuluvia merkkejä, huolimatta siitä, tukevatko aluekohtaiset asetukset merkistöä vai ei.

On tärkeää, että kaavojen syntaksi on oikea. Jos syntaksi ei ole oikea, useimmissa tapauksissa palautetaan syntaksivirhe. Muissa tapauksissa syntaksi voi olla oikea, mutta palautetut arvot eivät välttämättä ole sellaisia, joita odotit. Power BI Desktopin DAX-editori sisältää ehdotusominaisuuden, jota käytetään syntaktisesti oikeiden kaavojen luomiseen auttamalla valitsemaan oikeat elementit.

Luodaanpa esimerkkikaava. Tämä tehtävä auttaa sinua ymmärtämään paremmin kaavan syntaksia ja sitä, miten kaavarivin ehdotustoiminto voi auttaa sinua.

Tehtävä: mittarin kaavan luominen

  1. Lataa ja avaa Contoso Sales Sample Power BI Desktop -tiedosto.

  2. Napsauta raporttinäkymän kenttäluettelossa hiiren kakkospainikkeella Sales-taulukkoa ja valitse sitten Uusi mittari.

  3. Korvaa kaavarivillä oleva Measure (Mittari ) -nimi kirjoittamalla uusi mittarin nimi Previous Quarter Sales (Edellisen neljänneksen myynti).

  4. Kirjoita yhtäläisyysmerkin jälkeen ensimmäiset kirjaimet CAL ja kaksoisnapsauta sitten haluamaasi funktiota. Tässä kaavassa haluat käyttää CALCULATE-funktiota.

    CALCULATE-funktiolla suodatat määrät, jotka haluamme laskea yhteen argumentilla, jonka välitämme CALCULATE-funktioon. Tätä funktiotyyppiä kutsutaan sisäkkäisiksi funktioiksi. CALCULATE-funktiolla on vähintään kaksi argumenttia. Ensimmäinen on arvioitava lauseke ja toinen suodatin.

  5. Kirjoita CALCULATE-funktion alkusulkeen ( jälkeen SUM ja sen toinen alkusulje (.

    Seuraavaksi välitämme argumentin SUM-funktioon.

  6. Ala kirjoittaa Sal, ja valitse sitten Sales[SalesAmount], ja lisää sen jälkeen loppusulje ).

    Tämä vaihe luo CALCULATE-funktiolle ensimmäisen lausekeargumentin.

  7. Kirjoita pilkku (,) ja lisää sen jälkeen välilyönti, joka määrittää ensimmäisen suodattimen, ja kirjoita sitten PREVIOUSQUARTER.

    Käytät PREVIOUSQUARTER-aikatietofunktiota suodattaaksesi SUM-tulokset edellisellä neljänneksellä.

  8. Kirjoita PREVIOUSQUARTER-funktion alkusulkeen ( jälkeen Calendar[DateKey].

    PREVIOUSQUARTER-funktiolla on yksi argumentti, yhtenäisen päivämääräalueen sisältävä sarake. Tässä tapauksessa kyseessä on Kalenteri-taulukon DateKey-sarake.

  9. Sulje PREVIOUSQUARTER-funktioon ja CALCULATE-funktioon välitettyjen argumenttien lisäksi kaksi loppusuljetta ))).

    Kaavan pitäisi nyt näyttää tältä:

    Previous Quarter Sales = CALCULATE(SUM(Sales[SalesAmount]), PREVIOUSQUARTER(Calendar[DateKey]))

  10. Valitse valintamerkki Valintamerkkikuvake kaavarivillä tai paina Enter vahvistaaksesi kaavan ja lisätäksesi sen Myynti-taulukkoon.

Sinä teit sen! Olet juuri luonut monimutkaisen mittarin DAXin avulla. Tämä kaava laskee edellisen vuosineljänneksen kokonaismyynnin raportissa käytettyjen suodattimien mukaan. Voimme esimerkiksi sijoittaa SalesAmount-mittarin ja uuden Previous Quarter Sales -mittarin Sales-taulukosta klusteroituun pylväskaavioon. Lisää sitten Kalenteri-taulukosta Vuosi osittajana ja valitse 2011. Lisää sen jälkeen QuarterOfYear toiseksi osittajaksi ja valitse 4. Näyttöön tulee tällainen kaavio:

Previous Quarter Sales- ja SalesAmount-kaavio

Muista, että mallimalli sisältää vain pienen määrän myyntitietoja 1.1.2011–19.1.2013. Jos valitset vuoden tai vuosineljänneksen, jossa SalesAmount-summaa ei voi laskea yhteen, tai jos uusi mittari ei voi laskea nykyisen tai edellisen vuosineljänneksen myyntitietoja, kyseisen jakson tietoja ei näytetä. Jos esimerkiksi valitset vuoden 2011 vuoden ja 1 VuosineljänneksenOfYear-kohteelle, Edellisen neljänneksen myynnistä ei näytetä tietoja, koska vuoden 2010 neljännelle vuosineljännekselle ei ole tietoja.

Olet tutustunut useisiin tärkeisiin DAX-kaavoihin:

  • Tämä kaava sisälsi kaksi funktiota. Aikatietofunktio PREVIOUSQUARTER upotetaan sisäkkäin argumenttina, joka välitetään suodatusfunktioon CALCULATE.

    DAX-kaavat voivat sisältää jopa 64 sisäkkäistä funktiota. On epätodennäköistä, että mikään kaava koskaan sisältäisi näin paljon sisäkkäisiä funktioita. Itse asiassa tällaisen kaavan luominen ja sen virheenkorjaus olisi vaikeaa, eikä se todennäköisesti olisi myöskään nopea.

  • Tässä kaavassa käytit myös suodattimia. Suodattimet rajaavat sen, mitä lasketaan. Tässä tapauksessa valitsit yhden suodattimen argumentiksi, joka on itse asiassa toisen funktion tulos. Saat lisätietoja suodattimista myöhemmin.

  • Käytit CALCULATE-funktiota. Tämä funktio on yksi DAX-kaavan tehokkaimmista funktioista. Laatiessasi malleja ja luodessasi monimutkaisempia kaavoja tulet todennäköisesti käyttämään tätä funktiota monta kertaa. Vaikka tarkempi CALCULATE-funktion käsittely on tämän artikkelin aihealueen ulkopuolella, DAX-osaamisesi kasvaessa kiinnitä siihen erityistä huomiota.

Esimerkkitieto syntaksista

  1. Mitä tämä kaavarivin painike tekee?

    Painikkeen valinta

  2. Mitä DAX-kaavassa on aina sarakkeen nimen ympärillä?

Vastaukset ovat tämän artikkelin lopussa.

Funktiot

Funktiot ovat ennalta määritettyjä kaavoja, jotka suorittavat laskutoimituksia käyttämällä erityisiä arvoja eli argumentteja tietyssä järjestyksessä tai tietyssä rakenteessa. Argumentit voivat olla muita funktioita, muita kaavoja, lausekkeita, sarakeviittauksia, numeroita, tekstiä, loogisia arvoja, kuten TOSI tai EPÄTOSI, tai vakioita.

DAX sisältää seuraavat funktioluokat: päivämäärä- ja aikafunktiot, aikatietofunktiot, tietofunktiot, loogiset, matemaattiset ja tilastolliset funktiot, tekstifunktiot, pääkohde-/alikohdefunktiot ja muut funktiot. Jos funktiot ovat sinulle tuttuja Excel-kaavoista, monet DAX-kielen funktiot vaikuttavat samankaltaisilta. DAX-funktiot ovat kuitenkin yksilöllisiä seuraavilla tavoilla:

  • DAX-funktio viittaa aina täydelliseen sarakkeeseen tai taulukkoon. Jos haluat käyttää vain tiettyjä arvoja taulukosta tai sarakkeesta, voit lisätä kaavaan suodattimia.

  • Jos laskutoimituksia on mukautettava rivikohtaisesti, saat DAX-funktioita, joiden avulla voit käyttää nykyistä riviarvoa tai liittyvää arvoa eräänlaisena argumenttina kontekstiin perustuvien laskutoimitusten suorittamiseksi. Kontekstista on lisätietoja jäljempänä.

  • DAX sisältää monia funktioita, jotka palauttavat arvon asemesta taulukon. Taulukkoa ei näytetä, mutta sitä käytetään luomaan syötteitä muille funktioille. Voit esimerkiksi noutaa taulukon ja laskea sitten sen erilliset arvot tai laskea dynaamisia summia suodatettavissa taulukoissa tai sarakkeissa.

  • DAX sisältää erilaisia aikatietofunktioita. Näiden funktioiden avulla voit määrittää tai valita päivämääräalueita ja suorittaa niihin perustuvia dynaamisia laskutoimituksia. Voit esimerkiksi verrata rinnakkaisten jaksojen summia.

  • Excelissä on suosittu funktio, PHAKU. DAX-funktiot eivät ota solua tai solualuetta viitteeksi, kuten PHAKU tekee Excelissä. DAX-funktiot ottavat viitteeksi sarakkeen tai taulukon. Pidä mielessä, että Power BI Desktopissa työskentelet relaatiotietomallin kanssa. Arvojen hakeminen toisesta taulukosta on helppoa, ja useimmissa tapauksissa sinun ei tarvitse luoda kaavoja lainkaan.

    Kuten näet, DAX-funktioiden avulla voit luoda tehokkaita kaavoja. Käsittelimme vain funktioiden perusteita. DAX-taitojen kasvaessa opit luomaan kaavoja, joissa käytät monia eri funktioita. Yksi parhaimmista paikoista saada tarkempia tietoja kustakin DAX-funktiosta on DAX Function Reference -artikkeli.

Toiminnot – pikavisuo

  1. Mihin funktio aina viittaa?
  2. Voiko kaava sisältää useamman kuin yhden funktion?
  3. Minkä funktioluokan avulla yhdistäisit kaksi tekstimerkkijonoa yhdeksi merkkijonoksi?

Vastaukset ovat tämän artikkelin lopussa.

Konteksti

Konteksti on yksi dax-käsitteiden tärkeimmistä ymmärrettävistä käsitteistä. DAX-kielessä on kahdentyyppisiä kontekstulia: rivikonteksti ja suodatinkonteksti. Tarkastelemme ensin rivikontekstia.

Rivikonteksti

Rivikonteksti ajatellaan helpoimmin nykyisenä rivinä. Sitä käytetään aina, kun kaavassa on funktio, joka käyttää suodattimia taulukon yksittäisen rivin tunnistamiseen. Funktio käyttää luontaisesti rivikontekstia jokaiselle sen taulukon riville, jota se suodattaa. Tämäntyyppistä rivikontekstia sovelletaan useimmiten mittareihin.

Suodatinkonteksti

Suodatinkonteksti on hieman vaikeampi ymmärtää kuin rivikonteksti. Suodatinkontekstin voi helpoiten ajatella seuraavasti: Yksi tai useampi suodatin, jota käytetään tuloksen tai arvon määrittävissä laskutoimituksissa.

Suodatinkontekstia ei käytetä rivikontekstin sijasta. sitä käytetään sen sijaan rivikontekstin lisäksi. Jos esimerkiksi haluat rajata laskutoimitukseen sisällytettävien arvojen määrää tarkemmin, voit käyttää suodatinkontekstia, joka määrittää paitsi rivikontekstin myös tietyn arvon (suodattimen) kyseisessä rivikontekstissa.

Suodatinkonteksti näkyy helposti raporteissasi. Kun esimerkiksi lisäät visualisointiin TotalCost-arvon ja lisäät sitten vuoden ja alueen, määrität suodatinkontekstin, joka valitsee tietojen alijoukon tietyn vuoden ja alueen perusteella.

Miksi suodatinkonteksti on niin tärkeä DAX-kielelle? Olet nähnyt, että suodatinkontekstia voidaan käyttää lisäämällä kenttiä visualisointiin. Suodatinkontekstia voidaan käyttää myös DAX-kaavassa määrittämällä suodatin funktioilla, kuten ALL, RELATED, FILTER, CALCULATE, suhteiden perusteella ja muilla mittareilla ja sarakkeilla. Tarkastellaanpa esimerkiksi seuraavaa kaavaa Store Sales -nimisessa mittarissa:

Store Sales -mittari

Tämä kaava on helpompi ymmärtää, kun se eritellä samalla tavalla kuin muut kaavat.

Tämä kaava sisältää seuraavat syntaksielementit:

V. Mittarin nimi Store Sales.

B. Yhtäläisyysmerkkioperaattori (=), joka ilmaisee kaavan alun.

C. CALCULATE-funktio, joka laskee argumenttina lausekkeen kontekstissa, jota on muutettu määritetyillä suodattimilla.

D. Kaarisulkeet (), jotka ympäröivät lauseketta, joka sisältää yhden tai useampia argumentteja.

E. Mittari [Total Sales] samassa taulukossa lausekkeena. Total Sales -mittarin kaava on: =SUM(Sales[SalesAmount]).

F. Pilkku (,), joka erottaa ensimmäisen lausekeargumentin suodatinargumentista.

G. Täydellinen viitattu sarake Channel[ChannelName]. Tämä on rivikontekstimme. Jokainen rivi tässä sarakkeessa määrittää kanavan, kuten Store tai Online.

H. Tietty arvo, Store, suodattimena. Tämä on suodatinkontekstimme.

Tämä kaava varmistaa, että vain Total Sales -mittarin suodattimena määrittämät myyntiarvot lasketaan vain Channel[ChannelName]-sarakkeen sellaisille riveille, joissa on suodattimena Store-arvo.

Kuten voit kuvitella, mahdollisuus määrittää suodatinkontekstia kaavassa sisältää valtavia ja tehokkaita ominaisuuksia. Mahdollisuus viitata vain tiettyyn arvoon liittyvässä taulukossa on vain yksi esimerkki siitä. Älä huolestu, jos et heti ymmärrä kontekstia täysin. Kun luot omia kaavojasi, opit paremmin ymmärtämään kontekstia ja sen tärkiyttä DAX-kielessä.

Pikavisuo konteksti

  1. Mitkä ovat kaksi kontekstityyppiä?
  2. Mikä on suodatinkonteksti?
  3. Mikä on rivikonteksti?

Vastaukset ovat tämän artikkelin lopussa.

Yhteenveto

Nyt kun sinulla on perustietämys DAX-kielen tärkeimmistä käsitteistä, voit aloittaa DAX-kaavojen luomisen mittareille. DAX:n opetteleminen voi olla hieman hankalaa, mutta saatavilla on monia resursseja. Kun olet lukenut tämän artikkelin ja kokeillut muutamia omia kaavoja, voit lukea lisää muista DAX-käsitteistä ja kaavoista, jotka voivat auttaa omien liiketoimintaongelmiesi ratkaisemisessa. Saatavilla on useita DAX-resursseja. Tärkein on Data Analysis Expressions (DAX) -viittaus.

Koska DAX on ollut käytössä useita vuosia muissa Microsoftin BI-työkaluissa, kuten Power Pivotin ja Analysis Servicesin taulukkomuotoisissa malleissa, saatavilla on monia hienoja tietolähteitä. Saat lisätietoja kirjoista, julkaisuista ja blogeista sekä Microsoftilta että johtavilta BI-ammattilaisilta. DAX Resource Center on myös hyvä paikka aloittaa.

QuickQuiz-vastaukset

Syntaksi:

  1. Vahvistaa ja syöttää mittarin malliin.
  2. Hakasulkeet [].

Toimintoja:

  1. Taulukko ja sarake.
  2. Kyllä. Kaava voi sisältää jopa 64 sisäkkäistä funktiota.
  3. Tekstifunktiot.

Yhteydessä:

  1. Rivikonteksti ja suodatinkonteksti.
  2. Yksi tai useampi suodatin laskutoimituksessa, joka määrittää yksittäisen arvon.
  3. Nykyinen rivi.