Hive 窗口分析函数
Posted arachis
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hive 窗口分析函数相关的知识,希望对你有一定的参考价值。
1.窗口函数
1.LAG(col,n,DEFAULT) 用于统计窗口内往上第n行值
第一个参数为列名,第二个参数为往上第n行(可选,默认为1),第三个参数为默认值(当往上第n行为NULL时候,取默认值,如不指定,则为NULL)
2.LEAD(col,n,DEFAULT) 用于统计窗口内往下第n行值
第一个参数为列名,第二个参数为往下第n行(可选,默认为1),第三个参数为默认值(当往下第n行为NULL时候,取默认值,如不指定,则为NULL)
3.FIRST_VALUE(col,false) 用于统计窗口内截止到当前行,第一个出现的值
第一个参数为列名,第二个参数是否跳过null值(可选,默认为false)
4.LAST_VALUE(col,false) 用于统计窗口内截止到当前行,最后一个出现的值
第一个参数为列名,第二个参数是否跳过null值(可选,默认为false)
5.over子句中的partition by和order by
over(partition by col1[,col2...] )
over(order by by col1[,col2...] )
over(partition by col1[,col2...] order by by col1[,col2...] )
6.over子句中的window子句(clause)
OVER with a window specification. Windows can be defined separately in a WINDOW clause. Window specifications support the following formats:
(ROWS | RANGE) BETWEEN ... PRECEDING AND ... FOLLOWING (ROWS | RANGE) BETWEEN ... PRECEDING AND ... PRECEDING
(ROWS | RANGE) BETWEEN ... FOLLOWING AND ... FOLLOWING
When ORDER BY is specified with missing WINDOW clause, the WINDOW specification defaults to RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW.
When both ORDER BY and WINDOW clauses are missing, the WINDOW specification defaults to ROW BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING.
range是逻辑窗口,是指定当前行对应值的范围取值
rows是物理窗口,即根据order by 子句排序后,取的前N行及后N行的数据计算(与当前行的值无关,只与排序后的行号相关)
(UNBOUNDED | [num]) PRECEDING:从分区第一行头开始,则为 unbounded。 N为:相对当前行向前的偏移量
(UNBOUNDED | [num]) FOLLOWING:到该分区结束,则为 unbounded。N为:相对当前行向后的偏移量
CURRENT ROW:当前行,偏移量为0
2.分析函数
1.标准聚合函数
- COUNT
- SUM
- MIN
- MAX
- AVG
2.RANK
排名不连续
3.DENSE_RANK
排名连续,但是有重复,保证同一个值对应同一个排名。
4.ROW_NUMBER
排名连续,无重复,不保证同一个值对应同一个排名。
5.CUME_DIST(累积分布)
小于等于当前值的行数 与 分组内总行数的占比
6.PERCENT_RANK
排名百分比,RANK-1/总行数-1
7.NTILE
离散化分区
函数 | 特点 | 数据 | 结果(升序,桶数=2) |
---|---|---|---|
RANK |
排名不连续 | 2,2,5 | 1,1,3 |
DENSE_RANK |
排名连续,但是有重复 | 2,2,5 | 1,1,2 |
ROW_NUMBER |
排名连续,无重复 |
2,2,5 | 1,2,3 |
CUME_DIST |
占比连续,无重复;小于等于当前值的行数 与 分组内总行数的占比 | 2,2,5 | 0.33,0.66,1.0 |
PERCENT_RANK |
百分比有重复,RANK-1/总行数-1 | 2,2,5 | .0,.0,1.0 |
NTILE(n) |
等量(频)离散化,n是分桶数 | 2,2,2,3 | 1,1,2,2 |
3.应用场景
累积,均值(归一化),分组取topk,累和占比,离散化
以上是关于Hive 窗口分析函数的主要内容,如果未能解决你的问题,请参考以下文章