Hive窗口函数
Posted leodaxin
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hive窗口函数相关的知识,希望对你有一定的参考价值。
参考地址:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+WindowingAndAnalytics
环境准备:
CREATE TABLE `wtab`( `a` int, `b` int, `c` int);
数据:
1、LEAD函数
LEAD (scalar_expression [,offset] [,default]) OVER ([query_partition_clause] order_by_clause); The LEAD function is used to return data from the next row.
lead函数主要是返回窗口中列名为:scalar_expression偏移为offset的值,如果不存在则返回NULL,窗口使用over划分,具体划分参考示例:
SELECT a, LEAD(a,1,9999) OVER (PARTITION BY b ORDER BY C) from wtab;
PARTITION BY 表示根据字段b划分窗口,就是b值相同的划分到一个窗口,ORDER BY 表示窗口内部按照字段C进行排序。此条查询结果为:
以b=1为例讲解,b相同的都在一个窗口按照c排序之后结果为:
这个就是b=1的窗口,a=1下面offset=1的数据为11,所以查询结果为:1 11 ;其他同理。
2、LAG函数
LAG (scalar_expression [,offset] [,default]) OVER ([query_partition_clause] order_by_clause); The LAG function is used to access data from a previous row.
lag函数与lead函数相反,是向上offset取row,如果row不存在则返回默认值。示例:
SELECT a, LAG(a, 2, 66666) OVER (PARTITION BY b ORDER BY C) from wtab;
根据字段b划分窗口之后向上offset=2取row,没有的话返回6666
以上是关于Hive窗口函数的主要内容,如果未能解决你的问题,请参考以下文章