Pular para o conteúdo

Calcula um quantil aproximado de uma sequência de dados numéricos usando o algoritmo t-digest. Esta função leva em conta o peso de cada membro da sequência. O consumo de memória é de log(n), em que n é o número de valores.

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>)
Argumentos Descrição
<level n> Um nível de quantil representa um número de ponto flutuante constante entre 0 e 1. Recomenda-se usar um valor de nível no intervalo [0.01, 0.99].
<expr> Qualquer expressão numérica
<weight_expr> Qualquer expressão de inteiro sem sinal. O peso é o número de ocorrências do valor.

Retorna um valor Float64 ou um array de valores Float64, dependendo do número de níveis de quantil especificados.

-- 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] |