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 riga in una posizione assoluta, specificata dal parametro position, all'interno della partizione specificata, ordinata in base all'ordine specificato. Se non è possibile dedurre la partizione corrente in una singola partizione, è possibile che vengano restituite più righe.
Sintassi
INDEX(<position>[, <relation> or <axis>][, <orderBy>][, <blanks>][, <partitionBy>][, <matchBy>][, <reset>] )
Parametri
Termine | Definizione |
---|---|
position |
Posizione assoluta (in base 1) da cui ottenere i dati: - position è positivo: 1 è la prima riga, 2 è la seconda riga e così via. - position è negativa: -1 è l'ultima riga, -2 è la seconda ultima riga e così via. Quando position è fuori dal limite o zero o BLANK(), INDEX restituirà una tabella vuota. Può essere qualsiasi espressione DAX che restituisce un valore scalare. |
relation |
(Facoltativo) Espressione di tabella da cui viene restituito l'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
Riga in una posizione assoluta.
Osservazioni
Ogni partitionBy
e matchBy
colonna deve avere un valore esterno corrispondente per definire la "partizione 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:
-
INDEX determinerà innanzitutto tutte le colonne
partitionBy
ematchBy
che non dispongono di colonne esterne corrispondenti. - Per ogni combinazione di valori esistenti per queste colonne nel contesto padre di INDEX, INDEX viene valutata e viene restituita una riga.
- INDEX'output finale è un'unione di queste righe.
-
INDEX determinerà innanzitutto tutte le colonne
- Se sono presenti più colonne esterne corrispondenti, viene restituito un errore.
Se matchBy
è presente, INDEX 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
:
- INDEX tenterà di trovare il minor numero di colonne aggiuntive necessarie per identificare in modo univoco ogni riga.
- Se è possibile trovare tali colonne, INDEX 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 PartitionBy non esiste all'interno di
relation
. - Il valore
position
fa riferimento a una posizione che non esiste all'interno della partizione.
Se INDEX 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:
EVALUATE INDEX(1, ALL(DimDate[CalendarYear]))
Restituisce la tabella seguente:
DimDate[CalendarYear] |
---|
2005 |
Esempio 2 : colonna calcolata
La query di DAX seguente:
EVALUATE
SUMMARIZECOLUMNS (
FactInternetSales[ProductKey],
DimDate[MonthNumberOfYear],
FILTER (
VALUES(FactInternetSales[ProductKey]),
[ProductKey] < 222
),
"CurrentSales", SUM(FactInternetSales[SalesAmount]),
"LastMonthSales",
CALCULATE (
SUM(FactInternetSales[SalesAmount]),
INDEX(-1, ORDERBY(DimDate[MonthNumberOfYear]))
)
)
ORDER BY [ProductKey], [MonthNumberOfYear]
Restituisce la tabella seguente:
FactInternetSales[ProductKey] | DimDate[MonthNumberOfYear] | [CurrentSales] | [LastMonthSales] |
---|---|---|---|
214 | 1 | 5423.45 | 8047.7 |
214 | 2 | 4968.58 | 8047.7 |
214 | 3 | 5598.4 | 8047.7 |
214 | 4 | 5073.55 | 8047.7 |
214 | 5 | 5248.5 | 8047.7 |
214 | 6 | 7487.86 | 8047.7 |
214 | 7 | 7382.89 | 8047.7 |
214 | 8 | 6543.13 | 8047.7 |
214 | 9 | 6788.06 | 8047.7 |
214 | 10 | 6858.04 | 8047.7 |
214 | 11 | 8607.54 | 8047.7 |
214 | 12 | 8047.7 | 8047.7 |
217 | 1 | 5353.47 | 7767.78 |
217 | 2 | 4268.78 | 7767.78 |
217 | 3 | 5773.35 | 7767.78 |
217 | 4 | 5738.36 | 7767.78 |
217 | 5 | 6158.24 | 7767.78 |
217 | 6 | 6998 | 7767.78 |
217 | 7 | 5563.41 | 7767.78 |
217 | 8 | 5913.31 | 7767.78 |
217 | 9 | 5913.31 | 7767.78 |
217 | 10 | 6823.05 | 7767.78 |
217 | 11 | 6683.09 | 7767.78 |
217 | 12 | 7767.78 | 7767.78 |
Esempio 3 - Calcolo visivo
Il calcolo visivo seguente DAX query:
SalesComparedToBeginningOfYear = [SalesAmount] - CALCULATE(SUM([SalesAmount]), INDEX(1, ROWS, HIGHESTPARENT))
SalesComparedToBeginningOfQuarter = [SalesAmount] - CALCULATE(SUM([SalesAmount]), INDEX(1, , -1))
Migliorare una tabella in modo che contenga, per ogni mese:
- l'importo totale delle vendite;
- la differenza con il primo mese del rispettivo anno;
- e la differenza per il primo mese del rispettivo trimestre.
Lo screenshot seguente mostra la matrice visiva e la prima espressione di calcolo visivo: