Brug DAX-time intelligence-funktioner

Fuldført

DAX indeholder flere time intelligence-funktioner, der gør det nemmere at ændre filterkonteksten for datoer. Du kan skrive mange af disse intelligensformler ved hjælp af en CALCULATE funktion, der ændrer datofiltre, men det ville skabe mere arbejde.

Bemærk

Mange DAX time intelligence-funktioner bruger standarddatoperioder, især år, kvartaler og måneder. Hvis du har uregelmæssige tidsperioder (f. eks. regnskabsmåneder, der starter midt i en måned), eller hvis du har brug for at arbejde med uger eller tidsperioder (timer, minutter osv.), kan DAX time intelligence-funktionerne ikke bruges. I stedet skal du bruge funktionen CALCULATE og angive håndlavede filtre for dato eller klokkeslæt.

Krav til datotabel

Hvis du vil arbejde med DAX-time intelligence-funktioner, skal du opfylde kravet om at have mindst én datotabel i din model. En datotabel er en tabel, der overfylder følgende krav:

  • Den skal have en kolonne med datatypen Dato (eller Dato/klokkeslæt), som kaldes datokolonnen.
  • Datokolonnen må kun indeholde entydige værdier.
  • Datokolonnen må ikke indeholde TOMME værdier.
  • Datokolonnen må ikke have nogen manglende datoer.
  • Datokolonnen skal strække sig over hele år. Et år er ikke nødvendigvis et kalenderår (januar-december).
  • Datotabellen skal angives som en datotabel.

Du kan finde flere oplysninger i Opret datotabeller i Power BI Desktop.

Opsummeringer over tid

Én gruppe af DAX-time intelligence-funktioner bruges til opsummeringer over tid:

  • DATESYTD – Returnerer en tabel med en enkelt kolonne, der indeholder datoer for år til dato (YTD) i den aktuelle filterkontekst. Denne gruppe indeholder DATESMTD også funktionerne og DATESQTD DAX for MTD (month-to-date) og kvartal-til-dato (QTD). Du kan overføre disse funktioner som filtre til DAX-funktionen CALCULATE .
  • TOTALYTD – Evaluerer et udtryk for YTD i den aktuelle filterkontekst. De tilsvarende DAX-funktioner TOTALQTDTOTALMTD QTD og MTD er også inkluderet.
  • DATESBETWEEN – Returnerer en tabel, der indeholder en kolonne med datoer, der starter med en given startdato og fortsætter indtil en bestemt slutdato.
  • DATESINPERIOD – Returnerer en tabel, der indeholder en kolonne med datoer, der starter med en given startdato og fortsætter for det angivne antal intervaller.

Bemærk

Selvom funktionen TOTALYTD er nem at bruge, er du begrænset til at overføre ét filterudtryk. Hvis du har brug for at anvende flere filterudtryk, skal du bruge funktionen CALCULATE og derefter sende funktionen DATESYTD ind som et af filterudtrykene.

I følgende eksempel skal du oprette din første time intelligence-beregning, der bruger funktionen TOTALYTD. Syntaksen er følgende:

TOTALYTD(<expression>, <dates>, [, <filter>][, <year_end_date>])

Funktionen kræver et udtryk, og, som det gælder for alle time intelligence-funktioner, en reference til datokolonnen i en markeret datotabel. Det er også muligt at angive et enkelt filterudtryk eller årets slutdato (kræves kun, når året ikke slutter den 31. december).

Download og åbn filen Adventure Works DW 2020 M07. pbix. Føj derefter følgende målingsdefinition til tabellen Sales , der beregner ÅTD-indtægt. Formatér målingen som valuta med to decimalpladser.

Revenue YTD =
TOTALYTD([Revenue], 'Date'[Date], "6-30")

Værdien for årets slutdato repræsenterer "6-30" 30. juni.

side 1 i rapporten skal du føje målingen Revenue YTD til matrixvisual'et. Bemærk, at der oprettes en opsummering af indtægtsbeløbene fra starten af året til og med den filtrerede måned.

Sammenligninger over tid

En anden gruppe af DAX-time intelligence-funktioner bruges til flytning af tidsperioder:

  • DATEADD – Returnerer en tabel, der indeholder en kolonne med datoer, der er flyttet enten frem eller tilbage i tiden med det angivne antal intervaller fra datoerne i den aktuelle filterkontekst.
  • PARALLELPERIOD – Returnerer en tabel, der indeholder en kolonne med datoer, der repræsenterer en periode, der er parallel med datoerne i den angivne datokolonne i den aktuelle filterkontekst, hvor datoerne er flyttet et antal intervaller enten fremad i tiden eller tilbage i tiden.
  • SAMEPERIODLASTYEAR – Returnerer en tabel, der indeholder en kolonne med datoer, der flyttes et år tilbage i tiden fra datoerne i den angivne datokolonne i den aktuelle filterkontekst.
  • Mange hjælpe-DAX-funktioner til bagud- eller fremadnavigation i bestemte tidsperioder, som alle returnerer en tabel med datoer. Disse hjælpefunktioner omfatter NEXTDAY, NEXTMONTH, NEXTQUARTER, NEXTYEARog PREVIOUSDAY, PREVIOUSMONTH, PREVIOUSQUARTERog PREVIOUSYEAR.

Nu skal du føje en måling til tabellen Sales , der beregner indtægten for det foregående år ved hjælp af funktionen SAMEPERIODLASTYEAR . Formatér målingen som valuta med to decimalpladser.

Revenue PY =
VAR RevenuePriorYear = CALCULATE([Revenue], SAMEPERIODLASTYEAR('Date'[Date]))
RETURN
    RevenuePriorYear

Føj derefter målingen Revenue PY til matrixvisual'et. Bemærk, at den giver resultater, der ligner det forrige års indtægtsbeløb.

Derefter skal du ændre målingen ved at omdøbe den til Revenue YoY % og derefter opdatere delsætningen RETURN for at beregne ændringsforholdet. Sørg for at ændre formatet til en procentdel med to decimaler.

Revenue YoY % =
VAR RevenuePriorYear = CALCULATE([Revenue], SAMEPERIODLASTYEAR('Date'[Date]))
RETURN
    DIVIDE(
        [Revenue] - RevenuePriorYear,
        RevenuePriorYear
    )

Bemærk, at målingen Revenue YoY % viser et forholdstal for ændringsfaktoren for det forrige års månedlige indtægt. Juli 2018 repræsenterer f. eks. en 106,53 % forøgelse i løbet af det forrige års månedlige indtægt, og november 2018 repræsenterer en 24,22 % reduktion for af det forrige års månedlige indtægt.

Bemærk

Målingen Revenue YoY % viser en god brug af DAX-variabler. Målingen forbedrer formlens læsbarhed og giver dig mulighed for at udføre en enhedstest af en del af målingslogikken (ved at returnere værdien af variablen RevenuePriorYear). Målingen er desuden en optimal formel, da det ikke er nødvendigt at hente værdien af det forrige års indtægt to gange. Når delsætningen har gemt den én gang i en variabel, bruges den RETURN to gange til variabelværdien.