INDEX
gælder for:beregnet kolonne
beregnet tabel
beregning af måling
visualisering
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
Udtryk | Definition |
---|---|
position |
Den absolutte position (1-baseret), som dataene skal hentes fra: - position er positiv: 1 er den første række, 2 er den anden række osv. - position er negativ: -1 er den sidste række, -2 er den anden sidste række osv. Når position er uden for grænsen, eller nul eller BLANK(), INDEX returnerer en tom tabel. Det kan være et hvilket som helst DAX udtryk, der returnerer en skalarværdi. |
relation |
(Valgfrit) Et tabeludtryk, som outputtet returneres fra.
Hvis det er angivet, skal alle kolonner i partitionBy komme fra den eller en relateret tabel.
Hvis udeladt: - orderBy skal angives eksplicit.
– Alle udtryk af typen orderBy og partitionBy skal være fuldt kvalificerede kolonnenavne og komme fra en enkelt tabel.
– ALLSELECTED() af alle kolonner i orderBy og partitionBy som standard. |
axis |
(Valgfrit) En akse i visualiseringsfiguren. Kun tilgængelig i visuelle beregninger og erstatter relation . |
orderBy |
(Valgfrit) En ORDERBY() delsætning, der indeholder de udtryk, der definerer, hvordan hver partition sorteres.
Hvis udeladt: - relation skal angives eksplicit.
– Som standard sorteres efter hver kolonne i relation , der ikke allerede er angivet i partitionBy . |
blanks |
(Valgfrit) En optælling, der definerer, hvordan tomme værdier skal håndteres ved sortering af relation eller axis .
De understøttede værdier er:
Bemærk, at når blanks -parameteren og tomme værdier i funktionen ORDERBY() for individuelle udtryk begge er angivet, prioriteres blanks i det enkelte orderBy-udtryk for det relevante orderBy-udtryk, og orderBy-udtryk, uden at blanks er angivet, vil overholde parameteren blanks for den overordnede funktion. |
partitionBy |
(Valgfrit) En PARTITIONBY() delsætning, der indeholder de kolonner, der definerer, hvordan relation partitioneres. Hvis den udelades, behandles relation 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. |
reset |
(Valgfrit) Kun tilgængelig i visuelle beregninger. Angiver, om beregningen nulstilles, og på hvilket niveau i den visuelle figurs kolonnehierarki. Accepterede værdier er: en feltreference til en kolonne i den aktuelle visualiseringsfigur, NONE (standard), 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, der starter fra den højeste, uafhængig af detaljering. 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
ogmatchBy
kolonner, der ikke har en tilsvarende ydre kolonne. - For hver kombination af eksisterende værdier for disse kolonner i INDEXoverordnede kontekst evalueres INDEX, og der returneres en række.
- INDEXendelige output er en samling af disse rækker.
-
INDEX bestemmer først alle
- Hvis der er mere end én tilsvarende ydre kolonne, returneres der en fejl.
Hvis matchBy
findes, forsøger INDEX at bruge matchBy
og partitionBy
kolonner 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 relation
:
- INDEX vil forsøge at finde det mindste antal ekstra kolonner, der kræves for entydigt at identificere hver række.
- Hvis sådanne kolonner 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
relation
. - Den
position
værdi refererer til en position, der ikke findes i partitionen.
Hvis INDEX bruges i en beregnet kolonne, der er defineret i den samme tabel som relation
, og orderBy
udelades, returneres der en fejl.
reset
kan kun bruges i visuelle beregninger og kan ikke bruges sammen med orderBy
eller partitionBy
. Hvis reset
findes, kan axis
angives, men relation
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 | 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 – visuel beregning
Følgende visuelle beregning DAX forespørgsler:
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 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: