Bruke tidsintelligens-funksjoner

Fullført

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 inkluderer DATESMTD også funksjonene og DATESQTD DAX for måned-til-dato (MTD) og kvartal-til-dato (QTD). Du kan sende disse funksjonene som filtre til DAX-funksjonen CALCULATE .
  • TOTALYTD – Evaluerer et uttrykk for YTD i gjeldende filterkontekst. Tilsvarende QTD- og MTD DAX-funksjoner for TOTALQTD og TOTALMTD 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.

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, , NEXTMONTHNEXTQUARTER, NEXTYEAR, og PREVIOUSDAY, PREVIOUSMONTHPREVIOUSQUARTERog PREVIOUSYEAR.

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.