Condividi tramite


INDEX

Si applica a:colonna calcolatatabella calcolata calcolo visivomisura

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:
  • DEFAULT (valore predefinito), dove il comportamento per i valori numerici è vuoto viene ordinato tra zero e valori negativi. Il comportamento per le stringhe è costituito da valori vuoti prima di tutte le stringhe, incluse le stringhe vuote.
  • FIRST, gli spazi vuoti vengono sempre ordinati all'inizio, indipendentemente dall'ordinamento crescente o decrescente.
  • LAST, gli spazi vuoti vengono sempre ordinati alla fine, indipendentemente dall'ordinamento crescente o decrescente.
Nota, quando il parametro e gli spazi vuoti nella funzione () su singole espressioni vengono specificati entrambi, su un'espressione orderBy singola assume la priorità per l'espressione orderBy pertinente e le espressioni orderBy senza specificato rispediranno il parametro nella funzione padre.
partitionBy (Facoltativo) Clausola () contenente le colonne che definiscono la modalità di partizionamento . Se omesso, relation viene considerato come una singola partizione.
matchBy (Facoltativo) Clausola () contenente le colonne che definiscono come trovare le corrispondenze con i dati e identificare la riga corrente.
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, HIGHESTPARENTo 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 e matchBy 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.
  • 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 orderBye 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:

DAX calcolo visivo

OFFSET ORDERBY PARTITIONBY WINDOW RANK ROWNUMBER