INDEKS
Gælder for: Beregning af målingsvisualisering for beregnet kolonne i beregnet tabel
Returnerer en række på en absolut placering, der er angivet af positionsparameteren, i den angivne partition sorteret efter den angivne rækkefølge. Hvis den aktuelle partition ikke kan udledes til en enkelt partition, returneres der muligvis flere rækker.
Syntaks
INDEX(<position>[, <relation> or <axis>][, <orderBy>][, <blanks>][, <partitionBy>][, <matchBy>][, <reset>] )
Parametre
Begreb | Definition |
---|---|
position | Den absolutte position (1-baseret), som dataene skal hentes fra: - positionen> er positiv: 1 er den første række, 2 er den anden række osv. - <positionen> er negativ: -1 er den sidste række, -2 er den anden sidste række osv. < Når <placeringen> er uden for grænsen, nul eller BLANK(), returnerer INDEX en tom tabel. Det kan være et hvilket som helst DAX-udtryk, der returnerer en skalarværdi. |
forhold | (Valgfrit) Et tabeludtryk, som outputtet returneres fra. Hvis det er angivet, skal alle kolonner i <partitionBy> komme fra den eller en relateret tabel. Hvis det udelades: - <orderBy> skal angives eksplicit. – Alle <orderBy> - og <partitionBy-udtryk> skal være fuldt kvalificerede kolonnenavne og komme fra en enkelt tabel. – Som standard til ALLSELECTED() for alle kolonner i <orderBy> og <partitionBy>. |
akse | (Valgfrit) En akse i visualiseringsfiguren. Kun tilgængelig i visuelle beregninger og erstatter <relationen>. |
orderBy | (Valgfrit) En ORDERBY()-delsætning, der indeholder de udtryk, der definerer, hvordan hver partition sorteres. Hvis det udelades: - <relationen> skal angives eksplicit. – Som standard sorteres efter hver kolonne i <relation> , der ikke allerede er angivet i <partitionBy>. |
Tomme | (Valgfrit) En optælling, der definerer, hvordan tomme værdier skal håndteres ved sortering. Denne parameter er reserveret til fremtidig brug. I øjeblikket er den eneste understøttede værdi DEFAULT, hvor funktionsmåden for numeriske værdier er tomme værdier sorteres mellem nul og negative værdier. Funktionsmåden for strenge er tomme værdier sorteres før alle strenge, herunder tomme strenge. |
partitionBy | (Valgfrit) En PARTITIONBY()-delsætning, der indeholder de kolonner, der definerer, hvordan <relationen> partitioneres. Hvis den udelades, <behandles relationen> som en enkelt partition. |
matchBy | (Valgfrit) En MATCHBY()-delsætning, der indeholder de kolonner, der definerer, hvordan dataene skal matche og identificere den aktuelle række. |
Nulstille | (Valgfrit) Kun tilgængelig i visuelle beregninger. Angiver, om beregningen nulstilles, og på hvilket niveau i den visuelle figurs kolonnehierarki. Accepterede værdier er: NONE, LOWESTPARENT, HIGHESTPARENT eller et heltal. Funktionsmåden afhænger af heltalstegnet: - Hvis nul eller udeladt, nulstilles beregningen ikke. Svarer til NONE. – Hvis den er positiv, identificerer heltalet kolonnen med start fra den højeste, uafhængig af kornet. HIGHESTPARENT svarer til 1. – Hvis det er negativt, identificerer heltalet kolonnen med start fra det laveste i forhold til den aktuelle detaljering. LOWESTPARENT svarer til -1. |
Returværdi
En række på en absolut placering.
Bemærkninger
Hver <partitionBy> - og <matchBy-kolonne> skal have en tilsvarende ydre værdi for at hjælpe med at definere den "aktuelle partition", der skal arbejdes på, med følgende funktionsmåde:
- Hvis der er nøjagtigt én tilsvarende ydre kolonne, bruges dens værdi.
- Hvis der ikke er en tilsvarende ydre kolonne:
- INDEX bestemmer først alle <partitionBy> - og <matchBy-kolonner> , der ikke har en tilsvarende ydre kolonne.
- For hver kombination af eksisterende værdier for disse kolonner i INDEKS's overordnede kontekst evalueres INDEX, og der returneres en række.
- INDEX's endelige output er en forening af disse rækker.
- Hvis der er mere end én tilsvarende ydre kolonne, returneres der en fejl.
Hvis <matchBy> er til stede, forsøger INDEX at bruge <matchBy> - og <partitionBy-kolonnerne> til at identificere rækken.
Hvis <matchBy> ikke findes, og de kolonner, der er angivet i <orderBy> og <partitionBy> , ikke entydigt kan identificere hver række i <relationen>:
- INDEX forsøger at finde det mindste antal ekstra kolonner, der kræves for entydigt at identificere hver række.
- Hvis sådanne kolonner kan findes, føjer INDEX automatisk disse nye kolonner til <orderBy>, og hver partition sorteres ved hjælp af dette nye sæt OrderBy-kolonner.
- Hvis sådanne kolonner ikke blev fundet, returneres der en fejl.
Der returneres en tom tabel, hvis:
- Den tilsvarende ydre værdi for en PartitionBy-kolonne findes ikke i <relationen>.
- Positionsværdien <> refererer til en position, der ikke findes i partitionen.
Hvis INDEX bruges i en beregnet kolonne, der er defineret i den samme tabel som <relationen> , og <orderBy> udelades, returneres der en fejl.
<nulstilling> kan kun bruges i visuelle beregninger og kan ikke bruges i kombination med <orderBy> eller <partitionBy>. Hvis <nulstilling> er til stede, kan aksen> angives, <men <relationen> kan ikke.
Eksempel 1 – beregnet kolonne
Følgende DAX-forespørgsel:
EVALUATE INDEX(1, ALL(DimDate[CalendarYear]))
Returnerer følgende tabel:
DimDate[CalendarYear] |
---|
2005 |
Eksempel 2 – beregnet kolonne
Følgende DAX-forespørgsel:
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 tabel:
FactInternetSales[ProductKey] | DimDate[MonthNumberOfYear] | [CurrentSales] | [LastMonthSales] |
---|---|---|---|
214 | 0 | 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 | 0 | 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 – visuel beregning
Følgende DAX-forespørgsler til visuel beregning:
SalesComparedToBeginningOfYear = [SalesAmount] - CALCULATE(SUM([SalesAmount]), INDEX(1, ROWS, HIGHESTPARENT))
SalesComparedToBeginningOfQuarter = [SalesAmount] - CALCULATE(SUM([SalesAmount]), INDEX(1, , -1))
Optimer en tabel, så den indeholder for hver måned:
- det samlede salgsbeløb;
- forskellen i forhold til den første måned i det pågældende år -
og forskellen til den første måned i det pågældende kvartal.
Skærmbilledet nedenfor viser den visuelle matrix og det første visuelle beregningsudtryk: