Dela via


RANG

Gäller för: Beräknad kolumn Beräknad tabell Mått Visuell beräkning

Returnerar rangordningen för den aktuella kontexten inom den angivna partitionen, sorterad efter angiven ordning. Om det inte går att hitta en matchning är rangordningen tom.

Syntax

RANK ( [<ties>][, <relation> or <axis>][, <orderBy>][, <blanks>][, <partitionBy>][, <matchBy>][, <reset>] )

Parametrar

Period Definition
oavgjorda (Valfritt) Definierar hur rangordningen ska hanteras när två eller flera rader är bundna.
Om det anges är det värde som stöds antingen DENSE eller SKIP.
Om utelämnas:
- Standardvärden för SKIP
relation (Valfritt) Ett tabelluttryck som utdataraden returneras från.
Om det anges måste alla kolumner i <orderBy> och <partitionBy> komma från den.
Om det utelämnas:
– <orderBy> måste anges uttryckligen.
– Alla <orderBy> - och <partitionBy-kolumner> måste vara fullständigt kvalificerade och komma från en enda tabell.
– Standardvärdet är ALLSELECTED() för alla kolumner i <orderBy> och <partitionBy>.
axel (Valfritt) En axel i den visuella formen. Endast tillgängligt i visuella beräkningar och ersätter <relationen>.
orderBy (Valfritt) En ORDERBY()-sats som innehåller kolumnerna som definierar hur varje partition sorteras.
Om det utelämnas:
– <måste relationen> uttryckligen anges.
– Standardinställningen är att sortera efter varje kolumn i <relation> som inte redan har angetts i <partitionBy>.
Blanksteg (Valfritt) En uppräkning som definierar hur tomma värden ska hanteras vid sortering.
De värden som stöds är:
  • KEEP (standardvärdet), där beteendet för numeriska värden är tomma värden sorteras mellan noll och negativa värden. Beteendet för strängar är tomma värden sorteras före alla strängar, inklusive tomma strängar.
  • Först sorteras alltid tomma objekt i början, oavsett stigande eller fallande sorteringsordning.
  • SIST sorteras alltid tomma objekt i slutet, oavsett stigande eller fallande sorteringsordning.

Observera att när <blankvärdena> parameter och blankvärden i funktionen ORDERBY() för enskilda uttryck båda anges, <prioriteras blanksteg> i enskilda orderBy-uttryck för det relevanta orderBy-uttrycket, och orderBy-uttryck utan <att tomma> värden anges kommer att respektera <parametern blanks> i funktionen parent Window.
partitionBy (Valfritt) En PARTITIONBY()-sats som innehåller kolumnerna som definierar hur <relationen> partitioneras.
Om den utelämnas <behandlas relationen> som en enda partition.
matchBy (Valfritt) En MATCHBY()-sats som innehåller kolumnerna som definierar hur du matchar data och identifierar den aktuella raden.
nollställa (Valfritt) Endast tillgängligt i visuella beräkningar. Anger om beräkningen återställs och på vilken nivå av den visuella formens kolumnhierarki. Godkända värden är: NONE, LOWESTPARENT, HIGHESTPARENT eller ett heltal. Beteendet beror på heltalstecknet:
– Om noll eller utelämnas återställs inte beräkningen. Motsvarar NONE.
– Om det är positivt identifierar heltal kolumnen med början från den högsta, oberoende av kornighet. HIGHESTPARENT motsvarar 1.
– Om det är negativt identifierar heltal kolumnen med början från den lägsta, i förhållande till det aktuella kornet. LOWESTPARENT motsvarar -1.

Returvärde

Rangnumret för den aktuella kontexten.

Kommentarer

  • Varje <orderBy>, <partitionBy> och <matchBy-kolumn> måste ha ett motsvarande yttre värde för att definiera den aktuella raden som ska användas, med följande beteende:

    • Om det finns exakt en motsvarande yttre kolumn används dess värde.
    • Om det inte finns någon motsvarande yttre kolumn:
      • RANK avgör först alla <kolumnerna orderBy>, <partitionBy> och <matchBy> som inte har någon motsvarande yttre kolumn.
      • För varje kombination av befintliga värden för dessa kolumner i den överordnade RANK-kontexten utvärderas RANK och en rad returneras.
      • RANK:s slutliga utdata är ett rangnummer.
  • Om <matchBy> finns försöker RANK använda kolumner i <matchBy> och <partitionBy> för att idenfity den aktuella raden.

  • Om kolumnerna som anges i <orderBy> och <partitionBy> inte unikt kan identifiera varje rad i <relation> kan två eller flera rader ha samma rangordning och rangordningen bestäms av parametern ties.

  • RANK returnerar ett tomt värde för totalt antal rader. Vi rekommenderar att du testar uttrycket noggrant.

  • RANK jämför inte med RANKX eftersom SUM jämförs med SUMX.

  • <reset> kan endast användas i visuella beräkningar och kan inte användas i kombination med <orderBy> eller <partitionBy>. Om <det finns en återställning> kan axeln> anges, <men <det går inte att göra det>.

Exempel 1 – beräknad kolumn

Följande DAX-fråga:

EVALUATE
ADDCOLUMNS(
    'DimGeography',
    "Rank",
    RANK(
    	DENSE,
    	'DimGeography',
    	ORDERBY(
    		'DimGeography'[StateProvinceName], desc,
    		'DimGeography'[City], asc),
        LAST,
    	PARTITIONBY(
    		'DimGeography'[EnglishCountryRegionName])))
ORDER BY [EnglishCountryRegionName] asc, [StateProvinceName] desc, [City] asc

Returnerar en tabell som rangordnar varje geografi med samma EnglishCountryRegionName efter deras StateProvinceName och City. Blank <orderBy-kolumnvärden> sorteras i slutet.

Exempel 2 – visuell beräkning

Följande DAX-frågor för visuell beräkning:

SalesRankWithinYear = RANK(DENSE, ORDERBY([SalesAmount], DESC), PARTITIONBY([CalendarYear]))

SalesRankAllHistory = RANK(DENSE, ORDERBY([SalesAmount], DESC))

Skapa två kolumner som rangordnar varje månad efter den totala försäljningen, både inom varje år och hela historiken.

Skärmbilden nedan visar den visuella matrisen och det första visuella beräkningsuttrycket:

Beräkning av visuella DAX-objekt

INDEX
ORDERBY
PARTITIONBY
FÖNSTER
RADNUMMER