DAX-aikatietofunktioiden käyttäminen
DAX sisältää useita aikatietofunktioita, jotka yksinkertaistavat päivämääräsuodatinkontekstin muokkaamista. Voit kirjoittaa monia näistä tietojen kaavoista käyttämällä funktiota CALCULATE
, joka muokkaa päivämääräsuodattimia, mutta se loisi enemmän työtä.
Huomautus
Monet DAX-aikatietofunktiot liittyvät tavallisiin päivämääräjaksoihin, kuten vuosi, vuosineljännes ja kuukausi. Jos sinulla on epäsäännöllisiä ajanjaksoja (jos esimerkiksi tilikuukausi alkaa keskellä kalenterikuukautta) tai jos sinun on käsiteltävä viikkoja tai kellonaikoja (kuten tunnit ja minuutit), DAX-aikatietofunktioista ei ole hyötyä. Sen sijaan sinun on käytettävä -funktiota CALCULATE
ja välitettävä käsintehdyt päivämäärä- ja aikasuodattimet.
Päivämäärätaulukkoa koskeva vaatimus
Voit käyttää DAX-aikatietofunktioita, jos mallia koskeva vaatimus täyttyy eli mallissasi on vähintään yksi päivämäärätaulukko. Päivämäärätaulukko on taulukko, joka täyttää seuraavat vaatimukset:
- Siinä on oltava päivämäärätietotyypin sarake (tai päivämäärä/aika), jota kutsutaan päivämääräsarakkeeksi.
- Päivämääräsarakkeessa on oltava yksilöllisiä arvoja.
- Päivämääräsarake ei saa sisältää tyhjiä kohtia.
- Päivämääräsarakkeessa ei saa olla puuttuvia päivämääriä.
- Päivämääräsarakkeen täytyy kattaa kokonaisia vuosia. Vuosi ei välttämättä ole kalenterivuosi (tammikuu–joulukuu).
- Päivämäärätaulukko on merkittävä päivämäärätaulukoksi.
Lisätietoja on ohjeaiheessa Päivämäärätaulukoiden luominen Power BI Desktopissa.
Yhteenvedot ajan mukaan
Yksi DAX-aikatietofunktioiden ryhmä liittyy yhteenvetoihin ajan mukaan:
-
DATESYTD
- Palauttaa yksisarakkeisen taulukon, joka sisältää päivämäärät vuoden alusta (YTD) nykyisessä suodatinkontekstissa. Tämä ryhmä sisältääDATESMTD
DATESQTD
myös DAX-funktiot kuukauden alusta (MTD) ja vuosineljänneksen alusta (QTD). Voit siirtää nämä funktiot suodattimina DAX-funktioonCALCULATE
. -
TOTALYTD
- Laskee lausekkeen YTD:lle nykyisessä suodatinkontekstissa. Ne sisältävät myös - ja -tyyppisiä QTD- ja MTD-DAX-funktioitaTOTALQTD
TOTALMTD
. -
DATESBETWEEN
- Palauttaa taulukon, jonka sisältämä päivämääräsarake alkaa tietystä alkamispäivästä ja jatkuu määritettyun päättymispäivään. -
DATESINPERIOD
- Palauttaa taulukon, jonka sisältämä päivämääräsarake alkaa määritetyllä aloituspäivällä ja jatkuu määritetyllä päivitysvälien määrällä.
Huomautus
Vaikka funktiota TOTALYTD
on helppo käyttää, voit välittää vain yhden suodatinlausekkeen. Jos sinun on käytettävä useita suodatinlausekkeita, käytä CALCULATE
-funktiota ja välitä DATESYTD
funktio yhdeksi suodatinlausekkeeksi.
Seuraavassa esimerkissä luot ensimmäisen aikatietolaskelman, joka käyttää TOTALYTD-funktiota. Syntaksi on seuraava:
TOTALYTD(<expression>, <dates>, [, <filter>][, <year_end_date>])
Funktio edellyttää lauseketta, ja kaikkien muiden aikatietofunktioiden tapaan, viittausta merkityn päivämäärätaulukon päivämääräsarakkeeseen. Vaihtoehtoisesti yksittäinen suodatinlauseke tai vuoden päättymispäivä voidaan välittää (pakollinen vain, jos vuosi ei pääty 31. joulukuuta).
Lataa ja avaa tiedosto Adventure Works DW 2020 M07.pbix. Lisää sitten seuraava mittari Sales-taulukkoon, joka laskee tuoton vuoden alusta. Muotoile mittari valuutaksi kahden desimaalin tarkkuudella.
Revenue YTD =
TOTALYTD([Revenue], 'Date'[Date], "6-30")
Kohteen vuoden lopun päivämääräarvo "6-30"
edustaa kesäkuun 30. päivää.
Raportin sivulla 1 lisää Tuotto vuoden alusta -mittari matriisivisualisointiin. Huomaa, että se tuottaa yhteenvedon tuottomääristä vuoden alusta suodatettuun kuukauteen.
Vertailut ajan mukaan
Toinen DAX-aikatietofunktioiden ryhmä liittyy siirtyviin ajanjaksoihin:
-
DATEADD
– Palauttaa taulukon, jonka sisältämä päivämääräsarake on siirretty ajassa joko eteen- tai taaksepäin nykyisen suodatinkontekstin päivämääristä määritettyjen aikavälien mukaan. -
PARALLELPERIOD
– Palauttaa taulukon, joka sisältää päivämääräsarakkeen, joka edustaa ajanjaksoa, joka on rinnakkainen määritetyn päivämäärät-sarakkeen päivämäärien kanssa nykyisessä suodatinkontekstissa, ja päivämäärät siirretään useita välejä joko eteenpäin tai taaksepäin ajassa. -
SAMEPERIODLASTYEAR
– Palauttaa taulukon, joka sisältää sarakkeen päivämääriä, jotka on siirretty yhden vuoden ajassa taaksepäin määritetyn päivämääräsarakkeen päivämääristä nykyisessä suodatinkontekstissa. - Monia DAX-apufunktioita, joiden avulla voidaan siirtyä tietty ajanjakso taaksepäin tai eteenpäin ja jotka kaikki palauttavat päivämäärätaulukon. Näitä apufunktioita ovat ,
NEXTDAY
,NEXTMONTH
NEXTQUARTER
,NEXTYEAR
, jaPREVIOUSDAY
,PREVIOUSMONTH
,PREVIOUSQUARTER
jaPREVIOUSYEAR
.
Nyt lisäät Sales-taulukkoon mittarin, joka laskee edellisen vuoden tuoton -funktion SAMEPERIODLASTYEAR
avulla. Muotoile mittari valuutaksi kahden desimaalin tarkkuudella.
Revenue PY =
VAR RevenuePriorYear = CALCULATE([Revenue], SAMEPERIODLASTYEAR('Date'[Date]))
RETURN
RevenuePriorYear
Lisää Edellisen vuoden tuotto -mittari matriisivisualisointiin. Huomaa, että se tuottaa tuloksia, jotka ovat samanlaisia kuin edellisen vuoden tuottomäärät.
Seuraavaksi muokkaat mittaria nimeämällä sen uudelleen Tuotto vuodessa % ja päivittämällä -lausekkeen RETURN
laskemaan muutossuhteen. Muista muuttaa muoto prosenttiluvuksi, jossa on kaksi desimaalia.
Revenue YoY % =
VAR RevenuePriorYear = CALCULATE([Revenue], SAMEPERIODLASTYEAR('Date'[Date]))
RETURN
DIVIDE(
[Revenue] - RevenuePriorYear,
RevenuePriorYear
)
Huomaa, että Tuotto vuodessa % -mittari tuottaa muutossuhteen edellisen vuoden kuukausittaiseen tuottoon verrattuna. Esimerkiksi heinäkuun 2018 tuotot ovat nousseet 106,53 prosenttia edellisen vuoden kuukausittaiseen tuottoon verrattuna, ja marraskuun 2018 tuotot ovat vähentyneet 24,22 prosenttia edellisen vuoden kuukausittaiseen tuottoon verrattuna.
Huomautus
Tuotto vuodessa % -mittari on hyvä esimerkki DAX-muuttujien hyödyllisestä käytöstä. Mittari parantaa kaavan luettavuutta ja sen avulla voit yksikkötestata mittarilogiikan osan (palauttamalla RevenuePriorYear-muuttujan arvon). Lisäksi mittari on optimaalinen kaava, sillä sen ei tarvitse noutaa edellisen vuoden tuottoarvoa kahdesti. Kun se on kerran tallennettu muuttujaan, - RETURN
lause käyttää muuttujan arvoa kahdesti.