Condividi tramite


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:
- Iffrom_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.
: Iffrom_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 AllorderByandpartitionBy devono essere nomi di colonna completi and provengono da una singola tabella.
: per impostazione predefinita viene ALLSELECTED() delle colonne di all in orderByandpartitionBy.
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 relationnot 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 matchByandpartitionBy, 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 relationsono state aggiunte da DAX funzioni di tabella, viene restituito un error.

If matchBy è presente, WINDOW tenterà di usare matchByandpartitionBy colonne per identificare la riga. If matchBy è not presente and le colonne specificate in orderByandpartitionBy 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 orderByorpartitionBy esiste not all'interno di relation.
  • 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 orderByorpartitionBy. 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:

DAX 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 month, calcolate lungo ogni quarter.

INDEX MOVINGAVERAGE OFFSET ORDERBY PARTITIONBY RANGE RANK ROWNUMBER RUNNINGSUM