跳到主要内容

width_bucket:等宽分桶

速查结论

width_bucket(value, min_value, max_value, num_bucket) 是 Spark SQL 中用于将数值分配到等宽直方图的桶中的函数。

语法

width_bucket(value, min_value, max_value, num_bucket)

width_bucket(value, min_value, max_value, num_bucket) - 返回在范围从 min_valuemax_value 的等宽直方图中,value 将被分配到的桶编号,该直方图有 num_bucket 个桶。

参数说明

参数说明
value要分配的值,可以是数值或 INTERVAL 类型
min_value范围下界
max_value范围上界
num_bucket桶的数量

示例

> SELECT width_bucket(5.3, 0.2, 10.6, 5);
3
> SELECT width_bucket(-2.1, 1.3, 3.4, 3);
0
> SELECT width_bucket(8.1, 0.0, 5.7, 4);
5
> SELECT width_bucket(-0.9, 5.2, 0.5, 2);
3
> SELECT width_bucket(INTERVAL '0' YEAR, INTERVAL '0' YEAR, INTERVAL '10' YEAR, 10);
1
> SELECT width_bucket(INTERVAL '1' YEAR, INTERVAL '0' YEAR, INTERVAL '10' YEAR, 10);
2
> SELECT width_bucket(INTERVAL '0' DAY, INTERVAL '0' DAY, INTERVAL '10' DAY, 10);
1
> SELECT width_bucket(INTERVAL '1' DAY, INTERVAL '0' DAY, INTERVAL '10' DAY, 10);
2

常见报错与避坑指南

  • 越界返回值:当 value 小于 min_value 时返回 0,大于等于 max_value 时返回 num_bucket + 1,这些值表示超出范围。
  • min_value 大于 max_value:当 min_value > max_value 时,桶编号会翻转,小于 max_value 的值会落入高编号桶。
  • 支持 INTERVAL 类型valuemin_valuemax_value 均可使用 INTERVAL 类型进行分桶。

Since: 3.1.0

📱关注公众号

「数据仓库技术」文章同步更新,不错过每一篇干货

微信公众号二维码
💬加群交流

备注「数据仓库技术」加入社群,每日一道大厂SQL真题

交流微信二维码

你可能还想看