Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Restituisce più righe posizionate entro l'intervallo specificato.
Sintassi
WINDOW ( from[, from_type], to[, to_type][, <relation> or <axis>][, <orderBy>][, <blanks>][, <partitionBy>][, <matchBy>][, <reset>] )
Parametri
| Termine | Definizione |
|---|---|
from |
Indica dove viene avviata la finestra. Può essere qualsiasi espressione DAX che restituisce un valore scalare.
Il comportamento dipende dal parametro from_type: - Se from_type è REL, il numero di righe da tornare indietro (valore negativo) o in avanti (valore positivo) dalla riga corrente per ottenere la prima riga nella finestra.
- Se from_type è e from è ABSpositivo, è la posizione dell'inizio della finestra dall'inizio della partizione. L'indicizzazione è basata su 1 e 0 viene interpretata come 1. Ad esempio, 0 e 1 indicano che la finestra inizia dall'inizio della partizione. Se from è negativo, è la posizione dell'inizio della finestra dalla fine della partizione. -1 indica l'ultima riga nella partizione. |
from_type |
Modifica il comportamento del parametro from. I valori possibili sono ABS (assoluto) e REL (relativo). Il valore predefinito è REL. |
to |
Uguale a from, ma indica la fine della finestra. L'ultima riga è inclusa nella finestra. |
to_type |
Uguale a from_type, ma modifica il comportamento di to. |
relation |
(Facoltativo) Espressione di tabella da cui vengono restituite le righe di output. Se utilizzato nei calcoli visivi, questo parametro accetta un asse nella forma visiva.
Se specificato, tutte le colonne in partitionBy devono provenire da essa o da una tabella correlata.
Se omesso: - È necessario specificare orderBy in modo esplicito.- Tutte le orderBy espressioni e partitionBy devono essere nomi di colonna completi e provenire da una singola tabella.
: per impostazione predefinita viene ALLSELECTED() di tutte le colonne in orderBy e partitionBy. |
orderBy |
(Facoltativo) Clausola ORDERBY() contenente le espressioni che definiscono la modalità di ordinamento di ogni partizione.
Se omesso: - È necessario specificare relation in modo esplicito.
- Per impostazione predefinita, l'ordinamento da parte di ogni colonna in relation non è già specificato in partitionBy. |
blanks |
(Facoltativo) Enumerazione che definisce come gestire i valori vuoti durante l'ordinamento del relation o axis.
I valori supportati sono:
Quando si specificano sia il blanks parametro che gli spazi vuoti nella ORDERBYfunzione () nelle singole espressioni, blanks nell'espressione orderBy individuale ha la priorità per l'espressione orderBy pertinente. Le espressioni OrderBy senza blanks essere specificate rispettano il blanks parametro nella funzione padre. |
partitionBy |
(Facoltativo) Clausola relation viene considerato come una singola partizione. |
matchBy |
(Facoltativo) Clausola |
reset |
(Facoltativo) Disponibile solo nei calcoli visivi. Indica se il calcolo viene reimpostato e a quale livello della gerarchia di colonne della forma visiva. I valori accettati sono: un riferimento di campo a una colonna nella forma visiva corrente, NONE (impostazione predefinita), LOWESTPARENT, HIGHESTPARENTo un numero intero. Il comportamento dipende dal segno intero: - Se zero o omesso, il calcolo non viene reimpostato. Equivalente a NONE.
: se positivo, l'intero identifica la colonna a partire dal più alto, indipendentemente dal livello di granularità. HIGHESTPARENT equivale a 1.
: se negativo, l'intero identifica la colonna a partire dal livello più basso, rispetto alla granularità corrente. LOWESTPARENT equivale a -1. |
Valore restituito
Tutte le righe della finestra.
Osservazioni:
Ad eccezione delle colonne aggiunte dalle DAX funzioni di tabella, ogni colonna in relation (quando matchBy non è presente) o ogni colonna in matchBy e partitionBy (quando matchBy è presente), deve avere un valore esterno corrispondente per definire la riga corrente su cui operare. Se from_type e to_type entrambi hanno valore ABS, il codice seguente si applica solo alle partitionBy colonne:
- Se esiste esattamente una colonna esterna corrispondente, viene usato il relativo valore.
- Se non esiste alcuna colonna esterna corrispondente:
- WINDOW determina innanzitutto tutte le colonne che non hanno una colonna esterna corrispondente.
- Per ogni combinazione di valori esistenti per queste colonne nel WINDOWcontesto WINDOW padre, viene valutata e vengono restituite le righe corrispondenti.
- WINDOWL'output finale è un'unione di queste righe.
- Se esistono più colonne esterne corrispondenti, viene restituito un errore.
Se tutte le colonne di relationsono state aggiunte da DAX funzioni di tabella, viene restituito un errore.
Se matchBy è presente, WINDOW tenta di usare matchBy le colonne e partitionBy per identificare la riga.
Se matchBy non è presente e le colonne specificate all'interno orderBy di e partitionBy non possono identificare in modo univoco ogni riga in relation:
- WINDOW tenta di trovare il minor numero di colonne aggiuntive necessarie per identificare in modo univoco ogni riga.
- Se è possibile trovare tali colonne, WINDOW accoda automaticamente queste nuove colonne a
orderBye ogni partizione viene ordinata usando questo nuovo set di colonne orderBy. - Se tali colonne non vengono trovate, viene restituito un errore.
Viene restituita una tabella vuota se:
- Il valore esterno corrispondente di una
orderBycolonna opartitionBynon esiste all'internorelationdi . - L'intera finestra si trova all'esterno della partizione oppure l'inizio della finestra si trova dopo la fine.
Se si usa WINDOW all'interno di una colonna calcolata definita nella stessa tabella di relatione orderBy viene omesso, viene restituito un errore.
Se l'inizio della finestra è prima della prima riga, viene impostata sulla prima riga. Analogamente, se la fine della finestra si trova dopo l'ultima riga della partizione, viene impostata sull'ultima riga.
È possibile usare reset solo nei calcoli visivi e non è possibile usarlo in combinazione con orderBy o partitionBy. Se reset è presente, è possibile specificare axis ma non relation.
Se il valore di reset è assoluto (un numero intero positivo, HIGHESTPARENTo un riferimento a un campo) e il calcolo viene valutato al livello di destinazione o superiore al livello di destinazione nella gerarchia, il calcolo viene reimpostato per ogni singolo elemento. Ovvero, la funzione viene valutata all'interno di una partizione contenente solo l'elemento specifico.
Gli esempi in questo articolo possono essere usati con il modello adventure works DW 2020 di Power BI Desktop di esempio. Per ottenere il modello, vedere DAX modello di esempio.
Esempio 1 - Misura
La misura seguente:
3-day Average Price =
AVERAGEX (
WINDOW (
-2,
REL,
0,
REL,
SUMMARIZE ( ALLSELECTED ( 'Sales' ), 'Date'[Date], 'Product'[Product] ),
ORDERBY ( 'Date'[Date] ),
KEEP,
PARTITIONBY ( 'Product'[Product] )
),
CALCULATE ( AVERAGE ( Sales[Unit Price] ) )
)
Restituisce la media di 3 giorni dei prezzi unità per ogni prodotto. La finestra di 3 giorni è costituita da tre giorni in cui il prodotto aveva vendite, non necessariamente tre giorni di calendario consecutivi.
Esempio 2 : misura
La misura seguente:
RunningSum =
SUMX (
WINDOW (
1,
ABS,
0,
REL,
ALLSELECTED ( 'Date'[Fiscal Year], 'Date'[Month Number Of Year] ),
PARTITIONBY ( 'Date'[Fiscal Year] )
),
[Total Sales]
)
Restituisce la somma in esecuzione per Total Sales by Month Number Of Year, riavviando per ogni anno fiscale:
| Anno | Numero mese dell'anno | Importo vendite | RunningSum |
|---|---|---|---|
| FY2018 | 1 | $ 1.327.675 | $ 1.327.675 |
| FY2018 | 2 | $ 3.936.463 | $ 5.264.138 |
| FY2018 | 3 | $ 700.873 | $ 5.965.011 |
| FY2018 | 4 | $ 1.519,.275 | $ 7.484.286 |
| FY2018 | 5 | $ 2.960.378 | $ 10.444.664 |
| FY2018 | 6 | $ 1.487.671 | $ 11.932.336 |
| FY2018 | 7 | $ 1.423.357 | $ 13.355.693 |
| FY2018 | 8 | $ 2.057.902 | $ 15.413.595 |
| FY2018 | 9 | $ 2.523.948 | $ 17.937.543 |
| FY2018 | 10 | $ 561.681 | $ 18.499.224 |
| FY2018 | 11 | $ 4.764.920 | $ 23.264.145 |
| FY2018 | 12 | $ 596.747 | $ 23,860.891 |
| AF2019 | 1 | $ 1.847.692 | $ 1.847.692 |
| AF2019 | 2 | $ 2.829.362 | $ 4.677.054 |
| AF2019 | 3 | $ 2.092.434 | $ 6.769.488 |
| AF2019 | 4 | $ 2.405.971 | $ 9.175.459 |
| AF2019 | 5 | $ 3.459.444 | $ 12.634.903 |
| AF2019 | 6 | $ 2.850.649 | $ 15.485.552 |
| AF2019 | 7 | $ 2.939.691 | $ 18.425.243 |
| AF2019 | 8 | $ 3.964.801 | $ 22.390.045 |
| AF2019 | 9 | $ 3.287.606 | $ 25.677.650 |
| AF2019 | 10 | $ 2.157.287 | $ 27.834.938 |
| AF2019 | 11 | $ 3.611.092 | $ 31.446.030 |
| AF2019 | 12 | $ 2.624.078 | $ 34.070.109 |
| FY2020 | 1 | $ 3.235.187 | $ 3.235.187 |
| FY2020 | 2 | $ 4.070.046 | $ 7.305.233 |
| FY2020 | 3 | $ 4.429.833 | $ 11.735.066 |
| FY2020 | 4 | $ 4.002.614 | $ 15.737.680 |
| FY2020 | 5 | $ 5.265.797 | $ 21.003.477 |
| FY2020 | 6 | $ 3.465.241 | $ 24.468.717 |
| FY2020 | 7 | $ 3.513.064 | $ 27.981.781 |
| FY2020 | 8 | $ 5.247.165 | $ 33.228.947 |
| FY2020 | 9 | $ 5.104.088 | $ 38.333.035 |
| FY2020 | 10 | $ 3.542.150 | $ 41.875.184 |
| FY2020 | 11 | $ 5.151.897 | $ 47.027.081 |
| FY2020 | 12 | $ 4.851.194 | $ 51.878.275 |
Esempio 3 - Calcolo visivo
Il calcolo visivo seguente DAX query:
TotalSalesRunningSumByYear =
SUMX ( WINDOW ( 0, ABS, 0, REL, ROWS, HIGHESTPARENT ), [SalesAmount] )
Restituisce le vendite totali cumulative per mese, calcolate ogni anno. Il valore 1 può essere usato invece di HIGHESTPARENT, con lo stesso risultato.
Lo screenshot seguente mostra la matrice visiva e l'espressione di calcolo visivo:
Esempio 4 - Calcolo visivo
Il calcolo visivo seguente DAX query:
TotalSalesRunningSumByQuarter =
SUMX ( WINDOW ( 0, ABS, 0, REL,, -1 ), [SalesAmount] )
Restituisce le vendite totali cumulative per mese, calcolate lungo ogni trimestre.
Il valore LOWESTPARENT può essere usato invece di -1, con lo stesso risultato.