INDEX
Si applica a: Calcolo visivo misura tabella calcolata colonna calcolata
Restituisce una riga in una posizione assoluta, specificata dal parametro di posizione, 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 |
---|---|
località | La posizione assoluta (in base 1) da cui ottenere i dati: - <posizione> è positiva: 1 è la prima riga, 2 è la seconda riga e così via. - <posizione> è negativa: -1 è l'ultima riga, -2 è la seconda ultima riga e così via. Quando la <posizione> non rientra nel limite o zero o BLANK(), INDEX restituirà una tabella vuota. Può essere qualsiasi espressione DAX che restituisce un valore scalare. |
relazione | (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. - L'impostazione predefinita è ALLSELECTED() di tutte le colonne in <orderBy> e <partitionBy>. |
axis | (Facoltativo) Asse nella forma visiva. Disponibile solo nei calcoli visivi e sostituisce la <relazione>. |
orderBy | (Facoltativo) Clausola ORDERBY() contenente le colonne che definiscono la modalità di ordinamento di ogni partizione. Se omesso: - <la relazione> deve essere specificata in modo esplicito. - Per impostazione predefinita, l'ordinamento viene eseguito in base a ogni colonna in <relazione> non già specificata in <partitionBy>. |
valori blank | (Facoltativo) Enumerazione che definisce come gestire i valori (blank) durante l'ordinamento. Questo parametro è riservato per usi futuri. Attualmente, l'unico valore supportato è DEFAULT, in cui il comportamento per i valori numerici è vuoto viene ordinato tra zero e valori negativi. Il comportamento per le stringhe è costituito dall’ordinamento dei valori blank prima di tutte le stringhe, incluse le stringhe vuote. |
partitionBy | (Facoltativo) Clausola PARTITIONBY() contenente le colonne che definiscono la modalità <di partizionamento della relazione>. Se omesso, <la relazione> viene considerata come una singola partizione. |
matchBy | (Facoltativo) Clausola MATCHBY() contenente le colonne che definiscono come trovare le corrispondenze con i dati e identificare la riga corrente. |
reset (ripristina) | (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: NONE, 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 dalla granularità. HIGHESTPARENT equivale a 1. - Se negativo, l'intero identifica la colonna a partire dal più basso, rispetto alla granularità corrente. LOWESTPARENT equivale a -1. |
Valore restituito
Riga in una posizione assoluta.
Osservazioni:
Ogni colonna <partitionBy> e <matchBy> 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>, <matchBy> che non dispongono di colonne esterne corrispondenti.
- Per ogni combinazione di valori esistenti per queste colonne nel contesto padre INDEX, INDEX viene valutata e viene restituita una riga.
- L'output finale di INDEX è un'unione di queste righe.
- Se sono presenti più colonne esterne corrispondenti, viene restituito un errore.
Se <matchBy> è presente, INDEX tenterà di usare le colonne <matchBy> e<partitionBy> 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 <relazione>:
- 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 della <relazione>.
- Il valore di <posizione> 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 della <relazione> e <orderBy> viene omesso, viene restituito un errore.
<la reimpostazione> può essere usata solo nei calcoli visivi e non può essere usata in combinazione con <orderBy> o <partitionBy>. Se <la reimpostazione> è presente, <è possibile specificare l'asse> , ma <la relazione> non può.
Esempio 1 : colonna calcolata
La query DAX seguente:
EVALUATE INDEX(1, ALL(DimDate[CalendarYear]))
Restituisce la tabella seguente:
DimDate[CalendarYear] |
---|
2005 |
Esempio 2 : colonna calcolata
La query 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
Le query DAX di calcolo visivo seguenti:
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 per 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: