HIVE窗口函数

重点介绍窗口函数的语法定义,函数应用范围,案例结合。下面内容是根据网上资料整理而成,均带有链接

窗口函数的应用场景http://yugouai.iteye.com/blog/1908121

LEAD

  • 语法定义

LEAD(col,n,DEFAULT) 用于统计窗口内往下第n行值, 参数1为列名,参数2为往下第n行(可选,默认为1),参数3为默认值(当往下第n行为NULL时候,取默认值,如不指定,则为NULL)

  • 应用场景

统计用户停留时间,用户停留在网页的总时间,某网页的总停留时间

  • 案例学习

https://blog.csdn.net/kent7306/article/details/50441967

LAG

  • 语法定义

LAG(col,n,DEFAULT) 用于统计窗口内往上第n行值 参数1为列名,参数2为往上第n行(可选,默认为1),参数3为默认值(当往上第n行为NULL时候,取默认值,如不指定,则为NULL)

  • 应用场景

与lead类似

  • 案例学习

https://blog.csdn.net/sunnyyoona/article/details/56484919

FIRST_VALUE、LAST_VALUE()

  • 语法定义
  • 应用场景
  • 案例学习

https://blog.csdn.net/evilcry2012/article/details/52788961 http://blog.itpub.net/28929558/viewspace-1181376/ https://blog.csdn.net/sunnyyoona/article/details/56484919 https://www.cnblogs.com/qingyunzong/p/8798606.html#_label1

OVER 类型的

常见的有

  • COUNT
  • SUM
  • MIN
  • MAX
  • AVG

用法

SUM(字段) over (partition by 字段 a order by 计算项 b desc ) rank
  • 应用场景 求聚合的值
  • 案例学习

http://yugouai.iteye.com/blog/1908121 计算已从平均的案例 https://clarity-us.com/quick-tip-calculrages-using-hive/

分析函数

包括

  • RANK
  • ROW_NUMBER
  • DENSE_RANK
  • CUME_DIST
  • PERCENT_RANK
  • NTILE 用于将分组数据按照顺序切分成n片,返回当前切片值

注意

DISTINCT支持SUM, COUNT和AVG等聚合函数,以及在每个分区内不同值上的聚合。当前实现具有以下限制:由于性能原因,在分区子句中不能支持ORDER BY或窗口规范。 支持的语法如下:

COUNT(DISTINCT a) OVER (PARTITION BY c)

Hive 2.1.0 及更高版本支持聚合函数在OVER字句中使用 添加了对引用OVER子句中的聚合函数的支持。 例如,目前我们可以使用OVER子句中的SUM聚合函数,如下所示:

SELECT rank() OVER (ORDER BY sum(b))
FROM T
GROUP BY a;

详细的中文介绍http://saboloh.com/2016/11/09/hive-languagemanual-windowingandanalytics/

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券