OFFSET
Si applica a:colonna calcolatatabella calcolataMeasurecalcolo visivo
Restituisce una singola riga posizionata prima di or dopo la riga corrente all'interno della stessa tabella, da un determinato offset. If non è possibile dedurre la riga corrente in una singola riga, è possibile che vengano restituite più righe.
Sintassi
OFFSET ( <delta>[, <relation> or <axis>][, <orderBy>][, <blanks>][, <partitionBy>][, <matchBy>][, <reset>] )
Parametri
Termine | Definizione |
---|---|
delta |
Numero di righe prima (valuenegativo ) or dopo (positivo value) riga corrente da cui ottenere i dati. Può essere qualsiasi espressione DAX che restituisce un valuescalare . |
relation |
(Facoltativo) Espressione di tabella da cui viene restituita la riga 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 uso futuro. 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
Una or più righe di relation
.
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 avere un value esterno corrispondente per define la riga corrente su cui operare, con il comportamento seguente:
- If esiste esattamente una colonna esterna corrispondente, viene usata la relativa value.
-
If non esiste alcuna colonna esterna corrispondente, quindi:
- OFFSET determinerà first colonne all senza colonna esterna corrispondente.
- Per ogni combinazione di values esistenti per queste colonne nel contesto padre di OFFSET, OFFSET viene valutata and viene restituita una riga.
- OFFSET'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, OFFSET 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:
- OFFSET tenterà di find il minor numero di colonne aggiuntive necessarie per identificare in modo univoco ogni riga.
-
If è possibile trovare tali colonne, OFFSET 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
. - Il
delta
value comporta uno spostamento a una riga che not esiste all'interno della partizione.
If
OFFSET viene utilizzato all'interno di una colonna calcolata definita nella stessa tabella di relation
, andorderBy
viene omesso, viene restituito un error.
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 : colonna calcolata
La query di DAX seguente:
DEFINE
VAR vRelation = SUMMARIZECOLUMNS (
DimProductCategory[EnglishProductCategoryName],
DimDate[CalendarYear],
"CurrentYearSales", SUM(FactInternetSales[SalesAmount])
)
EVALUATE
ADDCOLUMNS (
vRelation,
"PreviousYearSales",
SELECTCOLUMNS(
OFFSET (
-1,
vRelation,
ORDERBY([CalendarYear]),
PARTITIONBY([EnglishProductCategoryName])
),
[CurrentYearSales]
)
)
Restituisce una tabella che riepiloga le vendite totali per ogni categoria productandcalendaryear, nonché le vendite totali per tale categoria nel previousyear.
Esempio 2 - measure
La query di DAX seguente:
DEFINE
MEASURE DimProduct[CurrentYearSales] = SUM(FactInternetSales[SalesAmount])
MEASURE DimProduct[PreviousYearSales] = CALCULATE(SUM(FactInternetSales[SalesAmount]), OFFSET(-1, , ORDERBY(DimDate[CalendarYear])))
EVALUATE
SUMMARIZECOLUMNS (
DimDate[CalendarYear],
"CurrentYearSales", DimProduct[CurrentYearSales],
"PreviousYearSales", DimProduct[PreviousYearSales]
)
Usa OFFSET() in un measure per restituire una tabella che riepiloga le vendite totali per ogni calendaryearand le vendite totali per il previousyear.
Esempio 3 : colonna calcolata
La query di DAX seguente:
EVALUATE
ADDCOLUMNS (
FactInternetSales,
"Previous Sales Amount",
SELECTCOLUMNS (
OFFSET (
-1,
FactInternetSales,
ORDERBY ( FactInternetSales[SalesAmount], DESC ),
PARTITIONBY ( FactInternetSales[ProductKey] ),
MATCHBY( FactInternetSales[SalesOrderNumber], FactInternetSales[SalesOrderLineNumber] )
),
FactInternetSales[SalesAmount]
)
)
Restituisce la tabella FactInternetSales con l'aggiunta di una colonna, che indica, per ogni vendita, l'importo della vendita previous, dello stesso product, in ordine decrescente dell'importo delle vendite, con la vendita corrente identificata dal relativo SalesOrderNumber and SalesOrderLineNumber. Senza MATCHBY, la query restituirà un error poiché non sono presenti colonne chiave nella tabella FactInternetSales.
Esempio 4 - Calcolo visivo
Il calcolo visivo seguente DAX query:
SalesRelativeToPreviousMonth = [SalesAmount] - CALCULATE(SUM([SalesAmount]), OFFSET(-1, ROWS, HIGHESTPARENT))
Restituisce la differenza delle vendite totali tra ogni monthand il previous uno all'interno dello stesso year.
Lo screenshot seguente mostra la matrice visiva and'espressione di calcolo visiva: