Usare le funzionalità di Business Intelligence per le gerarchie temporali DAX

Completato

DAX include diverse funzionalità di Business Intelligence per le gerarchie temporali per semplificare l'attività di modifica del contesto di filtro per la data. È possibile scrivere molte di queste formule di intelligenza usando una funzione CALCULATE che modifica i filtri di data, ma che crea più lavoro.

Nota

Molte funzionalità di Business Intelligence per le gerarchie temporali DAX riguardano periodi di date standard, in particolare anni, trimestri e mesi. In caso di periodi di tempo irregolari, ad esempio, mesi finanziari che iniziano a metà del mese del calendario, oppure se è necessario usare le settimane o i periodi di tempo (ore, minuti e così via), le funzionalità di Business Intelligence per le gerarchie temporali DAX non risultano utili. Sarà invece necessario usare la funzione CALCULATE e passare i filtri di ora o data creati manualmente.

Requisito della tabella data

Per usare le funzionalità di Business Intelligence per le gerarchie temporali DAX, è necessario soddisfare il requisito del modello dei prerequisiti di avere almeno una tabella data nel modello. Una tabella data è una tabella che soddisfa i requisiti seguenti:

  • Deve avere una colonna Data del tipo di dati (oppure data/ora), nota come colonna data.
  • La colonna data deve contenere valori univoci.
  • La colonna data non deve contenere valori BLANK.
  • La colonna data non deve avere date mancanti.
  • La colonna data deve estendersi ad anni completi. Un anno non coincide necessariamente con un anno di calendario (gennaio-dicembre).
  • La tabella data deve essere indicata come tabella data.

Per altre informazioni, vedere Creare tabelle di date in Power BI Desktop.

Esecuzione dei riepiloghi nel tempo

Un gruppo di funzionalità di Business Intelligence per le gerarchie temporali DAX è interessato dall'esecuzione dei riepiloghi nel tempo:

  • DATESYTD: restituisce una tabella a colonna singola contenente le date dall'inizio dell'anno (YTD) nel contesto di filtro corrente. Questo gruppo include anche le funzioni DAX DATESMTD e DATESQTD da inizio mese e da inizio trimestre. È possibile passare queste funzioni come filtri nella funzione DAX CALCULATE.
  • TOTALYTD: valuta un'espressione per YTD nel contesto di filtro corrente. Sono incluse anche le funzioni DAX equivalenti da inizio mese e da inizio trimestre di TOTALQTD e TOTALMTD.
  • DATESBETWEEN: restituisce una tabella in cui è contenuta una colonna di date che inizia con una determinata data di inizio e continua fino a una determinata data di fine.
  • DATESINPERIOD: restituisce una tabella in cui è contenuta una colonna di date che inizia con una determinata data e continua in base al numero di intervalli specificato.

Nota

Anche se la funzione TOTALYTD è semplice da usare, esistono dei limiti per passare un'espressione filtro. Se è necessario applicare più espressioni filtro, usare la funzione CALCULATE e quindi passare la funzione DATESYTD come una delle espressioni filtro.

Nell'esempio seguente si creerà il primo calcolo della funzionalità di Business Intelligence per le gerarchie temporali che userà la funzione TOTALYTD. La sintassi è la seguente:

TOTALYTD(<expression>, <dates>, [, <filter>][, <year_end_date>])

La funzione richiede un'espressione e, poiché è comune a tutte le funzionalità di Business Intelligence per le gerarchie temporali, un riferimento alla colonna data di una tabella data contrassegnata. Facoltativamente, è possibile passare una singola espressione filtro o la data di fine anno, obbligatoriamente solo quando l'anno non termina il 31 dicembre.

Scaricare e aprire il file Adventure Works DW 2020 M07.pbix. Aggiungere quindi la definizione di misura seguente alla tabella Sales per il calcolo dei ricavi YTD. Formattare la misura come valuta con due posizioni decimali.

Revenue YTD =
TOTALYTD([Revenue], 'Date'[Date], "6-30")

Il valore della data di fine anno "6-30" rappresenta il 30 giugno.

A pagina 1 del report aggiungere la misura Revenue YTD (Ricavi YTD) all'oggetto visivo matrice. Si noti che produce un riepilogo degli importi dei ricavi dall'inizio dell'anno fino al mese filtrato.

Un'immagine mostra un oggetto visivo matrice con raggruppamento per anno e mese nelle righe e i riepiloghi dei ricavi e dei ricavi YTD. I valori YTD sono evidenziati.

Confronti nel tempo

Un altro gruppo di funzionalità di Business Intelligence per le gerarchie temporali DAX è interessato dallo spostamento dei periodi di tempo:

  • DATEADD: restituisce una tabella in cui è contenuta una colonna di date, spostate avanti o indietro nel tempo in base al numero di intervalli specificato rispetto alle date nel contesto corrente.
  • PARALLELPERIOD: restituisce una tabella in cui è contenuta una colonna di date che rappresenta un periodo parallelo alle date nella colonna di date specificate nel contesto di filtro corrente, con le date spostate di un numero di intervalli in avanti o indietro nel tempo.
  • SAMEPERIODLASTYEAR: restituisce una tabella in cui è contenuta una colonna di date spostate di un anno indietro nel tempo rispetto alle date nella colonna di date specificate, nel contesto di filtro corrente.
  • Molte funzioni DAX helper per spostarsi in avanti o indietro per periodi di tempo specifici, tutte restituiscono una tabella di date. Queste funzioni helper includono NEXTDAY, NEXTMONTH, NEXTQUARTER, NEXTYEAR e PREVIOUSDAY, PREVIOUSMONTH, PREVIOUSQUARTER e PREVIOUSYEAR.

A questo punto, verrà aggiunta alla tabella Sales una misura che calcola i ricavi per l'anno precedente usando la funzione SAMEPERIODLASTYEAR. Formattare la misura come valuta con due posizioni decimali.

Revenue PY =
VAR RevenuePriorYear = CALCULATE([Revenue], SAMEPERIODLASTYEAR('Date'[Date]))
RETURN
    RevenuePriorYear

Aggiungere ora la misura Revenue PY (Ricavi PY) all'oggetto visivo matrice. Si noti che questa produce risultati simili agli importi dei ricavi dell'anno precedente.

Un'immagine mostra un oggetto visivo matrice con raggruppamento per anno e mese nelle righe e i riepiloghi di ricavi, ricavi YTD e ricavi PY. I valori mensili dei ricavi PY per FY2019 sono uguali ai valori mensili dei ricavi per FY2018.

Si modificherà quindi la misura rinominandola Revenue YoY % e quindi aggiornando la clausola RETURN per calcolare il rapporto di modifica. Assicurarsi di modificare il formato in una percentuale con due posizioni decimali.

Revenue YoY % =
VAR RevenuePriorYear = CALCULATE([Revenue], SAMEPERIODLASTYEAR('Date'[Date]))
RETURN
    DIVIDE(
        [Revenue] - RevenuePriorYear,
        RevenuePriorYear
    )

Si noti che la misura Revenue YoY % (Ricavi YoY%) produce un rapporto del fattore di modifica nei ricavi mensili dell'anno precedente. Ad esempio, luglio 2018 rappresenta un aumento del 106,53% nei ricavi mensili dell'anno precedente e novembre 2018 rappresenta una riduzione del 24,22% nei ricavi mensili dell'anno precedente.

Un'immagine mostra un oggetto visivo matrice con raggruppamento per anno e mese nelle righe e i riepiloghi di ricavi, ricavi YTD e ricavi YoY in percentuale. I valori mensili dei ricavi di YoY in percentuale per FY2019 sono valori formattati come percentuali.

Nota

La misura Revenue YoY % (Ricavi YoY%) dimostra un uso corretto delle variabili DAX. La misura migliora la leggibilità della formula e consente di eseguire uno unit test di parte della logica della misura, restituendo il valore della variabile RevenuePriorYear. In aggiunta, la misura è una formula ottimale perché non deve recuperare due volte il valore dei ricavi dell'anno precedente. Dopo averlo archiviato in una variabile, la clausola RETURN usa il valore della variabile due volte.