🔍 Cos’è WINDOW()
in DAX?
La funzione WINDOW()
è una delle nuove funzioni semantiche introdotte nel linguaggio DAX all’interno del modello semantico di Power BI (ex “dataset”), pensata per semplificare il calcolo su finestre mobili e migliorare la leggibilità del codice.
In pratica, permette di definire un intervallo (una “finestra”) di righe rispetto alla posizione corrente e di applicarci funzioni di aggregazione come SUMX
, AVERAGEX
, MAXX
, ecc.
🧪 Sintassi di base
WINDOW(
<FromOffset>,
<ToOffset>,
[<Relation>],
[<OrderBy>],
[<WindowingFunction>]
)
FromOffset / ToOffset: indicano i limiti della finestra rispetto alla riga corrente (0 è la riga attuale, -1 è la precedente, 1 è la successiva, ecc.)
Relation: opzionale, è la tabella di riferimento
OrderBy: campo o espressione per l’ordinamento della finestra
WindowingFunction: ad esempio
ROWS
,RANGE
🔧 Esempi pratici
📈 1. Media mobile a 3 mesi:
MovingAverage3M :=
AVERAGEX(
WINDOW(-2, 0, ALL(‘Date’), ORDERBY(‘Date'[Date])),
[Vendite]
)
Questo calcolo prende la media delle vendite nelle 3 righe precedenti la riga corrente, ordinate per data
📉 2. Differenza tra valori consecutivi (analisi variazioni):
DeltaGiornaliero :=
[Valore] –
CALCULATE(
FIRSTNONBLANK([Valore], 1),
WINDOW(-1, -1, ALL(‘Date’), ORDERBY(‘Date'[Date]))
)
Simula un LEAD
/LAG
per confrontare una riga con quella precedente.
🚀 Vantaggi rispetto ai metodi classici
Prima (CALCULATE + FILTER ) | Ora (WINDOW ) |
---|---|
Codice più lungo e difficile da leggere | Sintassi pulita e intuitiva |
Più propenso a errori di contesto | Contesto gestito automaticamente |
Performance variabili su modelli grandi | Ottimizzato nel motore semantico
|
🧠 Quando usarla?
Analisi temporali (rolling average, differenze su periodi)
Report dinamici con finestre mobili personalizzabili
KPI complessi come volumi progressivi o variazioni
📎 Note importanti
Funziona solo nei modelli semantici moderni, quindi Power BI Dataset in DirectLake o modelli compatibili con DAX 2024+
Non è ancora supportata in Excel Power Pivot (almeno fino a marzo 2025)
Se vuoi portare le tue analisi DAX al livello successivo, la funzione WINDOW()
è una svolta assoluta. Imparare ad usarla ti permette di scrivere codice più chiaro, modulare ed efficiente.
2 Comments
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium