Beregn rangværdier

Fuldført

RANKX DAX-funktionen er en særlig iteratorfunktion, som du kan bruge til at beregne rangering. Dens syntaks er følgende:

RANKX(<table>, <expression>[, <value>[, <order>[, <ties>]]])

På samme måde som med alle iteratorfunktioner, skal du angive en tabel og et udtryk. Du kan eventuelt angive en rangeringsværdi, angive rækkefølgens retning eller bestemme, hvordan rangering skal håndteres, når værdier er bundet.

Sorteringsretning

Sorteringsretningen er enten stigende eller faldende. Når du rangerer noget positivt, f.eks. omsætningsværdier, vil du sandsynligvis bruge faldende rækkefølge, så den højeste indtægt placeres først. Når du rangerer noget, der ikke er favoritter, f.eks. kundeklager, kan du bruge stigende rækkefølge, så det laveste antal klager placeres først. Når du ikke angiver et ordreargument, bruger funktionen 0 (nul) (til faldende rækkefølge).

Håndter identiske værdier (ties)

Du kan håndtere identiske værdier (ties) ved at springe over rangværdier eller bruge kompakt rangering, som bruger den næste rangværdi efter identiske værdier (ties). Når du ikke angiver et ties-argument, bruger funktionen Skip. Du får mulighed for at arbejde med et eksempel på hvert tie-argument senere i denne lektion.

Opret rangeringsmålinger

Føj følgende måling til tabellen Product :

Product Quantity Rank =
RANKX(
    ALL('Product'[Product]),
    [Quantity]
)

Føj målingen Product Quantity Rank til det tabelvisual, der findes på side 2 i rapporten. Tabelvisual'et grupperer cykelprodukter og viser antallet, hvilket sorterer produkter efter faldende mængde.

Funktionen RANKX gentager en tabel, der returneres af ALL DAX-funktionen. Funktionen ALL bruges til at returnere alle rækker i en modeltabel eller værdier i en eller flere kolonner, og den ignorerer alle filtre. Derfor returnerer den i dette tilfælde en tabel, der består af alle værdierne i kolonnen Product i tabellen Product . Funktionen RANKX skal bruge funktionen ALL , fordi tabelvisual'et grupperer efter produkt (som er et filter i tabellen Product ).

Bemærk i tabelvisual'et, at to produkter med rangnummeret 10 er parret (tied), og at det næste produkts rangnummer er 12. Dette visual er et eksempel på, hvordan du bruger ties-argumentet Skipped.

Din næste opgave er at angive følgende logik for at ændre målingsdefinitionen Product Quantity Rank, så den bruger kompakt rangering:

Product Quantity Rank =
RANKX(
    ALL('Product'[Product]),
    [Quantity],
    ,
    ,
    DENSE
)

I tabelvisual'et kan du se, at en rangværdi, der er sprunget over, ikke længere findes. Efter de to produkter, der er begge har rangnummeret 10, er det næste rangnummer 11.

Bemærk, at totalen for Product Quantity Rank i tabelvisual'et er én (1). Årsagen er, at totalen for alle produkter er rangeret.

Det er ikke hensigtsmæssigt at rangere det samlede antal produkter, så du skal nu bruge følgende logik til at ændre målingsdefinitionen, så BLANK returneres, medmindre der filtreres efter et enkelt produkt:

Product Quantity Rank =
IF(
    HASONEVALUE('Product'[Product]),
    RANKX(
        ALL('Product'[Product]),
        [Quantity],
        ,
        ,
        DENSE
    )
)

Bemærk, at den samlede Product Quantity Rank nu er BLANK, hvilket blev opnået ved hjælp HASONEVALUE af DAX-funktionen til at teste, om kolonnen Product i tabellen Product har en enkelt værdi i filterkonteksten. Det er tilfældet for hver produktgruppe, men ikke for totalen, som repræsenterer alle produkter.

Filterkontekst og funktionen HASONEVALUE introduceres i modulet om filterkontekst.