quantilesTDigestWeighted
Introduit dans : v20.1.0
Calcule simultanément plusieurs quantiles approximatifs d’une séquence de données numériques à différents niveaux, à l’aide de l’algorithme t-digest. La fonction prend en compte le poids de chaque élément de la séquence.
Cette fonction est équivalente à quantileTDigestWeighted, mais elle permet de calculer plusieurs niveaux de quantile en un seul passage, ce qui est plus efficace que d’appeler des fonctions de quantile séparées.
L’erreur maximale est de 1 %. La consommation de mémoire est de log(n), où n représente le nombre de valeurs.
Les performances de cette fonction sont inférieures à celles de quantiles ou quantilesTiming.
En termes de ratio entre la taille de l’état et la précision, cette fonction est bien meilleure que quantiles.
Le résultat dépend de l’ordre d’exécution de la requête et est non déterministe.
Syntaxe
quantilesTDigestWeighted(level1, level2, ...)(expr, weight)Paramètres
level— Niveaux de quantiles. Un ou plusieurs nombres constants en virgule flottante compris entre 0 et 1. Nous recommandons d’utiliser des valeursleveldans la plage[0.01, 0.99].Float*
Arguments
expr— Expression sur les valeurs de la colonne produisant un type de données numérique,DateouDateTime.(U)Int*ouFloat*ouDateouDateTimeweight— Colonne contenant les poids des éléments de la séquence. Le poids correspond au nombre d’occurrences de la valeur.UInt*
Valeur renvoyée
Tableau de quantiles approximatifs pour les niveaux spécifiés, dans le même ordre que celui dans lequel les niveaux ont été spécifiés. Pour les entrées Date et DateTime, le format de sortie correspond au format d’entrée. Array(Float32) ou Array(Date) ou Array(DateTime)
Exemples
Calcul de plusieurs quantiles pondérés avec t-digest
SELECT quantilesTDigestWeighted(0.25, 0.5, 0.75)(number, 1) FROM numbers(100);┌─quantilesTDigestWeighted(0.25, 0.5, 0.75)(number, 1)─┐
│ [24,49,74] │
└──────────────────────────────────────────────────────┘