QUANTILE_TDIGEST_WEIGHTED (Lakehouse v1)
使用 t-digest 算法计算数值数据序列的近似分位数。 此函数会考虑序列中每个成员的权重。内存消耗为 log(n),其中 n 为值的数量。
Analyze 语法
Section titled “Analyze 语法”func.quantile_tdigest_weighted(<levels>, <expr>, <weight_expr>)Analyze 示例
Section titled “Analyze 示例”func.quantile_tdigest_weighted([0.5, 0.8], table.sales_amount, 1).alias('sales_amounts')
| sales_amounts ||-----------------------+| [6000.0,7000.0] |SQL 语法
Section titled “SQL 语法”QUANTILE_TDIGEST_WEIGHTED(<level1>[, <level2>, ...])(<expr>, <weight_expr>)| 参数 | 说明 |
|---|---|
<level n> |
分位数的水平,是 0 到 1 之间的常量浮点数。建议使用 [0.01, 0.99] 范围内的水平值。 |
<expr> |
任意数值表达式 |
<weight_expr> |
任意无符号整数表达式。权重是值出现的次数。 |
返回 Float64 值或 Float64 值数组,具体取决于指定的分位数水平的数量。
SQL 示例
Section titled “SQL 示例”-- Create a table and insert sample dataCREATE 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_amountFROM 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] |