Condividi tramite


DATEADD

Si applica a:colonna calcolatatabella calcolata calcolo visivomisura

Nota

Questa funzione è sconsigliata per l'uso nei calcoli visivi perché probabilmente restituisce risultati senza significato.

Se l'input è una colonna di data, restituisce una tabella contenente una colonna di date, spostata in avanti o indietro nel tempo in base al numero specificato di intervalli dalle date nel contesto corrente.
Se l'input è un calendario, la funzione restituisce date spostate in avanti o indietro nel tempo in base al numero specificato di intervalli, in base al contesto corrente. L'output include le colonne con tag primarie e le colonne correlate al tempo.

Sintassi

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

Parametri

Termine Definizione
dates or calendar Colonna contenente date o riferimenti al calendario.
number_of_intervals Intero che specifica il numero di intervalli da aggiungere o sottrarre dalle date.
interval Intervallo in base al quale spostare le date. Il valore per interval può essere uno dei seguenti: year, quarter, month, week, day. L'enumerazione della settimana è applicabile solo quando viene fornito un riferimento al calendario.
extension Applicabile solo quando viene fornito un riferimento al calendario. Definire il comportamento quando il periodo di tempo originale ha meno date rispetto al periodo di tempo risultante. I valori validi sono: EXTENDING (Default), PRECISE, ENDALIGNED.
truncation Applicabile solo quando viene fornito un riferimento al calendario. Definire il comportamento quando il periodo di tempo originale ha più date rispetto al periodo di tempo risultante. I valori validi sono: BLANKS (impostazione predefinita), ANCHORED.

Valore restituito

Per l'input della colonna data, una tabella contenente una singola colonna di valori di data.
Per l'input del calendario, una tabella che contiene tutte le colonne con tag primarie e le colonne correlate all'ora per i periodi spostati, nel contesto corrente.

Osservazioni

L'argomento dates può essere uno dei seguenti:

  • Riferimento a una colonna di data/ora,

  • Espressione di tabella che restituisce una singola colonna di valori di data/ora,

  • Espressione booleana che definisce una tabella a colonna singola di valori di data/ora.

    Nota

    I vincoli sulle espressioni booleane sono descritti nell'argomento CALCULATE funzione.

  • Se il numero specificato per number_of_intervals è positivo, le date in dates vengono spostate in avanti nel tempo; se il numero è negativo, le date in dates vengono spostate indietro nel tempo.

  • Il parametro interval è un'enumerazione, non un set di stringhe; pertanto i valori non devono essere racchiusi tra virgolette. Inoltre, i valori: year, quarter, month, day devono essere digitati in modo completo quando vengono usati.

  • La tabella dei risultati include solo le date presenti nella colonna dates.

  • Se viene utilizzata la sintassi della colonna di data e le date nel contesto corrente non formano un intervallo contiguo, la funzione restituisce un errore.

  • Questa funzione non è supportata per l'uso in modalità DirectQuery quando viene usata nelle colonne calcolate o nelle regole di sicurezza a livello di riga.

Esempio - Spostamento di un set di date

La formula seguente calcola le date di un anno prima delle date nel contesto corrente.

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

Esempio di Business Intelligence per le gerarchie temporali basate su calendario

La formula seguente restituisce una tabella di date spostate di un anno dalle date nel contesto corrente.

DATEADD ( FiscalCalendar, -1, YEAR )

Comportamento speciale quando l'input è una colonna di data

Quando la selezione include gli ultimi due giorni del mese, DATEADD userà la semantica "estensione" e includerà i giorni fino alla fine del mese. Ad esempio, quando il 27 febbraio e il 28 del 2013 vengono inclusi nella selezione e viene aggiunto un mese, DATEADD restituirà il 27 marzo al 31.

Questo comportamento si verifica solo quando nella selezione sono inclusi gli ultimi due giorni del mese. Se viene selezionato solo il 27 febbraio, verrà visualizzato il 27 marzo.

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

L'intelligence per le gerarchie temporali basata su calendario offre un maggiore controllo tramite due parametri facoltativi: "Estensione" e "Troncamento". Per informazioni dettagliate, vedere le descrizioni dei parametri precedenti.

Comportamento per la data basata sul calendarioAggiungi quando la selezione è a un livello più sottile rispetto al livello di spostamento

Quando si usa il riferimento al calendario e la selezione è a un livello più sottile rispetto al livello di spostamento, viene adottato un approccio basato su indice. Per illustrare questo comportamento, si consideri lo scenario in cui la selezione è a livello di data e DATEADD() viene spostata per mese. Ecco le operazioni che DateAdd eseguirà:

  • Determinare le posizioni della selezione corrente entro il mese.
    Ad esempio, se la selezione corrente si estende dal 3 al 10 marzo, le posizioni sono dal 3 al 10° giorno del mese.

  • Sposta il mese Applica il turno di mese, ad esempio un turno di +1 modifiche da marzo ad aprile.

  • Restituisce le stesse posizioni relative nel mese spostato Recupera il 3° al 10 del nuovo mese (ad esempio, 3-10 aprile).

Parametri per la data basata sul calendarioAggiungi quando la selezione è a un livello più fine rispetto al livello di spostamento

Quando la granularità della selezione è più fine dell'unità di spostamento (ad esempio, la selezione di singole date durante lo spostamento in base al mese), il comportamento basato sull'indice può causare ambiguità, in particolare nei mesi di lunghezze variabili. Per gestire questi casi limite, vengono introdotti due parametri:

Parametro di estensione (per piccoli → turni di periodi di grandi dimensioni):

Controlla il comportamento della funzione quando il periodo di destinazione è più lungo di quello corrente. Usare lo spostamento in avanti di un mese come esempio:

  • Precise: mantiene rigorosamente l'intervallo di date originale.
    Feb 25–28 → →March 25–28

  • Extending: consente alla finestra di espandersi verso la fine del periodo , se necessario.
    Feb 25–28 → →March 25–31

  • EndAligned: allinea la data di fine con la fine del periodo di destinazione quando la selezione raggiunge la fine del periodo; in caso contrario, mantiene le posizioni relative.
    Feb 28 → → March 31, mentre Feb 27March 27

Parametro di troncamento (per grandi → piccoli turni di periodo)

Controlla il comportamento della funzione quando il mese di destinazione è più breve di quello corrente. Usare lo spostamento indietro di un mese come esempio:

  • Anchored: ancora il risultato all'ultima data valida del periodo più piccolo.
    March 31 → →Feb 28

  • Blanks: restituisce vuoto quando la data spostata non esiste.
    March 31 → → (vuoto) (dal 31 febbraio non è disponibile)

Differenze di comportamento tra la funzionalità classica e l'intelligence per le gerarchie temporali del calendario

Alcuni scenari possono produrre risultati diversi quando si confronta l'intelligenza temporale classica e quella del calendario. Ad esempio, in un anno lunare, SamePeriodLastYear produrrà risultati diversi con la granularità della data. Nell'intelligenza temporale basata sul calendario, spostando il 29 febbraio 2008 indietro di un anno si ottiene il 1° marzo 2007, perché viene trattato come il 60° giorno dell'anno. Nell'intelligenza temporale classica, lo stesso turno restituisce il 28 febbraio 2007. La soluzione alternativa consiste nell'usare DATEADD(Calendario, numero< di un anno>, mese). Ad esempio, se un anno ha 13 mesi nel calendario, usare DATEADD(Calendario, -13, mese). Questo approccio passerà di mese in modo che febbraio 2008 passerà a febbraio 2007.

funzioni di Business Intelligence per le gerarchie temporalifunzioni di data e ora