0


hive lag() 和lead()函数

LAG

LEAD

函数简介

Hive 中的

LAG

LEAD

函数时,通常用于在结果集中获取同一列在前一行(

LAG

)或后一行(

LEAD

)的值。这在分析时间序列数据、计算变化率或查找趋势时非常有用。以下是这两个函数的用法示例:

1. LAG 函数:

LAG

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

LAG(column_expression,offset, default_value)OVER(PARTITIONBY partition_expression 
ORDERBY 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(PARTITIONBY partition_expression ORDERBY sort_expression)

LAG

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

示例

假设我们有以下名为 “daily_stock_prices” 的表,包含每日股票价格的数据:

date

,

ticker

,

price

。我们想要为每只股票计算前一天和后一天的股票价格。
“daily_stock_prices” 表的样例数据:
datetickerprice2023-08-01AAPL150.52023-08-02AAPL152.32023-08-03AAPL149.82023-08-01GOOG2800.02023-08-02GOOG2750.52023-08-03GOOG2785.2
使用 “hive lag” 函数来计算前一天的股票价格:

SELECTdate,
  ticker,
  price,
  LAG(price,1)OVER(PARTITIONBY ticker ORDERBYdate)AS prev_day_price
FROM daily_stock_prices;

查询结果如下:
datetickerpriceprev_day_price2023-08-01AAPL150.5NULL2023-08-02AAPL152.3150.52023-08-03AAPL149.8152.32023-08-01GOOG2800.0NULL2023-08-02GOOG2750.52800.02023-08-03GOOG2785.22750.5使用 “hive lead” 函数计算后一天的股票价格,

SELECTdate,
  ticker,
  price,
  LEAD(price,1)OVER(PARTITIONBY ticker ORDERBYdate)AS next_day_price
FROM daily_stock_prices;

查询结果如下:
datetickerpricenext_day_price2023-08-01AAPL150.5152.32023-08-02AAPL152.3149.82023-08-03AAPL149.8NULL2023-08-01GOOG2800.02750.52023-08-02GOOG2750.52785.22023-08-03GOOG2785.2NULL

标签: hive 大数据 sql

本文转载自: https://blog.csdn.net/KEVIN_WANG333/article/details/132362551
版权归原作者 KEVIN_WANG333 所有, 如有侵权,请联系我们删除。

“hive lag() 和lead()函数”的评论:

还没有评论