介绍
Hive的分析函数又叫窗口函数, 在oracle中就有这样的分析函数,主要用来做数据统计分析的。
Lag和Lead分析函数可以在同一次查询中取出同一字段的前N行的数据【LAG】和后N行的数据【LEAD】作为独立的列。
LAG
LAG(col,n,DEFAULT) 用于统计窗口内往上第n行值
参数1为列名,参数2为往上第n行(可选,默认为1),参数3为默认值(当往上第n行为NULL时候,取默认值,如不指定,则为NULL)。
LEAD
LEAD(col,n,DEFAULT) 用于统计窗口内往下第n行值
参数1为列名,参数2为往下第n行(可选,默认为1),参数3为默认值(当往下第n行为NULL时候,取默认值,如不指定,则为NULL)。
用法
select *,lag(field_name, 1, 'none')over()as lag_col from tabl;
- 其中over()里可以加入gorup by 和order by来进一步对数据进行处理。
-
lag也可以换成lead,刚好取值效果刚好相反。