Zdieľať cez


DATEADD

Vzťahuje sa na:vypočítaný stĺpecvypočítanej tabuľkyvizuálového výpočtu

Nota

Táto funkcia sa neodporúča používať vo výpočtoch vizuálov, pretože pravdepodobne vráti nezmyselné výsledky.

Ak je vstupom stĺpec dátumov, vráti tabuľku, ktorá obsahuje stĺpec dátumov, ktorá sa posunula dopredu alebo späť v čase podľa zadaného počtu intervalov v dátumoch v aktuálnom kontexte.
Ak je vstup kalendárom, funkcia vráti dátumy posununuté dopredu alebo dozadu v čase o zadaný počet intervalov na základe aktuálneho kontextu. Výstup obsahuje primárne označené stĺpce, ako aj stĺpce súvisiace s časom.

Syntax

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

Parametre

Termín Definícia
dates or calendar Stĺpec, ktorý obsahuje dátumy alebo odkaz na kalendár.
number_of_intervals Celé číslo určujú ktoré určuje počet intervalov, ktoré sa majú pripočítať k dátumom alebo od týchto dátumov odpočítať.
interval Interval, o ktorý sa majú posunúť dátumy. Interval môže mať jednu z týchto hodnôt: year, , quartermonth, . weekday Enuum týždňa sa vzťahuje len vtedy, keď je uvedený odkaz na kalendár.
extension Platí len vtedy, ak sa poskytuje odkaz na kalendár. Definujte správanie, keď pôvodné časové obdobie obsahuje menej dátumov ako výsledné časové obdobie. Platné hodnoty sú: EXTENDING (Default), PRECISE, ENDALIGNED.
truncation Platí len vtedy, ak sa poskytuje odkaz na kalendár. Definujte správanie, keď pôvodné časové obdobie obsahuje viac dátumov ako výsledné časové obdobie. Platné hodnoty sú: BLANKS (Predvolené), ANCHORED.

Vrátená hodnota

V prípade vstupu stĺpca dátumu je to tabuľka obsahujúca jeden stĺpec dátumových hodnôt.
V prípade vstupu kalendára tabuľka, ktorá obsahuje všetky primárne označené stĺpce a stĺpce súvisiace s časom pre posununé obdobia v aktuálnom kontexte.

Poznámky

Argument dates môže byť niektorá z týchto možností:

  • odkaz na stĺpec dátumu a času,

  • výraz tabuľky, ktorý vráti jeden stĺpec hodnôt dátumu a času,

  • Boolovský výraz, ktorý definuje tabuľku s jedným stĺpcom hodnôt dátumu a času.

    Nota

    Obmedzenia booleovských výrazov sú popísané v téme funkcia CALCULATE.

  • Ak je číslo zadané pre number_of_intervals kladné, dátumy v dates sa posunú v čase dopredu; Ak je číslo záporné, dátumy v dates sa posunú v čase späť.

  • Parameter interval je enumerácia, nie množina reťazcov. preto hodnoty nesmú byť uzavreté v úvodzovkách. Pri použití hodnôt year, quarter, month, day je ich potrebné napísať v plnom znení.

  • Výsledná tabuľka obsahuje iba dátumy, ktoré existujú v stĺpci dates.

  • Ak sa použije syntax stĺpca dátumov a dátumy v aktuálnom kontexte netvoria súvislý interval, funkcia vráti chybu.

  • Táto funkcia nie je podporovaná na použitie v režime DirectQuery, keď sa používa vo vypočítaných stĺpcoch alebo v pravidlách zabezpečenia na úrovni riadkov (RLS).

Príklad – posunutie množiny dátumov

Nasledujúci vzorec vypočíta dátumy, ktoré sú jeden rok pred dátumami v aktuálnom kontexte.

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

Príklad časovej inteligencie založenej na kalendári

Nasledujúci vzorec vráti tabuľku dátumov posunutú o rok späť od dátumov v aktuálnom kontexte.

DATEADD ( FiscalCalendar, -1, YEAR )

Špeciálne správanie pri vstupe je stĺpec dátumov

Ak výber zahŕňa posledné dva dni v mesiaci, DATEADD použije sémantiku "extension" a bude zahŕňať dni do konca mesiaca. Napríklad, keď sú do výberu zahrnuté 27. feb a 28. februára 2013 a pridá sa mesiac, DATEADD vráti 27. marca do 31. marca.

Toto správanie nastane len vtedy, keď sú do výberu zahrnuté posledné dva dni v mesiaci. Ak je vybratá len 27. februára, pôjde na 27. marec.

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

Časová inteligencia založená na kalendári poskytuje väčšiu kontrolu prostredníctvom dvoch voliteľných parametrov: "Rozšírenie" a "Skrátenie". Podrobnosti nájdete v popisoch parametrov vyššie.

Správanie pre dátum podľa kalendáraPriddnutie, keď je výber na jemnej úrovni zmeny

Keď sa použije odkaz na kalendár a výber je na jemnejšom zrni ako na úrovni posunu, použije sa prístup založený na indexe. Na ilustráciu tohto správania si predstavme scenár, v ktorom je výber na úrovni dátumu a DATEADD() sa mení podľa mesiaca. Tu je to, čo dateAdd bude robiť:

  • Určenie pozícií aktuálneho výberu v rámci mesiaca.
    Ak napríklad aktuálny výber zahŕňa obdobie od 3. marca do 10. marca, pozície sú od 3. do 10. dňa v mesiaci.

  • Posun v mesiaci Použite posun mesiaca – napríklad posun o +1 sa zmení z marca na apríl.

  • Vrátiť rovnaké relatívne pozície v posununom mesiaci Načítať 3.

Parametre pre dátum podľa kalendáraPriddnutie, keď je výber na jemnej úrovni zmeny

Keď je granularita výberu je jemšia ako jednotka shift (napríklad pri výbere jednotlivých dátumov počas presúvania podľa mesiaca), správanie na základe indexu môže viesť k nejednoznačnostiam, najmä v mesiacoch s rôznymi dĺžkami. Na riešenie týchto krajných prípadov sa uvádzajú dva parametre:

Parameter rozšírenia (pre malé → posuny veľkého obdobia):

Určuje, ako sa funkcia správa, keď je cieľové obdobie dlhšie ako aktuálne obdobie. Ako príklad použite postup dopredu o jeden mesiac:

  • Precise: Uchováva pôvodný rozsah dátumov prísne.
    Feb 25–28 → →March 25–28

  • Extending: Umožňuje okno v prípade potreby rozbaliť na koniec obdobia .
    Feb 25–28 → →March 25–31

  • EndAligned: zarovná koncový dátum s koncom cieľového obdobia, keď výber dosiahne koniec jeho obdobia; V opačnom prípade sa zachovajú relatívne pozície.
    Feb 28 → → March 31Feb 27March 27

Parameter skrátenia (pre veľké → malé časové posuny)

Určuje, ako sa funkcia správa, keď je cieľový mesiac kratší ako aktuálny. Ako príklad použite postup späť o jeden mesiac:

  • Anchored: Ukotví výsledok do posledného platného dátumu menšieho obdobia.
    March 31 → →Feb 28

  • Blanks: Vráti prázdnu hodnotu , keď posunutý dátum neexistuje.
    March 31 → → (prázdne) (od februára nemá hodnotu 31.)

Rozdiely v správaní medzi klasickou časovou inteligenciou a časovou inteligenciou kalendára

Niektoré scenáre môžu priniesť rôzne výsledky pri porovnávaní klasickej časovej inteligencie a časovej inteligencie kalendára. Napríklad v lunárneho roku bude SamePeriodLastYear vytvárať rôzne výsledky v granularte dátumu. V kalendárnej časovej inteligencii, posunutie 29 februára 2008 späť o rok má za následok Mar 1 2007, pretože sa považuje za 60. deň v roku. V klasickej časovej inteligencii, rovnaký posun vráti 28 februára 2007. Alternatívnym riešením je použiť riešenie DATEADD(Kalendár, Počet< rokov>, mesiac). Ak má napríklad rok 13 mesiacov v kalendári, použite ( DATEADDKalendár, -13, mesiac). Tento prístup sa posunie o mesiac, takže február 2008 pôjde do februára 2007.