INDEX
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 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:
|
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
.
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: