Hive窗口函数整理

Hive 中的窗口函数允许你在结果集的一个特定"窗口"内对行进行计算。这些窗口可以是物理的(基于行在数据中的实际位置)或逻辑的(基于行的一些排序标准)。窗口函数在处理排名、计算累计和或计算移动平均值等问题时特别有用。

以下是一些 Hive 中的常见窗口函数:

  1. ROW_NUMBER()

    • 为窗口中的每一行分配一个唯一的整数编号。
    • 示例:ROW_NUMBER() OVER (ORDER BY column_name)
  2. RANK()

    • 为窗口中的每一行分配一个唯一的排名,对于并列的值会有相同的排名,并且会留下一些排名的间隙。
    • 示例:RANK() OVER (ORDER BY column_name)
  3. DENSE_RANK()

    • 与 RANK() 类似,但不会留下排名间隙。
    • 示例:DENSE_RANK() OVER (ORDER BY column_name)
  4. NTILE(n)

    • 将窗口中的行分成指定数量的近似相等的组,并为每一行返回其组号。
    • 示例:NTILE(4) OVER (ORDER BY column_name)
  5. LAG(column, n, default)

    • 返回当前行之前的第 n 行的指定列的值。如果不存在这样的行,则返回默认值。
    • 示例:LAG(column_name, 1, 0) OVER (ORDER BY another_column)
  6. LEAD(column, n, default)

    • 返回当前行之后的第 n 行的指定列的值。如果不存在这样的行,则返回默认值。
    • 示例:LEAD(column_name, 1, 0) OVER (ORDER BY another_column)
  7. FIRST_VALUE(column)

    • 返回窗口中的第一行的指定列的值。
    • 示例:FIRST_VALUE(column_name) OVER (ORDER BY another_column)
  8. LAST_VALUE(column)

    • 返回窗口中的最后一行的指定列的值。
    • 示例:LAST_VALUE(column_name) OVER (ORDER BY another_column ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING)

注意:在使用 LAST_VALUE() 时,通常需要指定窗口范围,因为默认窗口可能不会包括所有行。

  1. SUM(), AVG(), MIN(), MAX()

    • 这些聚合函数也可以与窗口一起使用,以在窗口上执行计算,而不是在整个结果集上执行。
    • 示例:SUM(column_name) OVER (ORDER BY another_column ROWS BETWEEN 1 PRECEDING AND CURRENT ROW)

这只是 Hive 中窗口函数的一个简短列表。当与其他 SQL 功能(如分区、排序和子查询)结合使用时,窗口函数可以非常强大。

相关推荐
秦拿希5 小时前
【paimon-trino】trino整合paimon元数据访问s3
大数据·trino·paimon
kuankeTech6 小时前
解决内外贸双轨制难题,外贸ERP智能引擎同步管理国内外合规与标准
大数据·人工智能·数据可视化·软件开发·erp
q_35488851537 小时前
AI大模型:python新能源汽车推荐系统 协同过滤推荐算法 Echarts可视化 Django框架 大数据毕业设计(源码+文档)✅
大数据·人工智能·python·机器学习·信息可视化·汽车·推荐算法
一只专注api接口开发的技术猿12 小时前
微服务架构下集成淘宝商品 API 的实践与思考
java·大数据·开发语言·数据库·微服务·架构
AC赳赳老秦12 小时前
Dify工作流+DeepSeek:运维自动化闭环(数据采集→报告生成)
android·大数据·运维·数据库·人工智能·golang·deepseek
明洞日记12 小时前
【软考每日一练009】计算机系统性能评价:基准程序分类与 TPC 实战案例详解
大数据·数据库
李慕婉学姐12 小时前
【开题答辩过程】以《基于Spring Boot和大数据的医院挂号系统的设计与实现》为例,不知道这个选题怎么做的,不知道这个选题怎么开题答辩的可以进来看看
大数据·spring boot·后端
汽车仪器仪表相关领域12 小时前
全程高温伴热,NOx瞬态精准捕捉:MEXA-1170HCLD加热型NOx测定装置项目实战全解
大数据·服务器·网络·人工智能·功能测试·单元测试·可用性测试
橙露12 小时前
嵌入式实时操作系统 FreeRTOS:任务调度与信号量的核心应用
java·大数据·服务器