Partager via


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 :
  • KEEP (la valeur par défaut), où le comportement pour les valeurs numériques est que les valeurs vides sont classées entre zéro et les valeurs négatives. Le comportement des chaînes est que les valeurs vides sont triées avant toutes les chaînes, y compris les chaînes vides.
  • FIRST, les valeurs vides sont toujours classées au début, que l’ordre de tri soit croissant ou décroissant.
  • LAST, les valeurs vides sont toujours classées à la fin, que l’ordre de tri soit croissant ou décroissant.

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 :

Calcul visuel DAX

INDEX
ORDERBY
PARTITIONBY
WINDOW
ROWNUMBER