TO_QUANTILE_STATE
更新时间:2025-10-16
Description
此函数将数值类型转化成 QUANTILE_STATE 类型。 compression 参数是可选项,可设置范围是[2048, 10000],值越大,后续分位数近似计算的精度越高,内存消耗越大,计算耗时越长。 compression 参数未指定或设置的值在[2048, 10000]范围外,以 2048 的默认值运行
Syntax
SQL
1TO_QUANTILE_STATE(<raw_data> <compression>)
Parameters
| 参数 | 描述 |
|---|---|
<raw_data> |
目标列。 |
<compression> |
压缩阈值。 |
Return value
转换之后的 QUANTILE_STATE 类型的列。
Example
SQL
1CREATE TABLE IF NOT EXISTS ${tableName_21} (
2 `dt` int(11) NULL COMMENT "",
3 `id` int(11) NULL COMMENT "",
4 `price` quantile_state QUANTILE_UNION NOT NULL COMMENT ""
5 ) ENGINE=OLAP
6 AGGREGATE KEY(`dt`, `id`)
7 COMMENT "OLAP"
8 DISTRIBUTED BY HASH(`dt`) BUCKETS 1
9 PROPERTIES ("replication_num" = "1");
10
11INSERT INTO quantile_state_agg_test VALUES(20220201,0, to_quantile_state(1, 2048));
12
13INSERT INTO quantile_state_agg_test VALUES(20220201,1, to_quantile_state(-1, 2048)),
14 (20220201,1, to_quantile_state(0, 2048)),(20220201,1, to_quantile_state(1, 2048)),
15 (20220201,1, to_quantile_state(2, 2048)),(20220201,1, to_quantile_state(3, 2048));
16
17SELECT dt, id, quantile_percent(quantile_union(price), 0) FROM quantile_state_agg_test GROUP BY dt, id ORDER BY dt, id
结果为
Text
1+----------+------+--------------------------------------------+
2| dt | id | quantile_percent(quantile_union(price), 0) |
3+----------+------+--------------------------------------------+
4| 20220201 | 0 | 1 |
5| 20220201 | 1 | -1 |
6+----------+------+--------------------------------------------+
