Aller au contenu

Calcule un quantile approximatif d’une séquence de données numériques à l’aide de l’algorithme t-digest. Cette fonction tient compte du poids de chaque élément de la séquence. La consommation de mémoire est de log(n), où n est le nombre de valeurs.

func.quantile_tdigest_weighted(<levels>, <expr>, <weight_expr>)
func.quantile_tdigest_weighted([0.5, 0.8], table.sales_amount, 1).alias('sales_amounts')
| sales_amounts |
|-----------------------+
| [6000.0,7000.0] |
QUANTILE_TDIGEST_WEIGHTED(<level1>[, <level2>, ...])(<expr>, <weight_expr>)
Arguments Description
<level n> Un niveau de quantile est un nombre à virgule flottante constant compris entre 0 et 1. Il est recommandé d’utiliser une valeur de niveau comprise entre 0,01 et 0,99.
<expr> Toute expression numérique
<weight_expr> Toute expression de type entier non signé. Le poids correspond au nombre d’occurrences de la valeur.

Renvoie une valeur Float64 ou un tableau de valeurs Float64, selon le nombre de niveaux de quantile spécifiés.

-- Create a table and insert sample data
CREATE TABLE sales_data (
id INT,
sales_person_id INT,
sales_amount FLOAT
);
INSERT INTO sales_data (id, sales_person_id, sales_amount)
VALUES (1, 1, 5000),
(2, 2, 5500),
(3, 3, 6000),
(4, 4, 6500),
(5, 5, 7000);
SELECT QUANTILE_TDIGEST_WEIGHTED(0.5)(sales_amount, 1) AS median_sales_amount
FROM sales_data;
median_sales_amount|
-------------------+
6000.0|
SELECT QUANTILE_TDIGEST_WEIGHTED(0.5, 0.8)(sales_amount, 1)
FROM sales_data;
quantile_tdigest_weighted(0.5, 0.8)(sales_amount)|
-------------------------------------------------+
[6000.0,7000.0] |