Condividi tramite


INDEX

Si applica a:colonna calcolatatabella calcolataMeasurecalcolo visivo

Restituisce una riga in una posizione assoluta, specificata dal parametro position, all'interno della partizione specificata, ordinata in base all'ordine specificato. If 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 La posizione assoluta (in base 1) da cui ottenere i dati:
- position è positiva: 1 è la riga first, 2 è la riga second e così via.
- position è negativa: -1 è la riga last, -2 è la riga secondlast e così via.
Quando position è fuori dal limite, or zero, orBLANK(), INDEX restituirà una tabella vuota. Può essere qualsiasi espressione DAX che restituisce un valuescalare .
relation (Facoltativo) Espressione di tabella da cui viene restituito l'output.
If specificato, all colonne in partitionBy devono provenire da essa or una tabella related.
If omesso:
- orderBy deve essere specificato in modo esplicito.
: le espressioni AllorderByandpartitionBy devono essere nomi di colonna completi and provengono da una singola tabella.
: per impostazione predefinita viene ALLSELECTED() di colonne di all in orderByandpartitionBy.
axis (Facoltativo) Asse nella forma visiva. Disponibile solo nei calcoli visivi, and sostituisce relation.
orderBy (Facoltativo) Clausola ORDERBY() contenente le espressioni che define la modalità di ordinamento di ogni partizione.
If omesso:
- relation deve essere specificato in modo esplicito.
: per impostazione predefinita l'ordinamento in base a ogni colonna in relationnot già specificata in partitionBy.
blanks (Facoltativo) Enumerazione che definisce come gestire blankvalues durante l'ordinamento.
Questo parametro è riservato per uso futuro.
Attualmente, l'unico value supportato è DEFAULT, dove il comportamento per values numerici è blankvalues viene ordinato tra zero andvaluesnegativo. Il comportamento delle stringhe è blankvalues vengono ordinati prima di all stringhe, incluse le stringhe vuote.
partitionBy (Facoltativo) Clausola PARTITIONBY() contenente le colonne che define come relation viene partizionata.
If omesso, relation viene considerato come una singola partizione.
matchBy (Facoltativo) Clausola MATCHBY() contenente le colonne che define come trovare una corrispondenza con i dati and identificare la riga corrente.
reset (Facoltativo) Disponibile solo nei calcoli visivi. Indica if il calcolo viene reimpostato, and a quale livello della gerarchia di colonne della forma visiva. I values accettati sono: un riferimento di campo a una colonna nella forma visiva corrente, NONE (impostazione predefinita), LOWESTPARENT, HIGHESTPARENT, or un numero intero. Il comportamento dipende dall'intero sign:
- If zero or omesso, il calcolo viene reimpostato not. Equivalente a NONE.
: If positivo, l'intero identifica la colonna a partire dal più alto, indipendentemente dal livello di granularità. HIGHESTPARENT equivale a 1.
: If negativo, l'intero identifica la colonna a partire dal più basso, rispetto alla granularità corrente. LOWESTPARENT equivale a -1.

Restituisce value

Riga in una posizione assoluta.

Osservazioni

Ogni colonna partitionByandmatchBy deve avere un value esterno corrispondente per define la "partizione corrente" su cui operare, con il comportamento seguente:

  • If esiste esattamente una colonna esterna corrispondente, viene usata la relativa value.
  • If non esiste alcuna colonna esterna corrispondente:
    • INDEX determinerà first colonne allpartitionByandmatchBy senza colonna esterna corrispondente.
    • Per ogni combinazione di values esistenti per queste colonne nel contesto padre di INDEX, INDEX viene valutata and viene restituita una riga.
    • INDEX'output finale è un union di queste righe.
  • If è presente più di una colonna esterna corrispondente, viene restituita una error.

If matchBy è presente, INDEX tenterà di usare matchByandpartitionBy colonne per identificare la riga. If matchBy è not presente and le colonne specificate in orderByandpartitionBy non possono identificare in modo univoco ogni riga in relation:

  • INDEX tenterà di find il minor numero di colonne aggiuntive necessarie per identificare in modo univoco ogni riga.
  • If è possibile trovare tali colonne, INDEX accoderà automaticamente queste nuove colonne a orderBy, and ogni partizione viene ordinata usando questo nuovo set di colonne OrderBy.
  • If non è possibile trovare tali colonne, viene restituito un error.

Viene restituita una tabella vuota if:

  • La value esterna corrispondente di una colonna PartitionBynot esiste all'interno di relation.
  • Il positionvalue fa riferimento a una posizione che not esiste all'interno della partizione.

If INDEX viene utilizzato all'interno di una colonna calcolata definita nella stessa tabella di relationandorderBy viene omessa, viene restituito un error.

reset può essere usato solo nei calcoli visivi, and non può essere usato in combinazione con orderByorpartitionBy. If 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 contains, per ogni month:
- l'importo totale delle vendite;
: differenza con il firstmonth dei rispettivi year;
: and la differenza con il firstmonth del rispettivo quarter.

Lo screenshot seguente mostra la matrice visiva and'espressione di calcolo visivo first:

DAX calcolo visivo

OFFSET ORDERBY PARTITIONBY WINDOW RANK ROWNUMBER