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.代码示例
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);
---示例 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;
--示例 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;