Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:
kolumna obliczeniowa
tabela obliczeniowa
Miara
wizualizacji
Nuta
Ta funkcja jest zniechęcana do użycia w obliczeniach wizualizacji , ponieważ prawdopodobnie zwraca wyniki bez znaczenia.
Jeśli dane wejściowe są kolumną daty, zwraca tabelę zawierającą kolumnę dat, przesuniętą do przodu lub do tyłu o określoną liczbę interwałów z dat w bieżącym kontekście.
Jeśli dane wejściowe są kalendarzem, funkcja zwraca daty przesunięte do przodu lub do tyłu w czasie przez określoną liczbę interwałów na podstawie bieżącego kontekstu. Dane wyjściowe zawierają podstawowe kolumny oznakowane, a także kolumny związane z czasem.
Składnia
DATEADD(<dates> or <calendar>, <number_of_intervals>, <interval>[,<Extension>],[,<Truncation>])
Parametry
| Termin | Definicja |
|---|---|
dates or calendar |
Kolumna zawierająca daty lub odwołanie do kalendarza. |
number_of_intervals |
Liczba całkowita określająca liczbę interwałów do dodania lub odejmowania od dat. |
interval |
Interwał, według którego mają być przesunięte daty. Wartość interwału może być jedną z następujących wartości: year, , quartermonth, week, . day Wyliczenie tygodnia ma zastosowanie tylko wtedy, gdy zostanie podane odwołanie do kalendarza. |
extension |
Ma zastosowanie tylko wtedy, gdy podano odwołanie do kalendarza. Zdefiniuj zachowanie, gdy oryginalny okres ma mniej dat niż wynikowy okres. Prawidłowe wartości to: EXTENDING (Default), PRECISE, ENDALIGNED. |
truncation |
Ma zastosowanie tylko wtedy, gdy podano odwołanie do kalendarza. Zdefiniuj zachowanie, gdy oryginalny okres ma więcej dat niż wynikowy okres. Prawidłowe wartości to: BLANKS (wartość domyślna), ANCHORED. |
Wartość zwracana
W przypadku danych wejściowych kolumn daty tabela zawierająca jedną kolumnę wartości daty.
W przypadku danych wejściowych kalendarza tabela zawierająca wszystkie podstawowe kolumny oznakowane i powiązane z czasem kolumny dla przesuniętych okresów w bieżącym kontekście.
Uwagi
Argument dates może być dowolny z następujących:
Odwołanie do kolumny daty/godziny,
Wyrażenie tabeli zwracające jedną kolumnę wartości daty/godziny,
Wyrażenie logiczne definiujące jednokolumnową tabelę wartości daty/godziny.
Nuta
Ograniczenia dotyczące wyrażeń logicznych opisano w temacie CALCULATE funkcji.
Jeśli liczba określona dla
number_of_intervalsjest dodatnia, daty wdatessą przenoszone do przodu w czasie; jeśli liczba jest ujemna, daty wdatessą przesunięte z powrotem w czasie.Parametr
intervaljest wyliczeniem, a nie zestawem ciągów; dlatego wartości nie powinny być ujęte w cudzysłów. Ponadto wartości:year,quarter,month,daypowinny być w pełni zapisane podczas ich używania.Tabela wyników zawiera tylko daty, które istnieją w kolumnie
dates.Jeśli jest używana składnia kolumny dat, a daty w bieżącym kontekście nie tworzą ciągłego interwału, funkcja zwraca błąd.
Ta funkcja nie jest obsługiwana w trybie DirectQuery w przypadku użycia w kolumnach obliczeniowych lub regułach zabezpieczeń na poziomie wiersza.
Przykład — przesunięcie zestawu dat
Poniższa formuła oblicza daty, które są rok przed datami w bieżącym kontekście.
= DATEADD ( DateTime[DateKey], -1, YEAR )
Przykład analizy czasowej opartej na kalendarzu
Poniższa formuła zwraca tabelę dat przesuniętą rok wstecz z dat w bieżącym kontekście.
DATEADD ( FiscalCalendar, -1, YEAR )
Specjalne zachowanie, gdy dane wejściowe są kolumną daty
Gdy zaznaczenie obejmuje ostatnie dwa dni miesiąca, DATEADD będzie używać semantyki "extension" i będzie zawierać dni do końca miesiąca. Jeśli na przykład 27 lutego i 28 z 2013 r. zostaną uwzględnione w zaznaczeniu, a miesiąc zostanie dodany, DATEADD zwróci 27 marca do 31 marca.
To zachowanie występuje tylko wtedy, gdy ostatnie dwa dni miesiąca zostaną uwzględnione w zaznaczeniu. Jeśli wybrano tylko 27 lutego, przejdzie do 27 marca.
= DATEADD(DateTime[DateKey], 1, month)
Analiza czasowa oparta na kalendarzu zapewnia większą kontrolę za pomocą dwóch opcjonalnych parametrów: "Extension" i "Truncation". Aby uzyskać szczegółowe informacje, zobacz powyższe opisy parametrów.
Zachowanie dla daty opartej na kalendarzuDodaj, gdy zaznaczenie jest bardziej szczegółowe niż poziom przesunięcia
Gdy jest używane odwołanie do kalendarza i wybór jest bardziej precyzyjny niż poziom zmiany, zostanie podjęte podejście oparte na indeksie. Aby zilustrować to zachowanie, rozważmy scenariusz, w którym wybór jest na poziomie daty, a DATEADD() zmienia się według miesiąca. Oto, co będzie robić DataDodaj:
Określ pozycje bieżącego zaznaczenia w ciągu miesiąca.
Jeśli na przykład bieżące zaznaczenie obejmuje od 3 do 10 marca, pozycje pochodzą od 3 do 10 dnia miesiąca.Shift miesiąc Zastosuj zmianę miesiąca — np. zmiana +1 zmienia się na kwiecień.
Zwróć te same pozycje względne w przesuniętej miesiącu Pobierz trzeci do 10 nowego miesiąca (np. 3–10 kwietnia).
Parametry dla daty opartej na kalendarzuDodaj, gdy zaznaczenie jest bardziej szczegółowe niż poziom przesunięcia
Gdy stopień szczegółowości zaznaczenia jest drobniejszy niż jednostka zmiany (np. wybranie poszczególnych dat podczas zmiany według miesiąca), zachowanie oparte na indeksie może prowadzić do niejednoznaczności, zwłaszcza w miesiącach o różnych długościach. Aby obsłużyć te przypadki brzegowe, wprowadzono dwa parametry:
Parametr rozszerzenia (w przypadku małych → dużych przesunięć okresowych):
Określa, jak działa funkcja, gdy okres docelowy jest dłuższy niż bieżący. Użyj przechodzenia do przodu jednego miesiąca jako przykładu:
Precise: Zachowuje oryginalny zakres dat ściśle.
Feb 25–28→ →March 25–28Extending: umożliwia rozwinięcie okna w kierunku końca okresu w razie potrzeby.
Feb 25–28→ →March 25–31EndAligned: wyrównuje datę końcową z końcem okresu docelowego, gdy wybór osiągnie koniec okresu; w przeciwnym razie zachowuje pozycje względne.
Feb 28→ →March 31, a →Feb 27March 27
Obcięcie parametru (w przypadku dużych → zmian w małym okresie)
Określa, jak działa funkcja, gdy miesiąc docelowy jest krótszy niż bieżący. Użyj przechodzenia do tyłu jednego miesiąca jako przykładu:
Anchored: zakotwiczy wynik do ostatniej prawidłowej daty mniejszego okresu.
March 31→ →Feb 28Blanks: zwraca wartość pustą , gdy przesunięta data nie istnieje.
March 31→ → (puste) (od lutego nie ma 31 lat)
Różnice w zachowaniu między analizą czasu klasycznego i kalendarza
Niektóre scenariusze mogą przynieść różne wyniki podczas porównywania analizy czasu klasycznego i kalendarza. Na przykład w roku księżycowym SamePeriodLastYear wygeneruje różne wyniki na stopień szczegółowości daty. W analizie czasowej opartej na kalendarzu zmiana 29 lutego 2008 r. z powrotem na rok 1 marca 2007 r., ponieważ jest traktowana jako 60 dzień roku. W klasycznej inteligencji czasowej ta sama zmiana zwraca 28 lutego 2007 roku. Obejściem jest użycie DATEADD(Calendar, -<number of a year>, month). Jeśli na przykład rok ma 13 miesięcy w kalendarzu, użyj wartości DATEADD(Kalendarz, -13, miesiąc). Takie podejście zmieni się o miesiąc, więc luty 2008 r. przejdzie do lutego 2007 r.