Sdílet prostřednictvím


DATEADD

platí pro:Počítaný sloupecPočítaná tabulkamíravizuální

Poznámka

Tato funkce se nedoporučuje používat ve vizuálních výpočtech, protože pravděpodobně vrací nesmyslné výsledky.

Pokud je vstup sloupcem kalendářních dat, vrátí tabulku obsahující sloupec kalendářních dat, posunutou dopředu nebo dozadu o zadaný počet intervalů z kalendářních dat v aktuálním kontextu.
Pokud je vstup kalendářem, vrátí funkce kalendářní data posunutá dopředu nebo dozadu o zadaný počet intervalů na základě aktuálního kontextu. Výstup obsahuje primární označené sloupce i sloupce související s časem.

Syntax

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

Parametry

Semestr Definice
dates or calendar Sloupec, který obsahuje kalendářní data nebo odkaz na kalendář.
number_of_intervals Celé číslo, které určuje počet intervalů, které se mají sčítat nebo odečítat od kalendářních dat.
interval Interval, o který se mají data posunout. Hodnota intervalu může být jedna z následujících hodnot: year, quarter, month, week, . day Výčet týdnů se dá použít jenom v případě, že je k dispozici odkaz na kalendář.
extension Platí pouze v případě, že je k dispozici odkaz na kalendář. Definujte chování, pokud má původní časové období méně kalendářních dat než výsledné časové období. Platné hodnoty jsou: EXTENDING (Default), PRECISE, ENDALIGNED.
truncation Platí pouze v případě, že je k dispozici odkaz na kalendář. Definujte chování, kdy má původní časové období více kalendářních dat než výsledné časové období. Platné hodnoty jsou: BLANKS (Výchozí), ANCHORED.

Návratová hodnota

Pro vstup sloupce kalendářního data tabulka obsahující jeden sloupec hodnot kalendářních dat.
Pro vstup kalendáře tabulka obsahující všechny primární označené sloupce a sloupce související s časem pro posunutá období v aktuálním kontextu.

Poznámky

Argument dates může být některý z následujících:

  • Odkaz na sloupec data a času,

  • Výraz tabulky, který vrací jeden sloupec hodnot data a času,

  • Logický výraz, který definuje tabulku s jedním sloupcem hodnot data a času.

    Poznámka

    Omezení logických výrazů jsou popsána v tématu, CALCULATE funkce.

  • Pokud je číslo zadané pro number_of_intervals kladné, posunou se data v dates dopředu v čase; pokud je číslo záporné, posunou se data v dates zpět v čase.

  • Parametr interval je výčet, nikoli sada řetězců; hodnoty by proto neměly být uzavřeny do uvozovek. Také hodnoty: year, quarter, month, day by měly být při jejich použití zaplněné.

  • Výsledná tabulka obsahuje pouze data, která existují ve sloupci dates.

  • Pokud se použije syntaxe sloupce kalendářního data a kalendářní data v aktuálním kontextu neformují souvislý interval, vrátí funkce chybu.

  • Tato funkce není podporována pro použití v režimu DirectQuery při použití v počítaných sloupcích nebo pravidlech zabezpečení na úrovni řádků (RLS).

Příklad – posun sady kalendářních dat

Následující vzorec vypočítá kalendářní data, která jsou jeden rok před kalendářními daty v aktuálním kontextu.

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

Příklad časového měřítka na základě kalendáře

Následující vzorec vrátí tabulku kalendářních dat posunutých o jeden rok zpět od kalendářních dat v aktuálním kontextu.

DATEADD ( FiscalCalendar, -1, YEAR )

Speciální chování, když vstup je sloupec kalendářního data

Pokud výběr obsahuje poslední dva dny v měsíci, DATEADD použije sémantiku "rozšíření" a bude obsahovat dny do konce měsíce. Například když se do výběru zahrne 27. února a 28. února 2013 a přidá se měsíc, DATEADD vrátí 27. března až 31.

K tomuto chování dochází pouze v případě, že jsou ve výběru zahrnuty poslední dva dny v měsíci. Pokud je vybráno pouze 27. února, přejde na 27. března.

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

Časové měřítko na základě kalendáře poskytuje větší kontrolu prostřednictvím dvou volitelných parametrů: "Extension" a "Truncation". Podrobnosti najdete v popisech výše uvedených parametrů.

Chování pro dateadd založené na kalendáři, pokud je výběr v jemném odstupňovaném intervalu než úroveň směny

Pokud se použije odkaz na kalendář a výběr je jemně odstupňovaný než úroveň směny, použije se přístup založený na indexu. Pro ilustraci tohoto chování se podíváme na scénář, ve kterém je výběr na úrovni data a DATEADD() se přesouvá po měsících. Tady je to, co dateAdd udělá:

  • Určete pozice aktuálního výběru v měsíci.
    Pokud je například aktuální výběr rozložen na 3–10. března, pozice jsou od 3. do 10. dne v měsíci.

  • Shift the month Apply the month shift — například shift of +1 changes March to April.

  • Vrátí stejné relativní pozice ve posunutém měsíci Načtení třetího na 10. dne nového měsíce (např. 3. dubna–10).

Parametry pro dateAdd založené na kalendáři, pokud je výběr v jemném odstupňovaném intervalu než úroveň směny

Pokud je členitost výběru jemnější než jednotka posunu (například výběr jednotlivých kalendářních dat při posunu po měsíci), může chování založené na indexu vést k nejednoznačnostem, zejména v měsících různých délek. Pro zpracování těchto hraničních případů se zavádějí dva parametry:

Parametr rozšíření (u malých → velkých posunů období):

Určuje, jak se funkce chová, když je cílové období delší než aktuální. Jako příklad použijte přechod dopředu o jeden měsíc:

  • Precise: Zachová původní rozsah kalendářních dat výhradně.
    Feb 25–28 → →March 25–28

  • Extending: Umožňuje v případě potřeby okno rozbalit směrem ke konci období .
    Feb 25–28 → →March 25–31

  • EndAligned: Zarovná koncové datum s koncem cílového období, když výběr dosáhne konce období; jinak zachovává relativní pozice.
    Feb 28 → → March 31během Feb 27March 27

Parametr zkrácení (u velkých → malých posunů období)

Určuje, jak se funkce chová, když je cílový měsíc kratší než aktuální měsíc. Jako příklad použijte pohyb vzad o jeden měsíc:

  • Anchored: Zakotví výsledek k poslednímu platnému datu menšího období.
    March 31 → →Feb 28

  • Blanks: Vrátí prázdnou hodnotu , pokud posunuté datum neexistuje.
    March 31 → → (prázdné) (od února nemá 31.

Rozdíly v chování mezi klasickým a kalendářním časovým měřítkem

Některé scénáře můžou při porovnávání klasického a kalendářního časového měřítka přinést různé výsledky. Například v lunárním roce vytvoří SamePeriodLastYear různé výsledky v členitosti data. V kalendářním časovém měřítku má posun 29. února 2008 zpět jeden rok v 1. maru 2007, protože se považuje za 60. den roku. V klasickém časovém měřítku vrátí stejný posun 28. února 2007. Alternativním řešením je použít DATEADD(Calendar, -<number of a year>, month). Pokud má například rok v kalendáři 13 měsíců, použijte DATEADD(Kalendář, -13, měsíc). Tento přístup se posune o měsíc, takže únor 2008 přejde na únor 2007.