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 窗口分析函数的更多相关文章

  1. Hive—简单窗口分析函数

    hive 窗口分析函数 : jdbc:hive2:> select * from t_access; +----------------+---------------------------- ...

  2. [Hive_10] Hive 的分析函数

    0. 说明 Hive 的分析函数 窗口函数  | 排名函数 | 最大值 | 分层次 | lead && lag 统计活跃用户 | cume_dist 1. 窗口函数(开窗函数) ove ...

  3. hive窗口函数/分析函数详细剖析

    hive窗口函数/分析函数 在sql中有一类函数叫做聚合函数,例如sum().avg().max()等等,这类函数可以将多行数据按照规则聚集为一行,一般来讲聚集后的行数是要少于聚集前的行数的.但是有时 ...

  4. hive row_number等窗口分析函数

    一.排序&去重分析 row_number() over(partititon by col1 order by col2) as rn 结果:1,2,3,4 rank() over(parti ...

  5. hive中窗口分析函数

    分组统计 1. groups sets(field1,field2,field3, (field1,field2)) 样例如下: select dt,tenantCode,nvl(platform,' ...

  6. hive中分析函数window子句

    hive中有些分析函数功能确实很强大,在和sum,max等聚合函数结合起来能实现不少功能. 直接上代码演示吧 原始数据 channel1 2016-11-10 1 channel1 2016-11-1 ...

  7. Hive之分析函数

    目录 一.sum() over(partition by) 二.avg().min().max() over(partition) 三.row_number() over(partition by) ...

  8. Hive的分析函数的使用

    原文: https://www.toutiao.com/i6769120000578945544/?group_id=6769120000578945544 我们先准备数据库.表和数据 开窗分析函数相 ...

  9. Hive Ntile分析函数学习

    NTILE(n) 用于将分组数据按照顺序切分成n片,返回当前记录所在的切片值 NTILE不支持ROWS BETWEEN,比如 NTILE(2) OVER(PARTITION BY cookieid O ...

随机推荐

  1. 【模拟】(正解树状数组)-校长的问题-C++-计蒜客

    描述 学校中有 n 名学生,学号分别为 1 - n.再一次考试过后,学校按照学生的分数排了一个名次(分数一样,按照名字的字典序排序).你是一名老师,你明天要和校长汇报这次考试的考试情况,校长询问的方式 ...

  2. dubbo框架设计学习

    1.整体设计 (1)架构图 图例说明: 图中左边淡蓝背景的为服务消费方使用的接口,右边淡绿色背景的为服务提供方使用的接口,位于中轴线上的为双方都用到的接口. 图中从下至上分为十层,各层均为单向依赖,右 ...

  3. Git常用操作指南

    目录 前言 Git简介 安装之后第一步 创建版本库 本地仓库 远程仓库 版本控制 工作区和暂存区 版本回退 撤销修改 删除文件 分支管理 创建与合并分支 解决冲突 分支管理策略 状态存储 多人协作 R ...

  4. Spring_AOP基于AspectJ的注解开发&JDBC的模板使用&事务管理(学习笔记3)

    一:AOP基于AspectJ的注解开发 1,简单的实例: 1)引入相应的jar包 ​ 2)在配置文件里引入相关约束 <beans xmlns="http://www.springfra ...

  5. 《PHP从入门到精通(第3版)》目录

    一.基础知识 1.初识PHP 2.PHP环境搭建和开发工具 3.PHP语言基础 4.流程控制语句 5.字符串操作 6.正则表达式 7.PHP数组 8.PHP与Web页面交互 9.PHP与JavaScr ...

  6. zabbix 支持的主要监控方式

    zabbix 支持的主要监控方式 一.zabbix支持的主要监控方式: zabbix主要Agent,Trapper,SNMP,JMX,IPMI这几种监控方式,本文章主要通过监控理论和实际操作测试等方式 ...

  7. 努力做一个优秀的programmer [ C# 影院售票系统]

    Cinema.cs类 [Serializable] // 电影院类 public class Cinema { public Cinema() { //二进制 SoldTickets = new Li ...

  8. oracle查询截至到当前日期月份所在年份的所有月份

    SELECT to_number(TO_CHAR(add_months(trunc(sysdate, 'yy'), ROWNUM - 1), 'MM')) as month FROM DUALCONN ...

  9. java反射原理及Class应用

    反射:框架设计灵魂 框架:半成品软件,可以在框架基础上进行软件开发,简化编码 反射:将类的各个组成部分封装我其他对象,这就是反射机制 好处:  1.可以在程序运行过程中,操作这些对象  2.可以解耦, ...

  10. python编码问题——解决python3 UnicodeEncodeError: 'gbk' codec can't encode character '\xXX' in position XX

    python实现爬虫遇到编码问题: error:UnicodeEncodeError: 'gbk' codec can't encode character '\xXX' in position XX ...