CUME_DIST |
Cumulatif |
|---|---|
| BigQuery | |
Syntaxe
| CUME_DIST() |
Description
Cette fonction permet de demander le rang selon un nombre d'enregistrement précédent l'enregistrement courant ou étant homologues.
Remarques
- Fonction analytique basée sur une fenêtre ordonnée : CUME_DIST() est une fonction de fenêtre (analytic function) devant impérativement être utilisée avec une clause OVER(ORDER BY ...). Elle calcule pour chaque ligne la proportion des lignes ayant une valeur inférieure ou égale à la sienne dans l'ordre défini. Sans ORDER BY, elle renvoie une erreur.
- Renvoie une valeur entre 0 et 1, toujours en décimal : Le résultat de CUME_DIST() est un nombre décimal compris strictement entre 0 et 1, sauf pour la première ligne (valeur minimale = 1/n) et la dernière ligne (valeur maximale = 1). Cela permet une normalisation implicite du rang des lignes.
- Mesure la position relative d'un enregistrement : Cette fonction permet d'évaluer le rang cumulatif relatif d'une ligne dans un ensemble trié. Elle est particulièrement utile lorsqu'on souhaite connaître le pourcentage d'observations inférieures ou égales à la valeur courante.
- Insensible aux valeurs NULL dans l'ordre : Les valeurs NULL sont incluses dans le classement, mais leur position dépend de la clause ORDER BY. Par défaut, dans ORDER BY col, les valeurs NULL apparaissent en premier. On peut contrôler cela avec NULLS FIRST ou NULLS LAST selon l'effet désiré.
- Gère les ex-aequo en groupe unique : Si plusieurs lignes possèdent la même valeur de tri (ex-aequo), CUME_DIST() leur attribue la même valeur de distribution cumulative, qui est calculée en fonction du dernier rang du groupe d'ex-aequo divisé par le nombre total de lignes.
- Particulièrement utile pour les analyses percentiles : La fonction CUME_DIST() est idéale pour construire des classes de type décile, quartile ou centile. Par exemple, on peut l'utiliser pour identifier les 10 % des valeurs les plus élevées dans un classement sans connaître la taille de l'ensemble de données.
- Peut être combinée avec PARTITION BY : En ajoutant une clause PARTITION BY, on peut calculer le rang cumulatif dans chaque sous-groupe de l'ensemble de données. Cela permet des comparaisons intra-groupe, par exemple : par département, par région ou par type de produit.
- Diffère de RANK et DENSE_RANK : Contrairement à RANK() ou DENSE_RANK() retournant des entiers, CUME_DIST() fournit une valeur continue normalisée. Elle ne dépend pas de la présence d'ex-aequo de la même façon, ce qui la rend plus adaptée à des visualisations comme des courbes de distribution.
Dernière mise à jour : Jeudi, le 18 Juin 2020