ROW_NUMBER |
Nombre d'enregistrement |
|---|---|
| BigQuery | |
Syntaxe
| ROW_NUMBER() |
Description
Cette fonction permet de demander le numéro ordinal séquentiel correspondant à un enregistrement pour chaque partition triée.
Remarques
- Fonction analytique de numérotation séquentielle : ROW_NUMBER() attribue un numéro unique et croissant à chaque ligne d'une partition triée, à partir de 1. Contrairement à d'autres fonctions comme RANK(), elle ne génère pas de doublons en cas d'égalité.
- Nécessite une clause OVER(ORDER BY ...) : Pour fonctionner, la fonction doit être utilisée avec une clause OVER, incluant obligatoirement une instruction ORDER BY définissant l'ordre des lignes à numéroter. Sans cela, BigQuery génère une erreur.
- Particulièrement utile pour extraire des premières lignes : Elle est très pratique pour récupérer la première ligne par groupe, par exemple en la combinant avec PARTITION BY. Cela permet d'identifier la dernière commande d'un client ou l'enregistrement le plus récent.
- Numérotation indépendante entre partitions : Lorsqu'on utilise PARTITION BY, la numérotation recommence à 1 dans chaque groupe. Cela est utile pour les analyses par catégorie, client ou date.
- Peut servir pour la suppression de doublons : Une requête utilisant ROW_NUMBER() avec PARTITION BY sur les colonnes de doublon potentielles permet d'identifier l'enregistrement principal (numéro 1) à conserver.
- Ne saute jamais de numéro, même en cas d'égalité : Contrairement à RANK() ou DENSE_RANK(), ROW_NUMBER() ne tient pas compte des égalités dans les valeurs de tri. Chaque ligne reçoit un numéro distinct, même si les colonnes de tri sont identiques.
- Fonction déterministe en présence d'un tri strict : Si l'ORDER BY repose sur des colonnes discriminantes (par exemple des identifiants uniques ou des horodatages), alors ROW_NUMBER() génère un ordre parfaitement reproductible à chaque exécution.
- Ne modifie pas les données, seulement leur position logique : Elle ne change pas la structure ou les valeurs des données sources, mais crée une nouvelle colonne virtuelle utile pour filtrer, classer ou extraire des sous-ensembles.
Dernière mise à jour : Jeudi, le 18 Juin 2020