ROWNUMBER
S’applique à :Colonne calculéeTable calculéeMesureCalcul visuel
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 :
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 :