hive窗口函数使用详解
ntile
- 用于将分组数据按照顺序切分成n片,返回当前记录所在的切片值。
- 经常用来取前30% 带有百分之多少比例的记录什么的
注意:
NTILE不支持ROWS BETWEEN,比如 NTILE(2) OVER(PARTITION BY id ORDER BY mod_date ROWS BETWEEN 3 PRECEDING AND CURRENT ROW)
实例:
select *,ntile(3) over(partition by id order by mod_date) from t0411;
collect_set
求多行的集合
实例:
select id, mod_date,src,cur,row_number() over(partition by id order by mod_date asc) as num,--使集合有序collect_set(src) over(partition by id order by mod_date asc ) as srcs1,collect_set(cur) over(partition by id ) as srcs2
from db01.t0411
rows
rows函数:
current row:当前行
n PRECEDING:往前n行
n FOLLOWING:往后n行
UNBOUNDED:起点
UNBOUNDED PRECEDING:从前面起点
UNBOUNDED FOLLOWING:到后面终点
LAG(col,n):往前的第n行
LEAD(col,n):往后的第n行
实例1:
-- 计算每个id从开始到当前时间的总的修改次数
-- 参数讲解
-- partition by id:按照id分组
-- order by mod_date:按照日期进行排序
-- UNBOUNDED PRECEDING:从起点开始
-- CURRENT ROW:到当前行
select *,count(id) over(partition by id order by mod_date rows between UNBOUNDED PRECEDING and CURRENT ROW)
from t0411;
实例2:
与collet_set实例效果一样,但更简洁
-- 计算每个id从开始到终点的集合
-- 参数讲解
-- partition by id:按照id分组
-- order by mod_date:按照日期进行排序
-- UNBOUNDED PRECEDING:从起点开始
-- UNBOUNDED FOLLOWING:到终点
select *,collect_set(src) over(partition by id order by mod_date asc rows between UNBOUNDED PRECEDING and CURRENT ROW),collect_set(src) over(partition by id order by mod_date asc rows between UNBOUNDED PRECEDING and UNBOUNDED FOLLOWING)
from t0411;
实例2:
-- 计算相邻三行的值(第一行计算当前行 + 后一行; 最后一行计算当前行 + 前一行)
-- 参数讲解
-- order by mod_date:按照日期进行排序
-- 1 preceding:当前行的前1行
-- 1 following:当前行的后一行
select *,count(id) over(order by mod_date rows between 1 preceding and 1 following)
from t0411;
实例3:
-- 查询顾客修改时间,以及下次修改时间(电商网站常用于求页面跳转的前后时间)
-- 参数详解:
-- partition by name:按照姓名分组
-- order by mod_date:按照时间排序
-- lag(mod_date,1):返回当前mod_date行的前一行
-- lead(mod_date,1):返回当前mod_date行的后一行
select *,lag(mod_date,1) over(partition by id order by mod_date) ,lead(mod_date,1) over(partition by id order by mod_date)
from t0411;
测试数据见另一篇博客
hive窗口函数使用详解相关推荐
- Hadoop核心架构HDFS+MapReduce+Hbase+Hive内部机理详解
编者按:HDFS和MapReduce是Hadoop的两大核心,除此之外Hbase.Hive这两个核心工具也随着Hadoop发展变得越来越重要.本文作者张震的博文<Thinking in BigD ...
- hive linux进程数,控制Hive MAP个数详解
控制Hive MAP个数详解 Hive的MAP数或者说MAPREDUCE的MAP数是由谁来决定的呢?inputsplit size,那么对于每一个inputsplit size是如何计算出来的,这是做 ...
- Thinking in BigData(八)大数据Hadoop核心架构HDFS+MapReduce+Hbase+Hive内部机理详解
纯干货:Hadoop核心架构HDFS+MapReduce+Hbase+Hive内部机理详解. 通过这一阶段的调研总结,从内部机理的角度详细分析,HDFS.MapReduce.Hbase.H ...
- 图解大数据 | 海量数据库查询-Hive与HBase详解
Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/cou ...
- [Hive] - Hive参数含义详解
hive中参数分为三类,第一种system环境变量信息,是系统环境变量信息:第二种是env环境变量信息,是当前用户环境变量信息:第三种是hive参数变量信息,是由hive-site.xml文件定义的以 ...
- hive 数据存储格式详解
Hive的三种文件格式:TEXTFILE.SEQUENCEFILE.RCFILE中,TEXTFILE和SEQUENCEFILE的存储格式都是基于行存储的,RCFILE是基于行列混合的思想,先按行把数据 ...
- Hadoop Hive sql语法详解
Hive 是基于Hadoop 构建的一套数据仓库分析系统,它提供了丰富的SQL查询方式来分析存储在Hadoop 分布式文件系统中的数据,可以将结构 化的数据文件映射为一张数据库表,并提供完整的SQL查 ...
- Hive集成HBase详解
摘要 Hive提供了与HBase的集成,使得能够在HBase表上使用HQL语句进行查询 插入操作以及进行Join和Union等复杂查询 应用场景 1. 将ETL操作的数据存入HBase 2. HBas ...
- Hive JOIN使用详解
Hive是基于Hadoop平台的,它提供了类似SQL一样的查询语言HQL.有了Hive,如果使用过SQL语言,并且不理解Hadoop MapReduce运行原理,也就无法通过编程来实现MR,但是你仍然 ...
- hive之分区表详解
一 新建分区表 语法: PARTITIONEDBY (col type,col type......) 示例: CREATETABLE order ( oid STRING, otime STRING ...
最新文章
- Fragment为什么须要无参构造方法
- LeetCode Sort Characters By Frequency
- 一次群晖中勒索病毒后的应急响应
- 学习Struts--Chap02:Struts2框架各个功能模块和程序执行流程的介绍
- App 即时通讯 SDK
- VR全景看年评!PConline年度评测盛典等你来体验
- lua——赢三张牌型处理相关算法(下)——牌型比较
- gradle拷贝静态资源文件_Gradle复制文件/目录方法
- python题目训练(随时更新)
- java带jar包运行_java带jar包的命令行运行
- 消防信号总线原理_消防二总线的构成以及工作原理?
- 微信小程序分享小程序码的生成(带参数)以及参数的获取
- 【保姆级入门系列】阿ken教你学 Python(五) ——函数
- 教师资格证上传照片时显示“内部服务器错误”解决方法(亲测有效)
- Jframe任务栏图标隐藏
- Unity+NGUI性能优化方法总结
- python+selenium设置chrome代理的方式
- 火影段位赛服务器响应超时,火影手游,谜一样的跨服积分赛已上线,奖励不到位惹人嫌弃...
- inc si指令的作用_8086指令
- [kpw] USBNetwork + WinSCP + PublicKey + PrivateKey