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 una singola riga posizionata prima o dopo la riga corrente all'interno della stessa tabella da un offset specificato. Se 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 (valore negativo) o dopo (valore positivo) della riga corrente da cui ottenere i dati. Può essere qualsiasi espressione DAX che restituisce un valore scalare. |
relation |
(Facoltativo) Espressione di tabella da cui viene restituita la riga 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: - 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 . |
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:
|
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 , HIGHESTPARENT o 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
Una o più righe di relation
.
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, con il comportamento seguente:
- Se è presente esattamente una colonna esterna corrispondente, viene usato il relativo valore.
- Se non è presente alcuna colonna esterna corrispondente, eseguire le operazioni seguenti:
- OFFSET 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 OFFSET, OFFSET viene valutata e viene restituita una riga.
- OFFSET'output finale è un'unione di queste righe.
- Se sono presenti più colonne esterne corrispondenti, viene restituito un errore.
Se tutte le colonne di relation
sono state aggiunte da DAX funzioni di tabella, viene restituito un errore.
Se matchBy
è presente, OFFSET 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
, quindi:
- OFFSET tenterà di trovare il minor numero di colonne aggiuntive necessarie per identificare in modo univoco ogni riga.
- Se è possibile trovare tali colonne, OFFSET accoderà automaticamente queste nuove colonne a
orderBy
e 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
. - Il valore
delta
determina uno spostamento a una riga che non esiste all'interno della partizione.
Se OFFSET viene utilizzato all'interno di una colonna calcolata definita nella stessa tabella di relation
e orderBy
viene omesso, viene restituito un errore.
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
.
Se il valore di reset
è assoluto (ad esempio, un numero intero HIGHESTPARENT
positivo o 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.
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 di prodotto e anno di calendario, nonché le vendite totali per tale categoria nell'anno precedente.
Esempio 2 : misura
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 una misura per restituire una tabella che riepiloga le vendite totali per ogni anno di calendario e le vendite totali per l'anno precedente.
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 precedente, dello stesso prodotto, in ordine decrescente dell'importo delle vendite, con la vendita corrente identificata dal relativo SalesOrderNumber e SalesOrderLineNumber. Senza MATCHBY, la query restituirà un errore perché 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 mese e quella precedente all'interno dello stesso anno.
Lo screenshot seguente mostra la matrice visiva e l'espressione di calcolo visivo: