Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

quantilesTiming

quantilesTiming

Introduit dans : v1.1.0

Calcule simultanément plusieurs quantiles d'une séquence de données numériques à différents niveaux, avec une précision déterminée.

Cette fonction est équivalente à quantileTiming, mais 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.

Le résultat est déterministe (il ne dépend pas de l'ordre de traitement de la requête). La fonction est optimisée pour les séquences décrivant des distributions telles que les temps de chargement des pages web ou les temps de réponse du backend.

Précision

Le calcul est précis si :

  • Le nombre total de valeurs ne dépasse pas 5670.
  • Le nombre total de valeurs dépasse 5670, mais le temps de chargement de la page est inférieur à 1024 ms.

Sinon, le résultat du calcul est arrondi au multiple de 16 ms le plus proche.

Syntaxe

quantilesTiming(level1, level2, ...)(expr)

Paramètres

  • level — Niveaux de quantiles. Un ou plusieurs nombres à virgule flottante constants compris entre 0 et 1. Nous recommandons d’utiliser des valeurs de level dans la plage [0.01, 0.99]. Float*

Arguments

  • expr — Expression sur les valeurs de la colonne renvoyant des types de données numériques, Date ou DateTime. Si des valeurs négatives sont passées à la fonction, le comportement est indéfini. Si la valeur est supérieure à 30 000 (un temps de chargement de page supérieur à 30 secondes), elle est considérée comme égale à 30 000. (U)Int* ou Float* ou Date ou DateTime

Valeur de retour

Array de quantiles aux niveaux spécifiés, dans le même ordre que celui dans lequel les niveaux ont été indiqués. Array(Float32)

Exemples

Calcul de plusieurs quantiles de durée

CREATE TABLE t (response_time UInt32) ENGINE = Memory;
INSERT INTO t VALUES (72), (112), (126), (145), (104), (242), (313), (168), (108);

SELECT quantilesTiming(0.25, 0.5, 0.75)(response_time) FROM t;
┌─quantilesTiming(0.25, 0.5, 0.75)(response_time)─┐
│ [108,126,168]                                   │
└─────────────────────────────────────────────────┘
Navigation