Del via


INDEX

gælder for:beregnet kolonneberegnet tabelberegning af målingvisualisering

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 partitionBysom 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:
  • DEFAULT (standardværdien), 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.
  • FIRSTsorteres tomme værdier altid i starten, uanset stigende eller faldende sorteringsrækkefølge.
  • LASTsorteres tomme værdier altid i slutningen, uanset stigende eller faldende sorteringsrækkefølge.

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, HIGHESTPARENTeller 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 og matchBy 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.
  • 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:

DAX visualiseringsberegning

OFFSET ORDERBY PARTITIONBY WINDOW RANK ROWNUMBER