RANK
S’applique à :Colonne calculéeTable calculéeMesureCalcul visuel
Retourne le classement du contexte actuel dans la partition spécifiée triée selon l’ordre spécifié. Si aucune correspondance n’est trouvée, rank est vide.
Syntaxe
RANK ( [<ties>][, <relation> or <axis>][, <orderBy>][, <blanks>][, <partitionBy>][, <matchBy>][, <reset>] )
Paramètres
Terme | Définition |
---|---|
ties | (Facultatif) Définit comment gérer le classement quand deux lignes ou plus sont à égalité. Si la valeur est spécifiée, la valeur prise en charge est DENSE ou SKIP. Si aucune valeur n’est spécifiée : SKIP par défaut |
relation | (Facultatif) Expression de table à partir de laquelle la ligne de sortie est retournée Si vous en spécifiez une, toutes les colonnes <orderBy> et <partitionBy> doivent provenir de celle-ci. En cas d’omission : - <orderBy> doit être spécifié explicitement. - Toutes les colonnes <orderBy> et <partitionBy> doivent être complètes et provenir d’une seule table. - La valeur par défaut est ALLSELECTED() de toutes les colonnes dans <orderBy> et <partitionBy>. |
axis | (Facultatif) Axe de la forme du visuel. Disponible seulement dans les calculs de visuel et remplace <relation>. |
orderBy | (Facultatif) Clause ORDERBY() contenant les colonnes qui définissent le tri de chaque partition. En cas d’omission : - la <relation> doit être spécifiée explicitement. - Par défaut, le tri est effectué par chaque colonne dans une <relation> qui n’est pas déjà spécifiée dans <partitionBy>. |
vides | (Facultatif) Énumération qui définit comment gérer des valeurs vides lors du tri. Les valeurs prises en charge sont :
Notez que quand le paramètres <blanks> et des valeurs vides dans la fonction ORDERBY() sur une expression individuelle sont tous deux spécifiés, les valeurs <vide> sur l’expression orderBy individuelle sont prioritaires pour l’expression orderBy appropriée, et les expressions orderBy sans que <blanks> soit spécifié respectent le paramètre <blanks> sur la fonction de la fenêtre parente. |
partitionBy | (Facultatif) Clause PARTITIONBY() contenant les colonnes qui définissent la façon dont la <relation> est partitionnée. En cas d’omission, la <relation> est traitée comme une partition unique. |
matchBy | (Facultatif) Clause MATCHBY() contenant les colonnes qui définissent la manière de faire correspondre les données et d’identifier la ligne actuelle. |
reset | (Facultatif) Disponible seulement dans les calculs de visuel. Indique si le calcul est réinitialisé et à quel niveau de la hiérarchie des colonnes de la forme du visuel. Les valeurs acceptées sont : NONE, LOWESTPARENT, HIGHESTPARENT ou un entier. Le comportement dépend du signe de l’entier : - S’il est égal à zéro ou s’il est omis, le calcul n’est pas réinitialisé. Équivalent à NONE. - S’il est positif, l’entier identifie la colonne en commençant par la plus élevée, indépendamment du fragment. HIGHESTPARENT équivaut à 1. - S’il est négatif, l’entier identifie la colonne en commençant par la plus basse, par rapport au fragment actuel. LOWESTPARENT équivaut à -1. |
Valeur retournée
Numéro de classement du contexte actuel.
Notes
Chaque colonne <orderBy>, <partitionBy> et <matchBy> doit avoir une valeur externe correspondante permettant de définir la ligne actuelle à traiter, avec le comportement suivant :
- S’il existe exactement une colonne externe correspondante, sa valeur est utilisée.
- S’il n’existe aucune colonne externe correspondante, alors :
- RANK détermine d’abord toutes les colonnes <orderBy>, <partitionBy> et <matchBy> qui n’ont aucune colonne externe correspondante.
- Pour chaque combinaison de valeurs existantes pour ces colonnes dans le contexte parent de RANK, RANK est évalué, et une ligne est retournée.
- La sortie finale de RANK est un numéro de classement.
Si <matchBy> est présent, RANK essaie d’utiliser les colonnes dans <matchBy> et <partitionBy> pour identifier la ligne actuelle.
Si les colonnes spécifiées dans <orderBy> et <partitionBy> ne peuvent pas identifier de manière unique chaque ligne dans la <relation>, deux lignes ou plus peuvent avoir le même classement et le classement est déterminé par le paramètre Ties.
RANK retourne une valeur vide pour le nombre total de lignes. Il est recommandé de tester votre expression de manière approfondie.
RANK n’est pas comparable à RANKX comme SUM est comparable à SUMX.
<reset> peut être utilisé seulement dans les calculs de visuel, et ne peut pas être utilisé en combinaison avec <orderBy> ou <partitionBy>. Si <reset> est présent, <axis> peut être spécifié, mais pas <relation>.
Exemple 1 : colonne calculée
La requête DAX suivante :
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
Renvoie une table qui classe chaque zone géographique avec le même EnglishCountryRegionName, par StateProvinceName et City. Les valeurs de colonne <orderBy> vides sont triées à la fin.
Exemple 2 : calcul de visuel
Les requêtes DAX de calcul de visuel suivantes :
SalesRankWithinYear = RANK(DENSE, ORDERBY([SalesAmount], DESC), PARTITIONBY([CalendarYear]))
SalesRankAllHistory = RANK(DENSE, ORDERBY([SalesAmount], DESC))
Créent deux colonnes qui classent chaque mois par total des ventes, une pour chaque année l’autre dans tout l’historique.
La capture d’écran ci-dessous montre la matrice du visuel et l’expression du premier calcul de visuel :