Excel DAX - Utilizzo di Time Intelligence

Hai appreso della potente funzionalità DAX Time Intelligence nel capitolo - Comprensione di Time Intelligence. In questo capitolo imparerai a usare le funzioni di time intelligence DAX in vari scenari.

Le funzioni di intelligenza temporale DAX includono:

  • Funzioni che ti aiutano a recuperare date o intervalli di date dai tuoi dati, che vengono utilizzati per calcolare i valori in periodi simili.

  • Funzioni che funzionano con intervalli di date standard, per consentire di confrontare i valori in mesi, anni o trimestri.

  • Funzioni che recuperano la prima e l'ultima data di un periodo specificato.

  • Funzioni che ti aiutano a lavorare sui saldi di apertura e chiusura.

Calcolo delle vendite cumulative

Puoi usare le funzioni di intelligenza temporale DAX per creare formule per il calcolo delle vendite cumulative. Le seguenti funzioni DAX possono essere utilizzate per calcolare i saldi di chiusura e apertura:

CLOSINGBALANCEMONTH (<expression>,<dates>, [<filter>]) - Valuta l'espressione nell'ultima data del mese nel contesto corrente.

OPENINGBALANCEMONTH (<expression>,<dates>, [<filter>]) - Valuta l'espressione alla prima data del mese nel contesto corrente.

CLOSINGBALANCEQUARTER (<expression>,<dates>, [<filter>]) - Valuta l'espressione nell'ultima data del trimestre nel contesto corrente.

OPENINGBALANCEQUARTER (<expression>,<dates>, [<filter>]) - Valuta l'espressione alla prima data del trimestre, nel contesto corrente.

CLOSINGBALANCEYEAR (<expression>,<dates>, [<filter>], [<year_end_date>]) - Valuta l'espressione nell'ultima data dell'anno nel contesto corrente.

OPENINGBALANCEYEAR (<expression>, <dates>, <filter>], [<year_end_date>]) - Valuta l'espressione alla prima data dell'anno nel contesto corrente.

È possibile creare i seguenti campi calcolati per l'inventario del prodotto in un momento specificato utilizzando le seguenti funzioni DAX:

Month Start Inventory Value: = OPENINGBALANCEMONTH ( 
   SUMX (ProductInventory, ProductInventory[UnitCost]*ProductInventory[UnitsBalance]), DateTime[DateKey]
)
Month End Inventory Value: = CLOSINGBALANCEMONTH ( 
   SUMX (ProductInventory, ProductInventory[UnitCost]*ProductInventory[UnitsBalance]), DateTime[DateKey]
)
Quarter Start Inventory Value: = OPENINGBALANCEQUARTER ( 
   SUMX ProductInventory, (ProductInventory[UnitCost]*ProductInventory[UnitsBalance]), DateTime[DateKey]
)
Quarter End Inventory Value: = CLOSINGBALANCEQUARTER ( 
   SUMX (ProductInventory, ProductInventory[UnitCost]*ProductInventory[UnitsBalance]), DateTime[DateKey]
)
Year Start Inventory Value: = OPENINGBALANCEYEAR ( 
   SUMX (ProductInventory, ProductInventory[UnitCost]*ProductInventory[UnitsBalance]), DateTime[DateKey]
)
Year End Inventory Value: = CLOSINGBALANCEYEAR ( 
   SUMX (ProductInventory, ProductInventory[UnitCost]*ProductInventory[UnitsBalance]), DateTime[DateKey]
)

Confronto dei valori in diversi periodi di tempo

I periodi di tempo predefiniti supportati da DAX sono mesi, trimestri e anni.

È possibile usare le seguenti funzioni di intelligenza temporale DAX per confrontare le somme in periodi di tempo diversi.

  • PREVIOUSMONTH (<dates>) - Restituisce una tabella che contiene una colonna di tutte le date del mese precedente, in base alla prima data nella colonna delle date, nel contesto corrente.

  • PREVIOUSQUARTER (<dates>) - Restituisce una tabella che contiene una colonna di tutte le date del trimestre precedente, in base alla prima data nella colonna delle date, nel contesto corrente.

  • PREVIOUSYEAR (<dates>, <year_end_date>]) - Restituisce una tabella che contiene una colonna di tutte le date dell'anno precedente, data l'ultima data nella colonna delle date, nel contesto corrente.

È possibile creare i seguenti campi calcolati per il calcolo della somma delle vendite nell'area occidentale nei periodi di tempo specificati per il confronto, utilizzando le funzioni DAX:

Previous Month Sales: = CALCULATE ( 
   SUM (WestSales[SalesAmount]), PREVIOUSMONTH (DateTime [DateKey])
)
Previous Quarter Sales: = CALCULATE ( 
   SUM (WestSales[SalesAmount]), PREVIOUSQUARTER (DateTime [DateKey])
)
Previous Year Sales: = CALCULATE ( 
   SUM (WestSales[SalesAmount]), PREVIOUSYEAR (DateTime [DateKey])
)

Confronto di valori in periodi di tempo paralleli

È possibile utilizzare la funzione di intelligenza temporale DAX PARALLELPERIOD per confrontare le somme in un periodo parallelo al periodo di tempo specificato.

PARALLELPERIOD (<date>, <numero_di_intervalli>, <intervallo>)

Questa funzione DAX restituisce una tabella che contiene una colonna di date che rappresenta un periodo parallelo alle date nella colonna delle date specificate, nel contesto corrente, con le date spostate di un numero di intervalli in avanti o indietro nel tempo.

È possibile creare il seguente campo calcolato per calcolare le vendite dell'anno precedente nella regione occidentale:

Previous Year Sales: = CALCULATE ( 
   SUM (West_Sales[SalesAmount]), PARALLELPERIOD (DateTime[DateKey],-1,year)
)

Calcolo dei totali parziali

È possibile usare le seguenti funzioni di intelligenza temporale DAX per calcolare i totali parziali o le somme parziali.

  • TOTALMTD (<expression>,<dates>, [<filter>]) - Valuta il valore dell'espressione per il mese fino ad oggi nel contesto corrente.

  • TOTALQTD (<expression>,<dates>, <filter>]) - Valuta il valore dell'espressione per le date nel trimestre fino ad oggi, nel contesto corrente.

  • TOTALYTD (<expression>,<dates>, [<filter>], [<year_end_date>]) - Valuta il valore dall'inizio dell'anno dell'espressione nel contesto corrente.

È possibile creare i seguenti campi calcolati per calcolare la somma corrente delle vendite nella regione occidentale in periodi di tempo specificati, utilizzando le funzioni DAX:

Somma mensile corrente: = TOTALMTD (SUM (West_Sales [SalesAmount]), DateTime [DateKey])

Somma parziale trimestre: = TOTALQTD (SUM (WestSales [SalesAmount]), DateTime [DateKey])

Somma anno corrente: = TOTALYTD (SUM (WestSales [SalesAmount]), DateTime [DateKey])

Calcolo di un valore su un intervallo di date personalizzato

Puoi usare le funzioni di time intelligence DAX per recuperare un set personalizzato di date, che puoi usare come input per una funzione DAX che esegue calcoli, per creare aggregazioni personalizzate in periodi di tempo.

DATESINPERIOD (<dates>, <start_date>, <number_of_intervals>, <interval>) - Restituisce una tabella che contiene una colonna di date che inizia con start_date e continua per il number_of_intervals specificato.

DATESBETWEEN (<dates>, <start_date>, ) - Restituisce una tabella che contiene una colonna di date che inizia con start_date e continua fino a end_date.

DATEADD (<dates>,<number_of_intervals>,<interval>) - Restituisce una tabella che contiene una colonna di date, spostata avanti o indietro nel tempo del numero di intervalli specificato dalle date nel contesto corrente.

FIRSTDATE (<dates>) - Restituisce la prima data nel contesto corrente per la colonna di date specificata.

LASTDATE (<dates>) - Restituisce l'ultima data nel contesto corrente per la colonna di date specificata.

È possibile creare le seguenti formule DAX per calcolare la somma delle vendite nell'area occidentale in un intervallo di date specificato, utilizzando le funzioni DAX:

  • Formula DAX per calcolare le vendite per i 15 giorni precedenti il ​​17 luglio 2016.

CALCULATE ( 
   SUM (WestSales[SalesAmount]), DATESINPERIOD (DateTime[DateKey], DATE(2016,17,14), -15, day)
)
  • Formula DAX per creare un campo calcolato che calcola le vendite del primo trimestre 2016.

= CALCULATE (
   SUM (WestSales[SalesAmount]),DATESBETWEEN (DateTime[DateKey], DATE (2016,1,1), DATE (2016,3,31))
)
  • Formula DAX per creare un campo calcolato che ottenga la prima data in cui è stata effettuata una vendita nella regione occidentale per il contesto corrente.

= FIRSTDATE (WestSales [SaleDateKey])
  • Formula DAX per creare un campo calcolato che ottiene l'ultima data in cui è stata effettuata una vendita nella regione occidentale per il contesto corrente.

= LASTDATE (WestSales [SaleDateKey])
  • Formula DAX per calcolare le date che sono un anno prima delle date nel contesto corrente.

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