Condividi tramite


WINDOW

Si applica a:colonna calcolatatabella calcolata calcolo visivomisura

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 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 è ABSe from è positivo, è 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 specificato, tutte le colonne in partitionBy devono provenire da essa o da una tabella correlata.
Se omesso:
- orderBy deve essere specificato in modo esplicito.
: tutte le espressioni orderBy 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.
axis (Facoltativo) Asse nella forma visiva. Disponibile solo nei calcoli visivi e sostituisce relation.
orderBy (Facoltativo) Clausola ORDERBY() contenente le espressioni che definiscono la modalità di ordinamento di ogni partizione.
Se omesso:
- relation deve essere specificato in modo esplicito.
: per impostazione predefinita l'ordinamento in base a ogni colonna in relation non già specificata in partitionBy.
blanks (Facoltativo) Enumerazione che definisce come gestire i valori vuoti durante l'ordinamento del relation o axis.
I valori supportati sono:
  • DEFAULT (valore predefinito), dove il comportamento per i valori numerici è vuoto viene ordinato tra zero e valori negativi. Il comportamento per le stringhe è costituito da valori vuoti prima di tutte le stringhe, incluse le stringhe vuote.
  • FIRST, gli spazi vuoti vengono sempre ordinati all'inizio, indipendentemente dall'ordinamento crescente o decrescente.
  • LAST, gli spazi vuoti vengono sempre ordinati alla fine, indipendentemente dall'ordinamento crescente o decrescente.
Nota, quando il parametro e gli spazi vuoti nella funzione () su singole espressioni vengono specificati entrambi, su un'espressione orderBy singola assume la priorità per l'espressione orderBy pertinente e le espressioni orderBy senza specificato rispediranno il parametro nella funzione padre.
partitionBy (Facoltativo) Clausola () contenente le colonne che definiscono la modalità di partizionamento . Se omesso, relation viene considerato come una singola partizione.
matchBy (Facoltativo) Clausola () contenente le colonne che definiscono come trovare le corrispondenze con i dati e identificare la riga corrente.
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 da 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 colonne partitionBy:

  • Se è presente esattamente una colonna esterna corrispondente, viene usato il relativo valore.
  • Se non è presente alcuna colonna esterna corrispondente:
    • WINDOW determinerà innanzitutto tutte le colonne che non dispongono di una colonna esterna corrispondente.
    • Per ogni combinazione di valori esistenti per queste colonne nel contesto padre di WINDOW, WINDOW viene valutata e vengono restituite le righe corrispondenti.
    • WINDOW output finale è un'unione di queste righe.
  • Se sono presenti 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 tenterà di usare matchBy e partitionBy colonne per identificare la riga. Se matchBy non è presente e le colonne specificate all'interno di orderBy e partitionBy non possono identificare in modo univoco ogni riga in relation, allora:

  • WINDOW tenterà di trovare il minor numero di colonne aggiuntive necessarie per identificare in modo univoco ogni riga.
  • Se è possibile trovare tali colonne, WINDOW accoderà automaticamente queste nuove colonne a orderBye ogni partizione viene ordinata usando questo nuovo set di colonne orderBy.
  • Se non è possibile trovare tali colonne, viene restituito un errore.

Viene restituita una tabella vuota se:

  • Il valore esterno corrispondente di una colonna orderBy o partitionBy non esiste all'interno di relation.
  • L'intera finestra si trova all'esterno della partizione oppure l'inizio della finestra si trova dopo la fine.

Se WINDOW viene utilizzato all'interno di una colonna calcolata definita nella stessa tabella di relatione orderBy viene omesso, viene restituito un errore.

Se l'inizio della finestra viene visualizzato prima della prima riga, viene impostato sulla prima riga. Analogamente, se la fine della finestra si trova dopo l'ultima riga della partizione, viene impostata sull'ultima riga.

reset possono essere usati solo nei calcoli visivi e non possono essere usati in combinazione con orderBy o partitionBy. Se reset è presente, è possibile specificare axis ma non relation.

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. Si noti che la finestra di 3 giorni è costituita da tre giorni in cui il prodotto ha 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 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 mese, calcolate ogni anno. I valori 1 e -2 possono essere usati invece di HIGHESTPARENT, con gli stessi risultati.

Lo screenshot seguente mostra la matrice visiva e l'espressione di calcolo visivo:

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 mese, calcolate lungo ogni trimestre.

INDEX MOVINGAVERAGE OFFSET ORDERBY PARTITIONBY RANGE RANK ROWNUMBER RUNNINGSUM