HISTOGRAM
更新时间:2025-10-16
描述
HISTOGRAM(直方图)函数用于描述数据分布情况,它使用“等高”的分桶策略,并按照数据的值大小进行分桶,并用一些简单的数据来描述每个桶,比如落在桶里的值的个数。
别名
HIST
语法
SQL
1HISTOGRAM(<expr>[, <num_buckets>])
参数
| 参数 | 说明 |
|---|---|
expr |
需要获取第一个值的表达式 |
num_buckets |
可选。用于限制直方图桶(bucket)的数量,默认值 128 |
返回值
返回直方图估算后的 JSON 类型的值。特殊情况:
- 当参数
为 NULL 时,返回 NULL。
举例
SQL
1SELECT histogram(c_float) FROM histogram_test;
Text
1+-------------------------------------------------------------------------------------------------------------------------------------+
2| histogram(`c_float`) |
3+-------------------------------------------------------------------------------------------------------------------------------------+
4| {"num_buckets":3,"buckets":[{"lower":"0.1","upper":"0.1","count":1,"pre_sum":0,"ndv":1},...]} |
5+-------------------------------------------------------------------------------------------------------------------------------------+
SQL
1SELECT histogram(c_string, 2) FROM histogram_test;
Text
1+-------------------------------------------------------------------------------------------------------------------------------------+
2| histogram(`c_string`) |
3+-------------------------------------------------------------------------------------------------------------------------------------+
4| {"num_buckets":2,"buckets":[{"lower":"str1","upper":"str7","count":4,"pre_sum":0,"ndv":3},...]} |
5+-------------------------------------------------------------------------------------------------------------------------------------+
查询结果说明:
JSON
1{
2 "num_buckets": 3,
3 "buckets": [
4 {
5 "lower": "0.1",
6 "upper": "0.2",
7 "count": 2,
8 "pre_sum": 0,
9 "ndv": 2
10 },
11 {
12 "lower": "0.8",
13 "upper": "0.9",
14 "count": 2,
15 "pre_sum": 2,
16 "ndv": 2
17 },
18 {
19 "lower": "1.0",
20 "upper": "1.0",
21 "count": 2,
22 "pre_sum": 4,
23 "ndv": 1
24 }
25 ]
26}
Text
1字段说明:
2- num_buckets:桶的数量
3- buckets:直方图所包含的桶
4 - lower:桶的上界
5 - upper:桶的下界
6 - count:桶内包含的元素数量
7 - pre_sum:前面桶的元素总量
8 - ndv:桶内不同值的个数
9
10> 直方图总的元素数量 = 最后一个桶的元素数量(count)+ 前面桶的元素总量(pre_sum)。
