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)
注:实践中多个字段最终取值可以应用到LAST_VALUE,例如
SELECT vid
,LAST_VALUE(a,true) OVER(partition by vid order by `time` ) a
,LAST_VALUE(b,true) OVER(partition by vid order by `time` ) b
,LAST_VALUE(c,true) OVER(partition by vid order by `time` ) c
,LAST_VALUE(d,true) OVER(partition by vid order by `time` ) d
...
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,累和占比,离散化
4.附录
https://cwiki.apache.org/confluence/display/Hive/LanguageManual+WindowingAndAnalytics
Hive 窗口分析函数的更多相关文章
- Hive—简单窗口分析函数
hive 窗口分析函数 : jdbc:hive2:> select * from t_access; +----------------+---------------------------- ...
- [Hive_10] Hive 的分析函数
0. 说明 Hive 的分析函数 窗口函数 | 排名函数 | 最大值 | 分层次 | lead && lag 统计活跃用户 | cume_dist 1. 窗口函数(开窗函数) ove ...
- hive窗口函数/分析函数详细剖析
hive窗口函数/分析函数 在sql中有一类函数叫做聚合函数,例如sum().avg().max()等等,这类函数可以将多行数据按照规则聚集为一行,一般来讲聚集后的行数是要少于聚集前的行数的.但是有时 ...
- hive row_number等窗口分析函数
一.排序&去重分析 row_number() over(partititon by col1 order by col2) as rn 结果:1,2,3,4 rank() over(parti ...
- hive中窗口分析函数
分组统计 1. groups sets(field1,field2,field3, (field1,field2)) 样例如下: select dt,tenantCode,nvl(platform,' ...
- hive中分析函数window子句
hive中有些分析函数功能确实很强大,在和sum,max等聚合函数结合起来能实现不少功能. 直接上代码演示吧 原始数据 channel1 2016-11-10 1 channel1 2016-11-1 ...
- Hive之分析函数
目录 一.sum() over(partition by) 二.avg().min().max() over(partition) 三.row_number() over(partition by) ...
- Hive的分析函数的使用
原文: https://www.toutiao.com/i6769120000578945544/?group_id=6769120000578945544 我们先准备数据库.表和数据 开窗分析函数相 ...
- Hive Ntile分析函数学习
NTILE(n) 用于将分组数据按照顺序切分成n片,返回当前记录所在的切片值 NTILE不支持ROWS BETWEEN,比如 NTILE(2) OVER(PARTITION BY cookieid O ...
随机推荐
- [ERROR]:INST-07008: Oracle 主目录(O) 位置的验证失败。用户没有创建主目录/实例位置的权限
安装weblogic12.1.3.0时,输入的安装命令是: 老是报这个错误. 百度半天好像没人报过这错……看来只有我这么粗心了…… 后来发现wls.rsp里面的Oracle_HOME指向目录错误,修改 ...
- Excel导出功能超时解决方案 -- 异步处理
背景 有运营同学反馈,最近导出excel会出现超时的情况,初步判断是数据增长太快,数据量太大,请求时间超过了设置的超时时间 尝试 有考虑直接更改该请求的超时时长,可是治标不治本 网上搜索发现,有很多人 ...
- Pascal到c++,求大佬翻译!
请大佬翻译完毕后私信我谢谢! var a,b,c,d,f:array[1..1000]of longint; i,j,k,n,m,o:longint; procedure zx(p,q:longint ...
- 安卓开发之详解getChildFragmentManager和getsupportFragmentManager和getFragmentManager详解
安卓开发之详解getChildFragmentManager和getsupportFragmentManager和getFragmentManager详解 getFragmentManager()所得 ...
- 回顾二分与bfs(或者说是递推)和简单模拟
今天,阳光正好,适合敲代码,诸事皆宜. 先来两道简单的模拟题. 第一道 机器翻译 输出为5. 代码思路:很明显需要用到队列来存单词,在建立一个bool数组来存储队列中有没有这个单词,需不需要向外界查询 ...
- bat命令闪退问题
今天执行一个bat命令,然而会出现问题:双击执行bat命令时,命令提示符界面会闪退. 然而该bat命令在他人电脑上可正常执行,而我会遇到这种问题. 以下是我尝试的方法: 首先尝试编辑bat命令,在ba ...
- 【MySQL】(一)MySQL 体系结构和存储引擎
1.1.定义数据库和实例 数据库:物理操作系统文件或其他形式文件类型的集合.在MySQL数据库中,数据库文件可以是frm.MYD.MYI.ibd结尾的文件. 实例:MySQL数据库由后台线程以及一个共 ...
- MetInfo5.3管理员密码重置漏洞
点击忘记密码 下一步 输入已知用户名或者邮箱点击下一步用Burp拦截 右键发送到Repeater 在第一行php后面拼接?met_host虚拟机kali的ip地址:端口号拼接完成后 用虚拟机监听拼接的 ...
- sqlmap续
sqlmap续 注入语句(知道绝对路径时候可用) http://192.168.99.171/test2/sqli/example10.php?catid=3’union select 1,’< ...
- WAMP运行原理
Apache运行原理 Apache的诸多功能都是通过模块进行加载的,自己本身并不具备那么多功能. php文件动态网页请求原理 请求步骤: 1. 用户在浏览器中输入需要访问的网站的域名以及具体要请求的网 ...