Condividi tramite


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:

Calcolo visivo DAX

OFFSET
ORDERBY
PARTITIONBY
WINDOW
RANK
ROWNUMBER