Hive SQL实现近N周的数据统计查询
文/朱季谦
先前遇到过一个需求,需要基于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如下:
select distinct week from date_week_table where week <= '202501' order by week desc limit 3
然后再基于commerce_data主表计算在2025年第1周往前近4周的数据——
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周的计算,可以留言区一块分享讨论。
相关文章:
Hive SQL实现近N周的数据统计查询
文/朱季谦 先前遇到过一个需求,需要基于HIVE统计近N周范围的数据,例如,统计近7周范围的数据指标。 需要用HIVE SQL去实现该功能,而HIVE SQL并没有PostgreSQL那样例如通过函数to_char((to_date(202550, YYYWW) - INTERVAL 5 weeks…...
【百日精通 JAVA | SQL篇 | 第一篇】初识数据库
一、数据库是什么? 数据库是一类软件,数据库的作用用于管理系统(这是一款成品软件,内部应用了很多数据结构)。 二、数据库分为两大类 1.关系型数据库 对于数据的要求比较严格 通常是以表格的方式来组织数据的。(和Excel差不多) 典型代表…...
大数据Spark(五十六):Spark生态模块与运行模式
文章目录 Spark生态模块与运行模式 一、Spark生态模块 二、Spark运行模式 Spark生态模块与运行模式 一、Spark生态模块 Spark 生态模块包括:SparkCore、SparkSQL、SparkStreaming、StructuredStreaming、MLlib 和 GraphX。与 Hadoop 相关的整个技术生态如下所示…...
Postman 7.3.5 旧版下载指南(Win64)及注意事项
Postman-win64-7.3.5-Setup 是 Postman 的一个旧版本(2019年发布,适用于 Windows 64位系统)。以下是相关信息和建议: 1. Postman 7.3.5 版本说明 功能:用于 API 开发、测试和协作。 系统要求:Windows 64位…...
人工智能在自然语言处理中的应用:从理论到实践的探索
自然语言处理(Natural Language Processing,NLP)一直是人工智能领域的重要研究方向。随着深度学习技术的飞速发展,NLP在近年来取得了突破性进展,从文本生成到机器翻译,从情感分析到智能问答,自然…...
Gossip协议:分布式系统中的“八卦”传播艺术
目录 一、 什么是Gossip协议?二、 Gossip协议的应用 💡三、 Gossip协议消息传播模式详解 📚四、 Gossip协议的优缺点五、 总结: 🌟我的其他文章也讲解的比较有趣😁,如果喜欢博主的讲解方式&…...
Oracle初识:登录方法、导入dmp文件
目录 一、登录方法 以sys系统管理员的身份登录 ,无需账户和密码 以账户密码的用户身份登录 二、导入dmp文件 方法一:PLSQL导入dmp文件 一、登录方法 Oracle的登录方法有两种。 以sys系统管理员的身份登录 ,无需账户和密码 sqlplus / a…...
微服务架构中的精妙设计:环境和工程搭建
一.前期准备 1.1开发环境安装 Oracle从JDK9开始每半年发布⼀个新版本, 新版本发布后, ⽼版本就不再进⾏维护. 但是会有⼏个⻓期维护的版本. ⽬前⻓期维护的版本有: JDK8, JDK11, JDK17, JDK21 在 JDK版本的选择上,尽量选择⻓期维护的版本. 为什么选择JDK17? S…...
【Yolov8部署】 VS2019+opencv-dnn CPU环境下部署目标检测模型
文章目录 前言一、导出yolov8模型为onnx文件二、VS2019配置及opencv环境配置三、opencv部署总结 前言 本文主要研究场景为工业场景下,在工控机与工业相机环境中运行的视觉缺陷检测系统,因此本文主要目的为实现c环境下,将yolov8已训练好的检测…...
【嵌入式学习3】零散知识点
目录 1、systemctl命令 2、软链接和硬链接 软链接:类似快捷方式 硬链接 3、网络配置 域名解析 固定ip 为什么要固定ip? 如何固定? 4、网络请求与下载 5、端口(物理/虚拟) 端口分类: 端口管理与…...
软考《信息系统运行管理员》- 6.2 信息系统硬件的安全运维
硬件安全运行的概念 硬件安全运行的含义是保护支撑信息系统业务活动的信息系统硬件资产免遭自然灾害、人 为因素及各种计算机犯罪行为导致的破坏。硬件安全通常包括环境安全、设备安全和介质安全。 硬件安全运行的影响因素 硬件安全运行的影响因素主要有: (1)自然…...
3.30学习总结 Java包装类+高精度算法+查找算法
包装类: 基本数据类型对应的引用数据类型。 基本数据类型:在内存中记录的是真实的值。 八种包装类的父类都是Object类。 对象之间不能直接进行计算。 JDK5之后可以把int和integer看成一个东西,因为会进行内部优化。自动装箱和自动拆箱。 …...
请描述下你对vue生命周期的理解?在created和mounted这两个生命周期中请求数据有什么区别呢?
一、生命周期是什么 生命周期(Life Cycle)的概念应用很广泛,特别是在政治、经济、环境、技术、社会等诸多领域经常出现,其基本涵义可以通俗地理解为“从摇篮到坟墓”(Cradle-to-Grave)的整个过程在Vue中实例从创建到销毁的过程就是生命周期,即指从创建、初始化数据、编…...
3月30号
// 1.toString 返回对象的字符串表示形式Object objnew Object();String str1obj.toString();System.out.println(str1);//java.lang.Objectb4c966a// 核心逻辑: // 当我们打印一个对象的时候,底层会调用对象的toString方法,把对象变成字符串 // 然…...
Java——输入,循环,BigInteger,拷贝,排序
读取输入 打印输出到“ 标准输出流”(即控制台窗口)是一件非常容易的事情,只要 调用System.out.println 即可。然而,读取“ 标准输人流” System.in就没有那么简单了。要想通 过控制台进行输人,首先需要构造一个Scann…...
Elasticsearch客户端工具初探--kibana
1 Kibana简介 Kibana是Elastic Stack(ELK)中的可视化工具,用于对Elasticsearch中存储的数据进行搜索、分析和可视化展示。它提供了直观的Web界面,支持日志分析、业务监控、数据探索等功能,广泛应用于运维监控、安全分析…...
ollama在win10安装、使用、卸载
目录 前置: 1 下载ollama 2 安装 3 配置环境变量,设置模型存储位置 4 使用 5 卸载 前置: 1 在打算安装ollama之前,需要先检查电脑当前状态是否能使用ollama。确认条件满足再进行安装操作。 2 https://github.com/ollama/…...
查看iphone手机的使用记录-克魔实战
如何查看 iOS 设备近期的详细使用数据 在日常使用手机时,了解设备的运行状态和各项硬件的使用情况可以帮助分析耗电情况、优化应用使用方式。iOS 设备提供了一些数据记录,能够显示应用的启动和关闭时间、后台运行情况,以及应用在使用过程中调…...
[Lc5_dfs+floodfill] 简介 | 图像渲染 | 岛屿数量
目录 0.floodfill算法简介 1.图像渲染 题解 2.岛屿数量 题解 之前我们在 bfs 中有介绍过[Lc15_bfsfloodfill] 图像渲染 | 岛屿数量 | 岛屿的最大面积 | 被围绕的区域,现在我们来看看 dfs 又是如何解决的呢 0.floodfill算法简介 floodfill算法又叫洪水灌溉或者…...
AI-Sphere-Butler之如何使用腾讯云ASR语音识别服务
环境: AI-Sphere-Butler WSL2 英伟达4070ti 12G Win10 Ubuntu22.04 腾讯云ASR 问题描述: AI-Sphere-Butler之如何使用腾讯云ASR语音识别服务,本地硬件配置不高的情况,建议使用云服务商的ASR 解决方案: 1.登…...
Qwen最新多模态大模型:Qwen2.5-Omni介绍与快速入门
一、模型技术突破:重新定义多模态交互 近日,Qwen2.5-Omni正式发布了! 这是Qwen系列中全新的旗舰级端到端多模态大模型,专为全面的多模式感知设计,无缝处理包括文本、图像、音频和视频在内的各种输入,同时…...
【Golang】第十一弹------反射
🎁个人主页:星云爱编程 🔍所属专栏:【Go】 🎉欢迎大家点赞👍评论📝收藏⭐文章 长风破浪会有时,直挂云帆济沧海 目录 1.反射基本介绍 2.反射重要的函数和概念 3.反射应用场景 4.反…...
C#里使用libxl的对齐/边框/颜色
一份好的EXCEL文件,通道会有不同的颜色和边框来表示。 以便表示一些重要的信息,这样才能让人们一眼就看到需要关注的信息。 如下面所示: 要显示上面的内容,需要使用下面的例子: private void button12_Click(object sender, EventArgs e){var book = new ExcelBook();if…...
算法刷题记录——LeetCode篇(1.4) [第31~40题](持续更新)
更新时间:2025-03-29 算法题解目录汇总:算法刷题记录——题解目录汇总技术博客总目录:计算机技术系列博客——目录页 优先整理热门100及面试150,不定期持续更新,欢迎关注! 32. 最长有效括号 给你一个只包…...
软考中级-软件设计师信息安全模块考点解析
一、防火墙技术 内部网络是 安全的可信赖的外部网络是不安全的不可信赖的外部网络和内部网络之间有一个DMZ隔离区, 可以在DMZ隔离区中搭建服务:例如:WEB服务器 安全排序:内网>DMZ>外网 三个发展阶段: 包过滤防…...
【蓝桥杯】每日练习 Day 16,17
前言 接下来是这两天的题目(昨天主播打完模拟赛感觉身体被掏空所以没有写题目的总结),只有三道题。 一道并查集,一道单调栈和一道单调队列。 奶酪 分析 这是一道模板题(连通块),只讲思路。 …...
相机租赁网站基于Spring Boot SSM
目录 摘要 1. 项目背景与意义 2. 功能需求分析 3. 技术需求分析 3.1开发语言:Java13。 3.2其他技术: 4. 系统设计与实现 5. 市场分析 6. 创新点与优势 7. 预期成果与展望 摘要 随着摄影技术的普及和摄影爱好者数量的增加&#…...
树莓派超全系列文档--(14)无需交互使用raspi-config工具其一
无需交互使用raspi-config工具其一 无需交互的 raspi-configSystem optionsWireless LANAudioPasswordHostnameBoot/Auto loginNetwork at bootSplash screenPower LEDBrowser Display optionsUnderscanScreen blankingVNC resolutionComposite 文章来源: http://r…...
Linux驱动开发--IIC子系统
1.1 简介 I2C 是很常见的一种总线协议, I2C 是 NXP 公司设计的, I2C 使用两条线在主控制器和从机之间进行数据通信。一条是 SCL(串行时钟线),另外一条是 SDA(串行数据线),这两条数据线需要接上拉电阻,总线空闲的时候 …...
如何应对硬件测试覆盖率不足导致量产故障
硬件测试覆盖率不足导致的量产故障是硬件制造领域的一大痛点。要有效应对,必须从提高测试覆盖率、优化测试方案、引入风险管理机制三个方面入手。其中,优化测试方案尤为关键,应从产品设计阶段开始,通过精确的测试用例规划、详细的…...
