ROWNUMBER

Retourne le classement unique du contexte actuel dans la partition spécifiée triée selon l’ordre spécifié. Si aucune correspondance n’est trouvée, rownumber est vide.

Syntaxe

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

Paramètres

Terme Définition
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 :
  • DEFAULT (la valeur par défaut), où le comportement pour les valeurs numériques est que les valeurs vides sont classées entre les valeurs 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 rownumber 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 :
    • ROWNUMBER 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 ROWNUMBER, ROWNUMBER est évalué, et une ligne est retournée.
    • La sortie finale de ROWNUMBER est une union de ces lignes.
  • S’il existe plusieurs colonnes externes correspondantes, une erreur est retournée.

Si <matchBy> est présent, ROWNUMBER 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>, alors :

  • ROWNUMBER essaie de trouver le moins de colonnes supplémentaires requises pour identifier chaque ligne de manière unique.
  • Si de telles colonnes sont disponibles, ROWNUMBER
    • Essaie de trouver le moins de colonnes supplémentaires requises pour identifier chaque ligne de manière unique.
    • Ajoute automatiquement ces nouvelles colonnes à la clause <orderBy>.
    • Trie chaque partition à l’aide de ce nouvel ensemble de colonnes orderBy.
  • Si ces colonnes sont introuvables et que la fonction détecte une égalité au moment de l’exécution, une erreur est retournée.

<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',
    "UniqueRank",
    ROWNUMBER(
    	'DimGeography',
    	ORDERBY(
    		'DimGeography'[StateProvinceName], desc,
    		'DimGeography'[City], asc),
    	PARTITIONBY(
    		'DimGeography'[EnglishCountryRegionName])))
ORDER BY [EnglishCountryRegionName] asc, [StateProvinceName] desc, [City] asc

Renvoie une table qui classe de manière unique chaque zone géographique avec le même EnglishCountryRegionName, par StateProvinceName et City.

Exemple 2 : calcul de visuel

Les requêtes DAX de calcul de visuel suivantes :

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

SalesRankAllHistory = ROWNUMBER(ORDERBY([SalesAmount], DESC))

Créent deux colonnes qui classent de manière unique 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 :

DAX visual calculation

INDEX
ORDERBY
PARTITIONBY
WINDOW
RANK