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,累和占比,离散化

原文地址:https://www.cnblogs.com/arachis/p/Hive_Window_Analysis.html

时间: 2024-10-20 03:40:10

Hive 窗口分析函数的相关文章

我为什么学习hive窗口分析函数

1. 窗口函数 LEAD(column_name, n, default_value),用于统计窗口内往下第n行的值, LAG(column_name, n, default_value),用于统计窗口内往上第n行的值. FIRST_VALUE(column_name),分组窗口排序后,截止到当前行的第一个值: LAST_VALUE(column_name),分组窗口排序后,截止当前航的最后一个值: 2. OVER语句 SUM/COUNT/MIN/MAX/AVG(column_name) OVE

hive row_number等窗口分析函数

一.排序&去重分析 row_number() over(partititon by col1 order by col2) as rn 结果:1,2,3,4 rank() over(partititon by col1 order by col2) as rk 结果:1,2,2,4,5 dense_rank() over(partititon by col1 order by col2) as ds_rk 结果:1,2,2,3,4 select order_id, departure_date,

窗口/分析函数

业务场景: 某个上次购买距现在的时间?? 每次购买时间间隔? 周环比如何计算? 怎样得到各区域销售排名前N名商品列表? 怎样得到各商品销售占品类总销售百分比? 如何计算个商品累计销售占比? 如何把销售分成N等份 大于等于当前订单金额的订单比例有多少? 每个会员某段时间内最大,最小的订单金额? 原文地址:https://www.cnblogs.com/liuyuanq/p/11277941.html

最新大数据24期 共十天高清视频教程 附课件源码

课程目录: 大数据24期-01-JavaSE基础-15天 第一天: 01.什么是计算机软件02.什么数据软件开发--利用编程语言来写剧本03.什么是jdk--怎么安装jdk03.什么是jdk--怎么安装jdk04.安装启动eclipse04.安装启动eclipse05.配置eclipse的字体和布局06.新建一个java的类的步骤07.第一个java编程作品--HelloWorld08.java中的变量定义和变量赋值语法09.第一个java程序中的知识点梳理--终端输入--终端输出10.第二个j

使用hive查询把访问网络流量会话化

<Hive编程指南>最后一章的Outbrain案例中,有一个把访问网络流量会话化的简单实现,但按照它的查询出来的结果是错的,于是自己重写了一个. 一.问题提出(摘自书中原文) 为了分析网络流量,我们常常希望能够基于各种各样的标准来测量热度.一种方法就是将用户行为分解到会话中,一次会话代表单一的一次"使用"所包含的一系列操作.一个用户在一天内或者一个月中的某几天可以多次访问某个网站,但每一次访问肯定是不一样的. 那么,什么是一个会话呢?一种定义是指相隔不超过30分钟的一连串的

hive -e 时转义需要再加一个\

hive窗口中使用转义字符: select split(concat_ws('|','123','456','789'),'\\|')from dual; 参考 http://jingyan.baidu.com/article/870c6fc32cf38eb03ee4be61.html 这种写法在hive -e 中执行时,需要改成: select split(concat_ws('|','123','456','789'),'\\\|')from dual;

Hive框架基础(二)

* Hive框架基础(二) 我们继续讨论hive框架 * Hive的外部表与内部表 内部表:hive默认创建的是内部表 例如: create table table001 (name string , age string) location '/input/table_data'; 此时:会在HDFS上新建一个table001表的数据存放地 接着执行: load data inpath'/input/data 'into table table001;(注意,load关键字后没有跟local关

Hive的基本操作详解

一 Hive数据类型 1.1 基本数据类型 Hive数据类型 Java数据类型 长度 例子 TINYINT byte 1byte有符号整数 20 SMALINT short 2byte有符号整数 20 INT int 4byte有符号整数 20 BIGINT long 8byte有符号整数 20 BOOLEAN boolean 布尔类型,true或者false TRUE  FALSE FLOAT float 单精度浮点数 3.14159 DOUBLE double 双精度浮点数 3.14159

大数据技术之_08_Hive学习_01_Hive入门+Hive安装、配置和使用+Hive数据类型

第1章 Hive入门1.1 什么是Hive1.2 Hive的优缺点1.2.1 优点1.2.2 缺点1.3 Hive架构原理1.4 Hive和数据库比较1.4.1 查询语言1.4.2 数据存储位置1.4.3 数据更新1.4.4 索引1.4.5 执行1.4.6 执行延迟1.4.7 可扩展性1.4.8 数据规模第2章 Hive安装.配置和使用2.1 Hive安装地址2.2 Hive安装部署2.3 将本地文件导入Hive案例2.4 MySql安装2.4.1 安装包准备2.4.2 安装MySql服务器2.