Passer au contenu principal

quantileGK

Introduit dans : v23.4.0 Calcule le quantile d’une séquence de données numériques à l’aide de l’algorithme de Greenwald-Khanna. L’algorithme de Greenwald-Khanna sert à calculer des quantiles sur un flux de données de manière très efficace. Il a été introduit par Michael Greenwald et Sanjeev Khanna en 2001. Il est largement utilisé dans les bases de données et les systèmes de big data lorsqu’il est nécessaire de calculer en temps réel des quantiles précis sur de grands flux de données. Cet algorithme est très efficace : il ne nécessite que O(log n) d’espace et O(log log n) de temps par élément (où n est la taille de l’entrée). Il est également très précis et fournit, avec une forte probabilité, une valeur de quantile approximative. quantileGK se distingue des autres fonctions de quantile de ClickHouse en ce qu’il permet à l’utilisateur de contrôler la précision du résultat du quantile approximatif. Syntaxe
quantileGK(accuracy, level)(expr)
Alias : medianGK Paramètres
  • accuracy — Précision du quantile. Entier positif constant. Plus la valeur de précision est élevée, plus l’erreur est faible. Par exemple, si l’argument accuracy est défini sur 100, le quantile calculé aura une erreur d’au plus 1 % avec une forte probabilité. Il existe un compromis entre la précision des quantiles calculés et la complexité de calcul de l’algorithme. Une précision plus élevée nécessite davantage de mémoire et de ressources de calcul pour calculer le quantile avec précision, tandis qu’une valeur de précision plus faible permet un calcul plus rapide et plus économe en mémoire, au prix d’une précision légèrement moindre. UInt*
  • level — Facultatif. Niveau du quantile. Nombre à virgule flottante constant compris entre 0 et 1. Valeur par défaut : 0.5. À level=0.5, la fonction calcule la médiane. Float*
Arguments
  • expr — Expression sur les valeurs de la colonne produisant des types de données numériques, Date ou DateTime. (U)Int* ou Float* ou Decimal* ou Date ou DateTime
Valeur renvoyée Renvoie le quantile du niveau et de la précision spécifiés. Float64 ou Date ou DateTime Exemples Calcul du quantile avec différents niveaux de précision
Query
SELECT quantileGK(1, 0.25)(number + 1) FROM numbers(1000);
Response
┌─quantileGK(1, 0.25)(plus(number, 1))─┐
│                                    1 │
└──────────────────────────────────────┘
Quantile plus précis
Query
SELECT quantileGK(100, 0.25)(number + 1) FROM numbers(1000);
Response
┌─quantileGK(100, 0.25)(plus(number, 1))─┐
│                                    251 │
└────────────────────────────────────────┘
Voir aussi
Dernière modification le 25 juin 2026