hive lag() 和lead()函数

LAGLEAD函数简介

Hive 中的 LAGLEAD 函数时,通常用于在结果集中获取同一列在前一行(LAG)或后一行(LEAD)的值。这在分析时间序列数据、计算变化率或查找趋势时非常有用。以下是这两个函数的用法示例:

1. LAG 函数:
LAG 函数用于获取前一行的值。它的基本语法是:

LAG(column_expression, offset, default_value) 
OVER (PARTITION BY partition_expression 
ORDER BY sort_expression)
  • column_expression:要获取前一行值的列或表达式。
  • offset:要回溯的行数。例如,使用 LAG(column, 1) 获取前一行的值,LAG(column, 2) 获取前两行的值,依此类推。
  • default_value:可选参数,用于指定在没有前一行时的默认值。
  • PARTITION BY:可选子句,用于指定分区列,以在不同分区内分别计算。
  • ORDER BY:用于指定排序的列,以确定 “前一行” 是相对于哪些行的。

2. LEAD 函数:
LEAD 函数用于获取后一行的值。它的基本语法是:

LEAD(column_expression, offset, default_value) OVER (PARTITION BY partition_expression ORDER BY sort_expression)

LAG 函数相似,只是它返回后一行的值

示例

假设我们有以下名为 “daily_stock_prices” 的表,包含每日股票价格的数据:date, ticker, price。我们想要为每只股票计算前一天和后一天的股票价格。
“daily_stock_prices” 表的样例数据:

datetickerprice
2023-08-01AAPL150.5
2023-08-02AAPL152.3
2023-08-03AAPL149.8
2023-08-01GOOG2800.0
2023-08-02GOOG2750.5
2023-08-03GOOG2785.2

使用 “hive lag” 函数来计算前一天的股票价格:

SELECT 
  date,
  ticker,
  price,
  LAG(price, 1) OVER (PARTITION BY ticker ORDER BY date) AS prev_day_price
FROM daily_stock_prices;

查询结果如下:

datetickerpriceprev_day_price
2023-08-01AAPL150.5NULL
2023-08-02AAPL152.3150.5
2023-08-03AAPL149.8152.3
2023-08-01GOOG2800.0NULL
2023-08-02GOOG2750.52800.0
2023-08-03GOOG2785.22750.5
使用 “hive lead” 函数计算后一天的股票价格,
SELECT 
  date,
  ticker,
  price,
  LEAD(price, 1) OVER (PARTITION BY ticker ORDER BY date) AS next_day_price
FROM daily_stock_prices;

查询结果如下:

datetickerpricenext_day_price
2023-08-01AAPL150.5152.3
2023-08-02AAPL152.3149.8
2023-08-03AAPL149.8NULL
2023-08-01GOOG2800.02750.5
2023-08-02GOOG2750.52785.2
2023-08-03GOOG2785.2NULL
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值