Beregn rangeringer
RANKX
DAX-funksjonen er en spesiell gjentakelsesfunksjon du kan bruke til å beregne rangeringer. Syntaksen er som følger:
RANKX(<table>, <expression>[, <value>[, <order>[, <ties>]]])
På samme måte som med alle gjentakelsesfunksjoner, må du sende inn en tabell og et uttrykk. Du kan eventuelt sende inn en rangeringsverdi, angi rekkefølgeretningen eller bestemme hvordan rangeringer skal håndteres når verdiene er bundet.
Sorteringsretning
Sorteringsretning er enten stigende eller synkende. Når du rangerer noe gunstig, for eksempel omsetningsverdier, vil du sannsynligvis bruke synkende rekkefølge slik at den høyeste omsetningen rangeres først. Når du rangerer noe ugunstig, for eksempel kundeklager, kan du bruke stigende rekkefølge slik at det laveste antallet klager rangeres først. Når du ikke sender inn et rekkefølgeargument, bruker funksjonen 0 (null) (for synkende rekkefølge).
Håndter TIES
Du kan håndtere TIES ved å hoppe over rangeringsverdier eller bruke Dense-rangering. Sistnevnte bruker neste rangeringsverdi etter en TIE. Når du ikke sender inn et ties-argument, bruker funksjonen Skip. Du får muligheten til å arbeide med et eksempel på hvert tie-argument senere i denne enheten.
Opprett rangeringsmål
Legg til følgende mål i Produkt-tabellen :
Product Quantity Rank =
RANKX(
ALL('Product'[Product]),
[Quantity]
)
Legg til målet Rangering for produktantall mål til tabellvisualobjektet som er på Side 2 i rapporten. Tabellvisualobjektet grupperer sykkelprodukter og viser antall, noe som sorterer produkter etter synkende antall.
Funksjonen RANKX
gjentas over en tabell som returneres av ALL
DAX-funksjonen. Funksjonen ALL
brukes til å returnere alle rader i en modelltabell eller verdier i én eller flere kolonner, og den ignorerer alle filtre. I dette tilfellet returnerer den derfor en tabell som består av alle produktkolonneverdiene i Produkt-tabellen . Funksjonen RANKX
må bruke ALL
funksjonen fordi tabellvisualobjektet grupperer etter produkt (som er et filter i Produkt-tabellen ).
Legg merke til at to produkter ligger på delt 10. plass i tabellvisualobjektet, og at rangeringen til det neste produktet er en 12. plass. Dette visualobjektet er et eksempel på bruk av TIES-argumentet Hoppet over.
Den neste oppgaven er å angi følgende logikk for å endre Rangering for produktantall-måldefinisjonen til å bruke dense-rangering:
Product Quantity Rank =
RANKX(
ALL('Product'[Product]),
[Quantity],
,
,
DENSE
)
Legg merke til at det i tabellvisualobjektet ikke lenger finnes en rangering som er hoppet over. Etter de to produktene som begge ligger på 10. plass, er neste rangering 11.
Legg merke til at totalen for tabellvisualobjektet for Rangering for produktantall er én (1). Dette kommer av at totalen for alle produkter er rangert.
Det er ikke hensiktsmessig å rangere totalt antall produkter, så du skal nå bruke følgende logikk til å endre måldefinisjonen til å returnere BLANK, med mindre et enkeltprodukt filtreres:
Product Quantity Rank =
IF(
HASONEVALUE('Product'[Product]),
RANKX(
ALL('Product'[Product]),
[Quantity],
,
,
DENSE
)
)
Legg merke til at den totale rangering av produktantall nå er BLANK, som ble oppnådd ved hjelp HASONEVALUE
av DAX-funksjonen for å teste om Produkt-kolonnen i Produkt-tabellen har én enkelt verdi i filterkontekst. Dette er tilfellet for hver produktgruppe, men ikke for totalen, som representerer alle produkter.
Filterkontekst og HASONEVALUE
funksjonen introduseres i filterkontekstmodulen.