Dela via


INDEX

Gäller för:Beräknad kolumnBeräknad tabellMåttVisuell beräkning

Returnerar en rad vid en absolut position som anges av positionsparametern inom den angivna partitionen, sorterad efter angiven ordning. Om den aktuella partitionen inte kan härledas till en enda partition kan flera rader returneras.

Syntax

INDEX(<position>[, <relation> or <axis>][, <orderBy>][, <blanks>][, <partitionBy>][, <matchBy>][, <reset>] )

Parametrar

Period Definition
position Den absoluta position (1-baserad) som data ska hämtas från:
- <positionen> är positiv: 1 är den första raden, 2 är den andra raden osv.
- <positionen> är negativ: -1 är den sista raden, -2 är den andra sista raden osv.
När <positionen> ligger utom gränsen, eller noll eller BLANK(), returnerar INDEX en tom tabell. Det kan vara alla DAX-uttryck som returnerar ett skalärt värde.
Förhållande (Valfritt) Ett tabelluttryck som utdata returneras från.
Om det anges måste alla kolumner i <partitionBy> komma från den eller en relaterad tabell.
Om det utelämnas:
– <orderBy> måste anges uttryckligen.
– Alla <orderBy> - och <partitionBy-uttryck> måste vara fullständigt kvalificerade kolumnnamn och komma från en enda tabell.
– Standardvärdet är ALLSELECTED() för alla kolumner i <orderBy> och <partitionBy>.
axel (Valfritt) En axel i den visuella formen. Endast tillgängligt i visuella beräkningar och ersätter <relationen>.
Orderby (Valfritt) En ORDERBY()-sats som innehåller de uttryck som definierar hur varje partition sorteras.
Om det utelämnas:
– <måste relationen> uttryckligen anges.
– Standardinställningen är att sortera efter varje kolumn i <relation> som inte redan har angetts i <partitionBy>.
Blanksteg (Valfritt) En uppräkning som definierar hur tomma värden ska hanteras vid sortering.
Den här parametern är reserverad för framtida användning.
För närvarande är det enda värde som stöds STANDARD, där beteendet för numeriska värden är tomma värden sorteras mellan noll och negativa värden. Beteendet för strängar är tomma värden sorteras före alla strängar, inklusive tomma strängar.
partitionBy (Valfritt) En PARTITIONBY()-sats som innehåller kolumnerna som definierar hur <relationen> partitioneras.
Om den utelämnas <behandlas relationen> som en enda partition.
matchBy (Valfritt) En MATCHBY()-sats som innehåller kolumnerna som definierar hur du matchar data och identifierar den aktuella raden.
Återställa (Valfritt) Endast tillgängligt i visuella beräkningar. Anger om beräkningen återställs och på vilken nivå av den visuella formens kolumnhierarki. Godkända värden är: NONE, LOWESTPARENT, HIGHESTPARENT eller ett heltal. Beteendet beror på heltalstecknet:
– Om noll eller utelämnas återställs inte beräkningen. Motsvarar NONE.
– Om det är positivt identifierar heltal kolumnen med början från den högsta, oberoende av kornighet. HIGHESTPARENT motsvarar 1.
– Om det är negativt identifierar heltal kolumnen med början från den lägsta, i förhållande till det aktuella kornet. LOWESTPARENT motsvarar -1.

Returvärde

En rad vid en absolut position.

Kommentarer

Varje <partitionBy> och <matchBy-kolumn> måste ha ett motsvarande yttre värde för att definiera den "aktuella partition" som ska användas, med följande beteende:

  • Om det finns exakt en motsvarande yttre kolumn används dess värde.
  • Om det inte finns någon motsvarande yttre kolumn:
    • INDEX avgör först alla <partitionBy> - och <matchBy-kolumner> som inte har någon motsvarande yttre kolumn.
    • För varje kombination av befintliga värden för dessa kolumner i INDEX:s överordnade kontext utvärderas INDEX och en rad returneras.
    • INDEX:s slutliga utdata är en union av dessa rader.
  • Om det finns mer än en motsvarande yttre kolumn returneras ett fel.

Om <matchBy> finns försöker INDEX använda <kolumnerna matchBy> och <partitionBy> för att identifiera raden.
Om <matchBy> inte finns och kolumnerna som anges i <orderBy> och <partitionBy> inte unikt kan identifiera varje rad i <relation>:

  • INDEX försöker hitta det minsta antalet ytterligare kolumner som krävs för att unikt identifiera varje rad.
  • Om sådana kolumner kan hittas lägger INDEX automatiskt till dessa nya kolumner i <orderBy>, och varje partition sorteras med den här nya uppsättningen OrderBy-kolumner.
  • Om det inte går att hitta sådana kolumner returneras ett fel.

En tom tabell returneras om:

  • Motsvarande yttre värde för en PartitionBy-kolumn finns inte i <relationen>.
  • Positionsvärdet <> refererar till en position som inte finns i partitionen.

Om INDEX används i en beräknad kolumn som definierats i samma tabell som <relation> och <orderBy> utelämnas returneras ett fel.

<reset> kan endast användas i visuella beräkningar och kan inte användas i kombination med <orderBy> eller <partitionBy>. Om <det finns en återställning> kan axeln> anges, <men <det går inte att göra det>.

Exempel 1 – beräknad kolumn

Följande DAX-fråga:

EVALUATE INDEX(1, ALL(DimDate[CalendarYear]))

Returnerar följande tabell:

DimDate[CalendarYear]
2005

Exempel 2 – beräknad kolumn

Följande DAX-fråga:

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]

Returnerar följande tabell:

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

Exempel 3 – visuell beräkning

Följande DAX-frågor för visuell beräkning:

SalesComparedToBeginningOfYear = [SalesAmount] - CALCULATE(SUM([SalesAmount]), INDEX(1, ROWS, HIGHESTPARENT))

SalesComparedToBeginningOfQuarter = [SalesAmount] - CALCULATE(SUM([SalesAmount]), INDEX(1, , -1))

Förbättra en tabell så att den innehåller, för varje månad:
- det totala försäljningsbeloppet;
- skillnaden till den första månaden för respektive år;
- och skillnaden till den första månaden i respektive kvartal.

Skärmbilden nedan visar den visuella matrisen och det första visuella beräkningsuttrycket:

Beräkning av visuella DAX-objekt

FÖRSKJUTNING
ORDERBY
PARTITIONBY
FÖNSTRET
FRODIGT
RADNUMMER