Del via


DATEADD

gælder for:beregnet kolonneberegnet tabelberegning af målingvisualisering

Seddel

Denne funktion frarådes til brug i visuelle beregninger da den sandsynligvis returnerer meningsløse resultater.

Hvis input er en datokolonne, returneres en tabel, der indeholder en kolonne med datoer, som flyttes enten frem eller tilbage i tiden med det angivne antal intervaller fra datoerne i den aktuelle kontekst.
Hvis inputtet er en kalender, returnerer funktionen datoer, der flyttes frem eller tilbage i tiden med det angivne antal intervaller baseret på den aktuelle kontekst. Outputtet indeholder de primære mærkede kolonner samt tidsrelaterede kolonner.

Syntaks

DATEADD(<dates> or <calendar>, <number_of_intervals>, <interval>[,<Extension>],[,<Truncation>])

Parametre

Udtryk Definition
dates or calendar En kolonne, der indeholder datoer eller en kalenderreference.
number_of_intervals Et heltal, der angiver det antal intervaller, der skal føjes til eller trækkes fra datoerne.
interval Det interval, datoerne skal flyttes med. Værdien for intervallet kan være en af følgende: year, quarter, month, week, day. Ugesummen gælder kun, når der angives en kalenderreference.
extension Gælder kun, når der angives en kalenderreference. Definer funktionsmåden, når den oprindelige tidsperiode har færre datoer end den resulterende tidsperiode. Gyldige værdier er: UDVIDELSE (Standard), PRECISE, ENDALIGNED.
truncation Gælder kun, når der angives en kalenderreference. Definer funktionsmåden, når den oprindelige tidsperiode har flere datoer end den resulterende tidsperiode. Gyldige værdier er: BLANKS (Default), ANCHORED.

Returværdi

I forbindelse med datokolonneinput er det en tabel, der indeholder en enkelt kolonne med datoværdier.
I forbindelse med kalenderinput er det en tabel, der indeholder alle primære mærkede kolonner og tidsrelaterede kolonner for de ændrede perioder i den aktuelle kontekst.

Bemærkninger

Argumentet dates kan være et af følgende:

  • En reference til en dato/klokkeslæt-kolonne,

  • Et tabeludtryk, der returnerer en enkelt kolonne med dato-/klokkeslætsværdier,

  • Et boolesk udtryk, der definerer en tabel med en enkelt kolonne med dato-/klokkeslætsværdier.

    Seddel

    Begrænsninger på booleske udtryk er beskrevet i emnet CALCULATE funktion.

  • Hvis det tal, der er angivet for number_of_intervals, er positivt, flyttes datoerne i dates fremad i tiden. Hvis tallet er negativt, flyttes datoerne i dates tilbage i tiden.

  • Parameteren interval er en optælling, ikke et sæt strenge. derfor bør værdier ikke være omsluttet af anførselstegn. Værdierne: year, quarter, month, skal day også staves fuldt ud, når du bruger dem.

  • Resultattabellen indeholder kun datoer, der findes i kolonnen dates.

  • Hvis syntaksen for datokolonnen bruges, og datoerne i den aktuelle kontekst ikke udgør et sammenhængende interval, returnerer funktionen en fejl.

  • Denne funktion understøttes ikke til brug i DirectQuery-tilstand, når den bruges i beregnede kolonner eller RLS-regler (row-level security).

Eksempel – Skift af et sæt datoer

Følgende formel beregner datoer, der ligger ét år før datoerne i den aktuelle kontekst.

= DATEADD ( DateTime[DateKey], -1, YEAR )

Eksempel på kalenderbaseret time intelligence

Følgende formel returnerer en tabel med datoer, der er flyttet et år tilbage fra datoerne i den aktuelle kontekst.

DATEADD ( FiscalCalendar, -1, YEAR )

Særlig funktionsmåde, når input er en datokolonne

Når valget omfatter de sidste to dage i måneden, DATEADD bruger semantikken "udvidelse" og inkluderer dagene indtil udgangen af måneden. Når 27. februar og 28. februar 2013 f.eks. er inkluderet i valget, og der tilføjes en måned, returnerer DATEADD 27. marts til 31. marts.

Denne funktionsmåde sker kun, når de sidste to dage i måneden er inkluderet i markeringen. Hvis der kun vælges 27. februar, går den til den 27. marts.

= DATEADD(DateTime[DateKey], 1, month)

Kalenderbaseret time intelligence giver mere kontrol via to valgfri parametre: "Extension" og "Truncation". Se ovenstående parameterbeskrivelser for at få flere oplysninger.

Funktionsmåde for kalenderbaseret DatoTilføj, når markeringen er mere detaljeret end forskydningsniveauet

Når der bruges en kalenderreference, og markeringen er mere detaljeret end forskydningsniveauet, anvendes der en indeksbaseret tilgang. Lad os illustrere denne funktionsmåde ved at overveje det scenarie, hvor markeringen er på datoniveauet, og DATEADD() skifter efter måned. Her er, hvad DateAdd vil gøre:

  • Bestem positionerne for den aktuelle markering inden for måneden.
    Hvis den aktuelle markering f.eks. strækker sig over 3.-10. marts, er stillingerne fra den 3. til den 10. dag i måneden.

  • Skift måneden Anvend månedsskiftet – f.eks. et skift på +1 ændringer fra marts til april.

  • Returner de samme relative positioner i den ændrede måned Hent den 3. til den 10. i den nye måned (f.eks. 3.-10. april).

Parametre for kalenderbaseret DatoTilføj, når markeringen er mere detaljeret end forskydningsniveauet

Når valggranulariteten er finere end forskydningsenheden (f.eks. valg af individuelle datoer, mens der skiftes efter måned), kan den indeksbaserede funktionsmåde føre til flertydigheder, især på tværs af måneder med forskellige længder. Der introduceres to parametre for at håndtere disse kantsager:

Udvidelsesparameter (for små → store periodeskift):

Styrer, hvordan funktionen fungerer, når destinationsperioden er længere end den aktuelle. Brug en måned frem som eksempel:

  • Precise: Holder det oprindelige datointerval strengt.
    Feb 25–28 → →March 25–28

  • Extending: Gør det muligt for vinduet at udvide mod slutningen af perioden, hvis det er nødvendigt.
    Feb 25–28 → →March 25–31

  • EndAligned: Justerer slutdatoen i forhold til slutningen af destinationsperioden, når markeringen når slutningen af perioden. ellers bevares relative positioner.
    Feb 28 → →March 31, mens Feb 27March 27

Afkortelsesparameter (for store → små periodeskift)

Styrer, hvordan funktionen fungerer, når destinationsmåneden er kortere end den aktuelle. Brug en måned tilbage som eksempel:

  • Anchored: Forankrer resultatet til den sidste gyldige dato i den mindre periode.
    March 31 → →Feb 28

  • Blanks: Returnerer tom , når den ændrede dato ikke findes.
    March 31 → → (tom) (siden februar ikke har den 31. februar)

Forskelle i funktionsmåde mellem klassisk og kalendertidsintelligens

Nogle scenarier kan give forskellige resultater, når du sammenligner klassisk og kalendertidsintelligens. I et måneår vil SamePeriodLastYear f.eks. give forskellige resultater på datogranulariteten. I kalender-baseret time intelligence, flytte 29 februar 2008 tilbage et år resulterer i marts 1 2007, fordi det behandles som den 60. dag i året. I klassisk time intelligence returnerer det samme skift den 28. februar 2007. Løsningen er at bruge DATEADD(Calendar, -<number of a year>, month). Hvis et år f.eks. har 13 måneder i kalenderen, skal du bruge DATEADD(Kalender, -13, måned). Denne fremgangsmåde skifter pr. måned, så februar 2008 går til februar 2007.

time intelligence-funktionerdato- og klokkeslætsfunktioner