INDEX
gjelder:beregnet kolonneberegnet tabellmålevisualobjektberegning
Returnerer en rad i en absolutt posisjon, angitt av posisjonsparameteren, innenfor den angitte partisjonen, sortert etter den angitte rekkefølgen. Hvis gjeldende partisjon ikke kan utledes til én enkelt partisjon, kan flere rader returneres.
Syntaks
INDEX(<position>[, <relation> or <axis>][, <orderBy>][, <blanks>][, <partitionBy>][, <matchBy>][, <reset>] )
Parametere
Vilkår | Definisjon |
---|---|
position |
Den absolutte posisjonen (1-basert) som dataene hentes fra: - position er positiv: 1 er den første raden, 2 er den andre raden osv. - position er negativ: -1 er den siste raden, -2 er den nest siste raden osv. Når position er utenfor grensen, eller null, eller BLANK(), INDEX returnerer en tom tabell. Det kan være et hvilket som helst DAX uttrykk som returnerer en skalarverdi. |
relation |
(Valgfritt) Et tabelluttrykk som utdataene returneres fra.
Hvis angitt, må alle kolonnene i partitionBy komme fra den eller en relatert tabell.
Hvis utelatt: - orderBy må angis eksplisitt.
– Alle orderBy - og partitionBy uttrykk må være fullstendige kolonnenavn og komme fra én enkelt tabell.
– Standarder for å ALLSELECTED() av alle kolonnene i orderBy og partitionBy . |
axis |
(Valgfritt) En akse i den visuelle figuren. Bare tilgjengelig i visuelle beregninger, og erstatter relation . |
orderBy |
(Valgfritt) En ORDERBY() setning som inneholder uttrykkene som definerer hvordan hver partisjon sorteres.
Hvis utelatt: - relation må angis eksplisitt.
– Standarder for bestilling av hver kolonne i relation som ikke allerede er angitt i partitionBy . |
blanks |
(Valgfritt) En opplisting som definerer hvordan du håndterer tomme verdier når du sorterer relation eller axis .
De støttede verdiene er:
Obs! Når blanks parameteren og tomrommene i ORDERBY()-funksjonen på individuelle uttrykk er angitt, prioriteres blanks enkelt orderBy-uttrykk for det relevante orderBy-uttrykket, og orderBy-uttrykk uten at blanks angis, respekterer blanks parameteren for den overordnede funksjonen. |
partitionBy |
(Valgfritt) En PARTITIONBY() setningsdel som inneholder kolonnene som definerer hvordan relation partisjoneres. Hvis utelatt, behandles relation som én enkelt partisjon. |
matchBy |
(Valgfritt) En MATCHBY() setningsdel som inneholder kolonnene som definerer hvordan dataene skal samsvare og identifisere gjeldende rad. |
reset |
(Valgfritt) Bare tilgjengelig i visuelle beregninger. Angir om beregningen tilbakestilles, og på hvilket nivå i kolonnehierarkiet for visualobjektfiguren. Godtatte verdier er: en feltreferanse til en kolonne i gjeldende visuelle figur, NONE (standard), LOWESTPARENT , HIGHESTPARENT eller et heltall. Virkemåten avhenger av heltallstegnet: – Hvis null eller utelatt, tilbakestilles ikke beregningen. Tilsvarer NONE .
– Hvis det er positivt, identifiserer heltallet kolonnen fra den høyeste, uavhengige av korn. HIGHESTPARENT tilsvarer 1.
– Hvis negativt, identifiserer heltallet kolonnen fra det laveste, i forhold til gjeldende korn. LOWESTPARENT tilsvarer -1. |
Returverdi
En rad i en absolutt posisjon.
Merknader
Hver partitionBy
- og matchBy
-kolonne må ha en tilsvarende ytre verdi for å definere den gjeldende partisjonen som den skal fungere på, med følgende virkemåte:
- Hvis det er nøyaktig én tilsvarende ytre kolonne, brukes verdien.
- Hvis det ikke finnes noen tilsvarende ytre kolonne:
-
INDEX bestemmer først alle
partitionBy
ogmatchBy
kolonner som ikke har noen tilsvarende ytre kolonne. - For hver kombinasjon av eksisterende verdier for disse kolonnene i INDEXoverordnede kontekst, evalueres INDEX og en rad returneres.
- INDEX's endelige utdata er en union av disse radene.
-
INDEX bestemmer først alle
- Hvis det er mer enn én tilsvarende ytre kolonne, returneres en feil.
Hvis matchBy
finnes, prøver INDEX å bruke matchBy
og partitionBy
kolonner til å identifisere raden.
Hvis matchBy
ikke finnes, og kolonnene som er angitt i orderBy
og partitionBy
, ikke kan identifisere hver rad i relation
unikt:
- INDEX vil prøve å finne det minste antallet ekstra kolonner som kreves for å identifisere hver rad unikt.
- Hvis du finner slike kolonner, vil INDEX automatisk tilføye disse nye kolonnene til
orderBy
, og hver partisjon sorteres ved hjelp av dette nye settet med OrderBy-kolonner. - Hvis slike kolonner ikke blir funnet, returneres en feil.
En tom tabell returneres hvis:
- Den tilsvarende ytre verdien for en PartitionBy-kolonne finnes ikke i
relation
. - Den
position
verdien refererer til en posisjon som ikke finnes i partisjonen.
Hvis INDEX brukes i en beregnet kolonne som er definert i samme tabell som relation
og orderBy
utelates, returneres en feil.
reset
kan bare brukes i visuelle beregninger, og kan ikke brukes sammen med orderBy
eller partitionBy
. Hvis reset
finnes, kan axis
angis, men relation
kan ikke.
Eksempel 1 – beregnet kolonne
Følgende DAX spørring:
EVALUATE INDEX(1, ALL(DimDate[CalendarYear]))
Returnerer følgende tabell:
DimDate[CalendarYear] |
---|
2005 |
Eksempel 2 – beregnet kolonne
Følgende DAX spørring:
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]
Returnerer følgende 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 |
Eksempel 3 – visuell beregning
Følgende visuelle beregning DAX spørringer:
SalesComparedToBeginningOfYear = [SalesAmount] - CALCULATE(SUM([SalesAmount]), INDEX(1, ROWS, HIGHESTPARENT))
SalesComparedToBeginningOfQuarter = [SalesAmount] - CALCULATE(SUM([SalesAmount]), INDEX(1, , -1))
Forbedre en tabell slik at den inneholder, for hver måned:
– det totale salgsbeløpet.
- forskjellen til den første måneden i det respektive året;
- og forskjellen til den første måneden i det respektive kvartalet.
Skjermbildet nedenfor viser den visuelle matrisen og det første visuelle beregningsuttrykket: