Hive SQL实现近N周的数据统计查询
app分享君 /
03-30 /
9点赞 /
0评论 /
768阅读
一个需求,需要基于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如下:
```sql
select distinct week from date_week_table where week <= '202501' order by week desc limit 3
```
然后再基于commerce\_data主表计算在2025年第1周往前近4周的数据——
```sql
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周的计算,可以留言区一块分享讨论。
本文来自投稿,不代表本站立场,如若转载,请注明出处:http//www.knowhub.vip/share/2/1835
- 热门的技术博文分享
- 1 . ESP实现Web服务器
- 2 . 从零到一:打造高效的金仓社区 API 集成到 MCP 服务方案
- 3 . 使用C#构建一个同时问多个LLM并总结的小工具
- 4 . .NET 原生驾驭 AI 新基建实战系列Milvus ── 大规模 AI 应用的向量数据库首选
- 5 . 在Avalonia/C#中使用依赖注入过程记录
- 6 . [设计模式/Java] 设计模式之工厂方法模式
- 7 . 5. RabbitMQ 消息队列中 Exchanges(交换机) 的详细说明
- 8 . SQL 中的各种连接 JOIN 的区别总结!
- 9 . JavaScript 中防抖和节流的多种实现方式及应用场景
- 10 . SaltStack 远程命令执行中文乱码问题
- 11 . 推荐10个 DeepSeek 神级提示词,建议搜藏起来使用
- 12 . C#基础:枚举、数组、类型、函数等解析
- 13 . VMware平台的Ubuntu部署完全分布式Hadoop环境
- 14 . C# 多项目打包时如何将项目引用转为包依赖
- 15 . Chrome 135 版本开发者工具(DevTools)更新内容
- 16 . 从零创建npm依赖,只需执行一条命令
- 17 . 关于 Newtonsoft.Json 和 System.Text.Json 混用导致的的序列化不识别的问题
- 18 . 大模型微调实战之训练数据集准备的艺术与科学
- 19 . Windows快速安装MongoDB之Mongo实战
- 20 . 探索 C# 14 新功能:实用特性为编程带来便利