Bruke tidsintelligens-funksjoner
DAX inkluderer flere tidsintelligens-funksjoner for å forenkle oppgaven med å endre datofilter-kontekst. Du kan skrive mange av disse intelligensformlene ved hjelp av en CALCULATE
funksjon som endrer datofiltre, men som vil skape mer arbeid.
Obs!
Mange DAX tidsintelligens-funksjoner er opptatt av standard datoperioder, spesifikt år, kvartaler og måneder. Hvis du har uregelmessige tids perioder (for eksempel økonomiske måneder som begynner midt i løpet av kalendermåneden), eller hvis du har behov for å arbeide med uker eller tidsperioder (timer, minutter og så videre), vil ikke DAX-tidsintelligens-funksjonene være nyttige. I stedet må du bruke CALCULATE
funksjonen og sende inn håndlagde dato- eller klokkeslettfiltre.
Krav til datotabell
Hvis du vil arbeide med DAX-funksjonene for tidsintelligens, må du oppfylle kravene til forutsetninger for modellen med minst én dato-tabell i modellen din. En dato-tabell er en tabell som oppfyller følgende krav:
- Den må ha en kolonne med datatypen Date (eller date/time), som kalles dato-kolonnen.
- Datokolonnen må inneholde unike verdier.
- Datokolonnen må ikke inneholde MELLOMROM.
- Datokolonnen må ikke mangle noen datoer.
- Datokolonnen må spenne over hele år. Et år er ikke nødvendigvis et kalenderår (januar–desember).
- Dato-tabellen må være angitt som en dato-tabell.
Hvis du vil ha mer informasjon, kan du ta en titt på Opprette dato-tabeller i Power BI Desktop.
Sammendrag over tid
Én gruppe av DAX tidsintelligens-funksjoner er opptatt av sammendrag over tid:
-
DATESYTD
– Returnerer en tabell med én kolonne som inneholder datoer for hittil i år (hittil i år) i gjeldende filterkontekst. Denne gruppen inkludererDATESMTD
også funksjonene ogDATESQTD
DAX for måned-til-dato (MTD) og kvartal-til-dato (QTD). Du kan sende disse funksjonene som filtre til DAX-funksjonenCALCULATE
. -
TOTALYTD
– Evaluerer et uttrykk for YTD i gjeldende filterkontekst. Tilsvarende QTD- og MTD DAX-funksjoner forTOTALQTD
ogTOTALMTD
er også inkludert. -
DATESBETWEEN
– Returnerer en tabell som inneholder en kolonne med datoer som begynner med en gitt startdato og fortsetter til en gitt sluttdato. -
DATESINPERIOD
– Returnerer en tabell som inneholder en kolonne med datoer som begynner med en gitt startdato og fortsetter for det angitte antallet intervaller.
Obs!
Selv om TOTALYTD
funksjonen er enkel å bruke, er du begrenset til å sende inn ett filteruttrykk. Hvis du trenger å bruke flere filteruttrykk, bruker CALCULATE
du funksjonen og sender DATESYTD
deretter funksjonen inn som ett av filteruttrykkene.
I eksemplet nedenfor vil du opprette den første tids intelligens-beregningen som bruker TOTALYTD-funksjonen. Syntaksen er som følger:
TOTALYTD(<expression>, <dates>, [, <filter>][, <year_end_date>])
Funksjonen krever et uttrykk og, som er felles for alle tids intelligensfunksjoner, en referanse til dato-kolonnen for en merket dato-tabell. Det kan også hende at et enkelt filter-uttrykk eller dato for årsslutt sendes inn (kreves bare når året ikke avsluttes 31. desember).
Last ned og åpne Adventure Works DW 2020 M07.pbix-fil. Deretter legger du til følgende måldefinisjon i Salg-tabellen som beregner omsetning YTD. Formater målet som valuta med to desimalplasser.
Revenue YTD =
TOTALYTD([Revenue], 'Date'[Date], "6-30")
Verdien for årsslutt for "6-30"
representerer 30. juni.
På Side 1 i rapporten legger du til mål for omsetning hittil i år i visualobjekt-matrisen. Legg merke til at det gir en oppsummering av omsetningsbeløpene fra begynnelsen av året frem til den filtrerte måneden.
Sammenligninger over tid
En annen gruppe av DAX tidsintelligens-funksjoner er opptatt av skiftende tidsperioder:
-
DATEADD
– Returnerer en tabell som inneholder en kolonne med datoer, forskjøvet enten fremover eller bakover i tid med det angitte antallet intervaller fra datoene i gjeldende filterkontekst. -
PARALLELPERIOD
– Returnerer en tabell som inneholder en kolonne med datoer som representerer en periode som er parallell med datoene i den angitte datokolonnen, i gjeldende filterkontekst, med datoene forskjøvet et antall intervaller fremover i tid eller tilbake i tid. -
SAMEPERIODLASTYEAR
– Returnerer en tabell som inneholder en kolonne med datoer som flyttes ett år tilbake i tid fra datoene i den angitte datokolonnen, i gjeldende filterkontekst. - Mange DAX-hjelpefunksjoner for å navigere bakover eller fremover for bestemte tidsperioder, som alle returnerer en tabell med datoer. Disse hjelpefunksjonene inkluderer
NEXTDAY
, ,NEXTMONTH
NEXTQUARTER
,NEXTYEAR
, ogPREVIOUSDAY
,PREVIOUSMONTH
PREVIOUSQUARTER
ogPREVIOUSYEAR
.
Nå skal du legge til et mål i Salg-tabellen som beregner omsetning for foregående år ved hjelp SAMEPERIODLASTYEAR
av funksjonen. Formater målet som valuta med to desimalplasser.
Revenue PY =
VAR RevenuePriorYear = CALCULATE([Revenue], SAMEPERIODLASTYEAR('Date'[Date]))
RETURN
RevenuePriorYear
Legg til målet Omsetning PY i matrise-visualobjektet. Legg merke til at det gir resultater som ligner på det forrige årets omsetningsbeløp.
Deretter endrer du målet ved å gi det nytt navn til Omsetning per år % og deretter oppdatere setningsdelen RETURN
for å beregne endringsforholdet. Pass på at du endrer formatet til en prosent med to desimaler.
Revenue YoY % =
VAR RevenuePriorYear = CALCULATE([Revenue], SAMEPERIODLASTYEAR('Date'[Date]))
RETURN
DIVIDE(
[Revenue] - RevenuePriorYear,
RevenuePriorYear
)
Vær oppmerksom på at omsetning per år (YoY) % målet produserer et forhold mellom en endringsfaktor i forhold til den månedlige omsetningen i fjoråret. Juli 2018 representerer for eksempel en 106,53 prosent Økning i forhold til den månedlige omsetningen i fjoråret, og november 2018 representerer en 24,22 prosent reduksjon i forhold til fjorårets månedlige omsetning.
Obs!
Omsetning per år % målet viser godt bruk av DAX-variabler. Målet forbedrer lesbarheten til formelen og gir deg mulighet til å teste en del av mål-logikken (ved å returnere RevenuePriorYear variabelverdien). I tillegg er målet en optimal formel, fordi det ikke er nødvendig å hente omsetningsverdien for fjoråret to ganger. Etter å ha lagret den én RETURN
gang i en variabel, brukes setningsdelen til variabelverdien to ganger.