hive 窗口函数--常用函数介绍
文章目录
- 一、窗口函数概念
- 二、语法及常用函数
- 2.1语法
- 2.2窗口函数的特征
- 2.3窗口函数的分类
- 2.3.1排序
- 2.3.2聚合
- 2.3.3分析
- 2.3.4窗口定义
一、窗口函数概念
窗口函数是一组特殊函数,通过扫描多个输入行来计算每个输出值,为每行数据生成一行结果,可以通过窗口函数来实现复杂的计算和聚合。窗口函数也称为OLAP(Online Analytical Processing)函数,是对一组值进行操作,不需要使用Group by子句对数据进行分组,还能在同一行返回原来行的列和使用聚合函数得到的聚合列。
二、语法及常用函数
2.1语法
Function (arg1,..., arg n) OVER ([PARTITION BY <...>] [ORDER BY <....>] [<window_clause>])
函数子句:指明具体操作,如sum 求和,first_value 取第一个值;
partition by子句:指明分区字段,如果没有,则将所有数据作为一个分区;
order by子句:指明了每个分区排序的字段和方式,也是可选的,没有就是按照表中的顺序;
窗口子句:指明相对当前记录的计算范围,可以向上(preceding),可以向下(following) 可以使 用between指明,上下边界的值,没有的话默认为当前分区
2.2窗口函数的特征
①聚合函数可以作为窗口函数使用
②具有计算和取值的功能
③不改变记录数
2.3窗口函数的分类
2.3.1排序
ROW_NUMBER()
对所有数值输出不同的序号,序号唯一连续
RANK()
对相同数值,输出相同的序号,下一个序号跳过(1,1,3)
DENSE_RANK()
对相同数值,输出相同的序号,下一个序号连续(1,1,2)
NLITE(n)
将有序的数据集合平均分配到n个桶中, 将桶号分配给每一行,根据桶号,选取前或后 n分之几的数据
PERCENT_RANK()
(目前排名- 1)/(总行数- 1),值相对于一组值的百分比排名
2.3.2聚合
标准聚合函数作为窗口函数配合order by使用,可以实现累积计算。注意只有计算类的窗口函数可以实现累积计算
COUNT() 计数,可以和DISTINCT一起用
SUM():求和 sum窗口函数配合order by,可以实现累计和
AVG():平均值 avg窗口函数配合order by 可以实现累计平均
MAX()/MIN(): 最大/小值 配合order by 可以实现累计最大值、最小值
从Hive 2.1.0开始在OVER子句中支持聚合函数
2.3.3分析
CUME_DIST
小于等于当前值的行数/分组内总行数
LEAD/LAG(col,n)
某一列进行往后/前第n行值(n可选,默认为1)
FIRST_VALUE
对该列到目前为止的首个值
LAST_VALUE
到目前行为止的最后一个值
2.3.4窗口定义
窗口定义由[<window_clause>]子句描述
用于进一步细分结果并应用分析函数
支持两类窗口定义
①行类型窗口
②范围类型窗口
RANK、NTILE、DENSE_RANK、CUME_DIST、PERCENT_RANK、LEAD、LAG和ROW_NUMBER函数不支持与窗口子句一起使用
2.3.4.1 行窗口:根据当前行之前或之后的行号确定的窗口
ROWS BETWEEN <start_expr> AND <end_expr>
<start_expr>可以为下列值
UNBOUNDED PRECEDING : 窗口起始位置(分组第一行)
CURRENT ROW:当前行
N PRECEDING/FOLLOWING:当前行之前/之后n行
<end_expr>可以为下列值
UNBOUNDED FOLLOWING : 窗口结束位置(分组最后一行)
CURRENT ROW:当前行
N PRECEDING/FOLLOWING:当前行之前/之后n行
2.3.4.2 范围窗口:取分组内的值在指定范围区间内的行
该范围值/区间必须是数字或日期类型
目前只支持一个ORDER BY列
RANGE BETWEEN 500 PRECEDING AND 1000 FOLLOWING
– 假设当前close值为3000,语句将包含分区内范围从值为2500到4000的行
hive 窗口函数--常用函数介绍相关推荐
- Hive学习之路(四):Hive内置函数介绍与实现WordCount
内容简介 一.Hive内置函数介绍 二.Hive常用内置函数介绍 1.数值计算函数 2.字符串操作函数 3.日期函数 4.聚合函数 5.表生成函数 三.使用Hive函数完成WordCount 1.创建 ...
- TF:tensorflow框架中常用函数介绍—tf.Variable()和tf.get_variable()用法及其区别
TF:tensorflow框架中常用函数介绍-tf.Variable()和tf.get_variable()用法及其区别 目录 tensorflow框架 tensorflow.Variable()函数 ...
- php spl函数,PHP SPL标准库中的常用函数介绍
这篇文章主要介绍了PHP SPL标准库中的常用函数介绍,本文着重讲解了spl_autoload_extensions().spl_autoload_register().spl_autoload()三 ...
- R语言使用psych包进行主成分分析PCA和探索性因子分析EFA的常用函数介绍:principal、fa、fa.parallel、factor.plot、fa.diagram、scree
R语言使用psych包进行主成分分析PCA和探索性因子分析EFA的常用函数介绍:principal.fa.fa.parallel.factor.plot.fa.diagram.scree 目录
- oracle常用函数number,Oracle 常用函数介绍
Oracle常用函数介绍,包括日期函数.类型转换函数 常用日期函数 1.add_months()函数可以得到指定日期之前或之后n个月的日期 date_value:=add_months(date_va ...
- Pandas入门之常用函数介绍
一.Pandas简介 pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的. Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具. pan ...
- (转)postgis常用函数介绍(一)
http://blog.csdn.net/gisshixisheng/article/details/47701237 概述: 在进行地理信息系统开发的过程中,常用的空间数据库有esri的sde,po ...
- mysql ceil,MySQL常用函数介绍
前言: MySQL数据库中提供了很丰富的函数,比如我们常用的聚合函数,日期及字符串处理函数等.SELECT语句及其条件表达式都可以使用这些函数,函数可以帮助用户更加方便的处理表中的数据,使MySQL数 ...
- 在大数据世界里打小怪之Hive的常用函数
Hive的数学函数包含两种,一种是内嵌函数,一种是由java定义的自定义函数. 对于不懂Java的数据分析师,掌握Hive的内嵌函数就显得尤为重要啦~ Hive内嵌函数都有哪些? 内嵌函数包括内置函数 ...
最新文章
- V-rep对UR3机械臂仿真路径规划
- Python学习笔记:类
- 【数据结构】线性表的顺序存储结构(c语言实现)
- HDFS应用场景、部署、原理与基本架构
- 子弹创建及发射 Learn Unreal Engine (with C++)
- 指针右左法则----复杂指针解析
- Go Concurrency Patterns: Context
- SimpleDet: 一套简单通用的目标检测与物体识别框架
- MySQL关联查询时,我们为什么建议小表驱动大表?
- 传智播客扫地僧C/C++学习 数据类型的本质
- 疯狂Python练习题
- 【代码块】Android代码执行ADB指令
- matlab做瑞利信道仿真,瑞利信道仿真 matlab - 范文中心
- Ionicons - Ionic 出品的免费开源、高性能图标库,适用于 web / APP / 桌面应用
- nb-iot和4G各有什么优势
- SpringBoot整合Validation进行参数校验
- 水溶性CdTe/CdSe/ZnS量子点荧光波长620nm-820nm
- 《微信公众平台应用开发实战(第2版)》一1.1 微信公众账号的注册
- 你所厌恶的正是别人渴望的
- 朴素贝叶斯分类器及西瓜判定实例