部署DeepSeek模型,进群交流最in玩法!
立即加群
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Hive SQL实现近N周的数据统计查询

Hive SQL实现近N周的数据统计查询

原创
作者头像
朱季谦
发布2025-03-30 17:50:48
发布2025-03-30 17:50:48
3900
代码可运行
举报
运行总次数:0
代码可运行

文/朱季谦

先前遇到过一个需求,需要基于HIVE统计近N周范围的数据,例如,统计近7周范围的数据指标。

需要用HIVE SQL去实现该功能,而HIVE SQL并没有PostgreSQL那样例如通过函数to_char((to_date('202550', 'YYYWW') - INTERVAL '5 weeks'), 'yyyyww'))就可以实现202550和往前5周的202545周的查询(这里的50和45分别表示2025年的50周和45周)。

我当时通过百度和DeepSeek都没有找到合适的答案,还是思考了好几天才想明白怎么解决。

既然HIVE SQL没有函数可以直接实现取指定周与近N周的条件范围查询,是否可以有其他方式呢?

答案是肯定的。

我当时是通过额外建一个时间表,该表有天以及天对应的所在周,可以直接通过代码生成这样一张表date_week_table,直接 从2020年一直自动映射到2030年,该表的数据如下:

id

Day

Week

1

2020-01-01

202001

2

2020-01-02

202001

3

2020-01-03

202001

4

2020-01-04

202001

5

2020-01-05

202001

6

2020-01-06

202002

7

2020-01-07

202002

8

2020-01-08

202002

.......

......

......

当有这一张周表,而需要查询近N周范围数据的主表由有week字段,例如主表commerce_data是这样的——

id

order_id

customer_id

product_id

week

total_amount

1

ORD202315001

1001

5001

202501

5

2

ORD202315002

1002

5002

202452

10

3

ORD202315003

1003

5003

202451

22

4

ORD202315004

1004

5004

202450

1

5

......

......

......

......

......

这时,如果需要统计指定周和前N周的数据,就可以基于这两张表去实现。

例如,查出2025年第1周往前近4周的数据。

可以基于date_week_table周表计算2025年第1周往前近4周都有哪些周,HIVE SQL如下:

代码语言:javascript
代码运行次数:0
运行
复制
select distinct week from date_week_table where week <= '202501' order by week desc limit 3

然后再基于commerce_data主表计算在2025年第1周往前近4周的数据——

代码语言:javascript
代码运行次数:0
运行
复制
select 
sum(total_amount) 
from commerce_data 
where week in(select distinct week from date_week_table where week <= '202501' order by week desc limit 3) 
group by order_id

这样,就可以实现查询出指定周及指定周近N周的HIVE SQL查询了。

当然,也有童鞋可能会说,既然只是查询近N周范围,是否可以直接使用指定周,再减去N来差呢?

这里会有一个问题,2025年第一周,即202501,往前两周,分别是202452和202451,如果用指定周202501直接减2,得到的并不是202451。

以上,只是我个人的一个思路,如果还有其他基于HIVE SQL来计算指定周及近N周的计算,可以留言区一块分享讨论。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档