hive之LEAD 函数详解

1. 函数概述

LEAD 是 Hive 中的窗口函数,用于获取当前行之后指定偏移量处的行的值。常用于分析时间序列数据、计算相邻记录的差异或预测趋势。

2. 语法

复制代码
LEAD(column, offset, default) OVER (
    [PARTITION BY partition_column] 
    [ORDER BY order_column [ASC|DESC]]
)
  • column: 要获取后续值的列。

  • offset (可选): 向后查找的行数,默认为 1。

  • default (可选): 无后续行时的默认值,默认为 NULL。

  • PARTITION BY: 将数据划分为多个窗口(类似分组)。

  • ORDER BY: 定义窗口内的排序方式。

3.代码示例

sql 复制代码
CREATE TABLE sales_lead (
    sale_date STRING,
    salesperson STRING,
    amount INT
);

INSERT INTO sales_lead VALUES
('2023-01-01', 'Alice', 100),
('2023-01-02', 'Alice', 150),
('2023-01-03', 'Alice', 200),
('2023-01-01', 'Bob', 80),
('2023-01-02', 'Bob', 120);
sql 复制代码
---示例 1:获取下次销售额
SELECT 
    salesperson,
    sale_date,
    amount AS current_amount,
    LEAD(amount, 1, 0) OVER (
        PARTITION BY salesperson 
        ORDER BY sale_date
    ) AS next_amount
FROM sales_lead;
sql 复制代码
--示例 2:计算与下次销售的时间间隔
SELECT 
    salesperson,
    sale_date,
    LEAD(sale_date, 1) OVER (
        PARTITION BY salesperson 
        ORDER BY sale_date
    ) AS next_sale_date,
    DATEDIFF(
        LEAD(sale_date, 1) OVER (
            PARTITION BY salesperson 
            ORDER BY sale_date
        ), 
        sale_date
    ) AS days_diff
FROM sales_lead;
相关推荐
humbinal6 天前
同时支持 gui & cli 的 parquet 文件查看工具,高性能小清新!
hive·python·rust·spark·开源·github·parquet
吾AI科技8 天前
基于Tez引擎的 Hive SQL 性能优化
大数据·hive·性能优化·tez
abcy0712139 天前
hive 执行器原理
hive
香山上的麻雀100811 天前
Hive内部表(MANAGED_TABLE)的“批量删除分区”特性详解
数据仓库·hive·hadoop
jjjava2.013 天前
SpringMVC入门指南:从零掌握核心要点
数据仓库·hive·hadoop
AllData公司负责人15 天前
数据库同步平台|AIIData数据中台实现OceanBase、达梦数据库、OpenGauss、人大金仓、Hive、TDengine 一键接入Doris
大数据·数据库·hive·mysql·oceanbase·tdengine
AllData公司负责人15 天前
数据同步平台|AIIData数据中台实现MySQL、Hive、Kafka 一键接入Doris
大数据·数据库·hive·mysql·kafka·实时同步
李昊哲小课16 天前
Ubuntu26.04-Hadoop3.5.0搭建hive4.2.0
数据仓库·hive·数仓
AllData公司负责人17 天前
数据集成管理|AIIData数据中台实现MySQL、Hive、Oracle一键接入Doris
大数据·数据库·人工智能·hive·mysql·oracle·数据分析
泰克教育官方账号17 天前
泰涨知识 | Hive集群环境部署
数据仓库·hive·hadoop