WINDOW
Si applica a:colonna calcolatatabella calcolataMeasurecalcolo visivo
Restituisce più righe posizionate all'interno dell'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 window. Può essere qualsiasi espressione DAX che restituisce un valuescalare .
Il comportamento dipende dal parametro from_type : - If from_type è REL, il numero di righe da tornare indietro (negativo value) or avanti (positivo value) dalla riga corrente per ottenere la riga first nel window.
: If from_type è ABS, andfrom è positivo, quindi è la posizione dell'inizio del window dall'inizio della partizione. L'indicizzazione è basata su 1. Ad esempio, 1 indica window inizia dall'inizio della partizione.
If
from è negativo, quindi è la posizione dell'inizio del window dalla fine della partizione. -1 indica la riga last nella partizione. |
from_type |
Modifica il comportamento del parametro from . I possibili values sono ABS (assoluto) and REL (relativo). Il valore predefinito è REL. |
to |
Uguale a from , ma indica la fine del window. La riga last è inclusa nel window. |
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.
If specificato, all colonne in partitionBy devono provenire da essa or una tabella related.
If omesso: - orderBy deve essere specificato in modo esplicito.: le espressioni di All orderBy andpartitionBy devono essere nomi di colonna completi and provengono da una singola tabella.
: per impostazione predefinita viene ALLSELECTED() delle colonne di all in orderBy andpartitionBy . |
axis |
(Facoltativo) Asse nella forma visiva. Disponibile solo nei calcoli visivi, and sostituisce relation . |
orderBy |
(Facoltativo) Clausola ORDERBY() contenente le espressioni che define la modalità di ordinamento di ogni partizione.
If omesso: - relation deve essere specificato in modo esplicito.
: per impostazione predefinita l'ordinamento in base a ogni colonna in relation not già specificata in partitionBy . |
blanks |
(Facoltativo) Enumerazione che definisce come gestire blankvalues durante l'ordinamento.
Questo parametro è riservato per usi futuri. Attualmente, l'unico value supportato è DEFAULT , dove il comportamento per values numerici è blankvalues viene ordinato tra zero andvaluesnegativo. Il comportamento delle stringhe è blankvalues vengono ordinati prima di all stringhe, incluse le stringhe vuote. |
partitionBy |
(Facoltativo) Clausola PARTITIONBY() contenente le colonne che define la modalità di partizionamento delle relation .
If omesso, relation viene considerato come una singola partizione. |
matchBy |
(Facoltativo) Clausola MATCHBY() contenente le colonne che define come trovare le corrispondenze con i dati and identificare la riga corrente. |
reset |
(Facoltativo) Disponibile solo nei calcoli visivi. Indica if il calcolo viene reimpostato, and a quale livello della gerarchia di colonne della forma visiva. I values accettati sono: un riferimento di campo a una colonna nella forma visiva corrente, NONE (impostazione predefinita), LOWESTPARENT , HIGHESTPARENT , or un numero intero. Il comportamento dipende dall'intero sign: - If zero or omesso, il calcolo viene reimpostato not. Equivalente a NONE .
: If positivo, l'intero identifica la colonna a partire dal più alto, indipendentemente dal livello di granularità. HIGHESTPARENT equivale a 1.
: If negativo, l'intero identifica la colonna a partire dal più basso, rispetto alla granularità corrente. LOWESTPARENT equivale a -1. |
Restituisce value
All righe del window.
Osservazioni:
Except per le colonne aggiunte da funzioni di tabella DAX, ogni colonna in relation
, quando matchBy
è not presente, or ogni colonna in matchBy
andpartitionBy
, quando matchBy
è presente, deve disporre di un value esterno corrispondente per define la riga corrente su cui operare.
If
from_type
and
to_type
entrambi dispongono di valueABS, i valori seguenti si applicano solo alle colonne partitionBy
:
- If esiste esattamente una colonna esterna corrispondente, viene usata la relativa value.
-
If non esiste alcuna colonna esterna corrispondente:
- WINDOW determinerà first colonne all senza colonna esterna corrispondente.
- Per ogni combinazione di values esistenti per queste colonne nel contesto padre di WINDOWviene valutata WINDOW, and vengono restituite le righe corrispondenti.
- WINDOW'output finale è un union di queste righe.
- If è presente più di una colonna esterna corrispondente, viene restituita una error.
If
all delle colonne di relation
sono state aggiunte da DAX funzioni di tabella, viene restituito un error.
If
matchBy
è presente, WINDOW tenterà di usare matchBy
andpartitionBy
colonne per identificare la riga.
If
matchBy
è not presente and le colonne specificate in orderBy
andpartitionBy
non possono identificare in modo univoco ogni riga in relation
, quindi:
- WINDOW tenterà di find il minor numero di colonne aggiuntive necessarie per identificare in modo univoco ogni riga.
-
If è possibile trovare tali colonne, WINDOW accoderà automaticamente queste nuove colonne a
orderBy
, and ogni partizione viene ordinata usando questo nuovo set di colonne orderBy. - If non è possibile trovare tali colonne, viene restituito un error.
Viene restituita una tabella vuota if:
- Il value esterno corrispondente di una colonna
orderBy
orpartitionBy
esiste not all'interno direlation
. - L'intero window si trova all'esterno della partizione, or l'inizio del window è dopo la fine.
If
WINDOW viene utilizzato all'interno di una colonna calcolata definita nella stessa tabella di relation
, andorderBy
viene omesso, viene restituito un error.
If l'inizio della window risulta essere prima della riga first, quindi viene impostata sulla riga first. Analogamente, if la fine del window si trova dopo la riga last della partizione, quindi viene impostata sulla riga last.
reset
può essere usato solo nei calcoli visivi, and non può essere usato in combinazione con orderBy
orpartitionBy
.
If
reset
è presente, è possibile specificare axis
, ma non relation
.
Esempio 1 - measure
L'measureseguente:
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 il 3-dayaverage dei prezzi unit unit per ogni product. Si noti che il 3-daywindow è costituito da tre giorni in cui il product ha vendite, not necessariamente tre giorni consecutivi calendar.
Esempio 2 - measure
L'measureseguente:
RunningSum =
SUMX (
WINDOW (
1, ABS, 0, REL,
ALLSELECTED (
'Date'[Fiscal Year],
'Date'[Month Number Of Year]
),
PARTITIONBY ( 'Date'[Fiscal Year] )
),
[Total Sales]
)
Restituisce il sum in esecuzione per Total Sales by Month Number Of Year, riavviando per ogni YearFiscal :
Year | Month numero di Year | Sales Amount | 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 month, calcolate lungo ogni year. È possibile usare values 1 and -2 anziché HIGHESTPARENT
, con gli stessi risultati.
Lo screenshot seguente mostra la matrice visiva and'espressione di calcolo visiva:
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 month, calcolate lungo ogni quarter.
Related contenuto
INDEX MOVINGAVERAGE OFFSET ORDERBY PARTITIONBY RANGE RANK ROWNUMBER RUNNINGSUM