hive中分析函数window子句
hive中有些分析函数功能确实很强大,在和sum,max等聚合函数结合起来能实现不少功能。
直接上代码演示吧
原始数据
channel1 2016-11-10 1
channel1 2016-11-11 3
channel1 2016-11-12 5
channel1 2016-11-13 6
channel1 2016-11-14 2
channel1 2016-11-15 4
channel2 2016-11-10 5
channel2 2016-11-11 3
channel2 2016-11-12 5
channel2 2016-11-13 2
创建表
CREATE TABLE test (
channel string,
createtime string, --day
pv INT
) ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t'
语句以及结果
SELECT
channel,
createtime,
pv,
SUM(pv) OVER(PARTITION BY channel ORDER BY createtime) AS pv1,
SUM(pv) OVER(PARTITION BY channel ORDER BY createtime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS pv2,
SUM(pv) OVER(PARTITION BY channel) AS pv3,
SUM(pv) OVER(PARTITION BY channel ORDER BY createtime ROWS BETWEEN 3 PRECEDING AND CURRENT ROW) AS pv4,
SUM(pv) OVER(PARTITION BY channel ORDER BY createtime ROWS BETWEEN 3 PRECEDING AND 1 FOLLOWING) AS pv5,
SUM(pv) OVER(PARTITION BY channel ORDER BY createtime ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS pv6
FROM test;
pv pv1 pv2 pv3 pv4 pv5 pv6
channel1 2016-11-15 4 21 21 21 17 17 4
channel1 2016-11-14 2 17 17 21 16 20 6
channel1 2016-11-13 6 15 15 21 15 17 12
channel1 2016-11-12 5 9 9 21 9 15 17
channel1 2016-11-11 3 4 4 21 4 9 20
channel1 2016-11-10 1 1 1 21 1 4 21
channel2 2016-11-13 2 15 15 15 15 15 2
channel2 2016-11-12 5 13 13 15 13 15 7
channel2 2016-11-11 3 8 8 15 8 13 10
channel2 2016-11-10 5 5 5 15 5 8 15
分析结果,以channel1 列
pv1 结果是取起点到当前行的积累,比如:10号=10号 11号=10号+11号 12号=10号+11号+12号 以此类推
pv2 和pv1的结果是一样的。
pv3 就是分组channel的pv的聚合
pv4 就是分组内当前行向前+3 行 15号=15+14+13+12 14号=14+13+12+11 13号=13号+12号+11号 以此类推
pv5 就是分组内当前行往前+3行 往后加+1行 15号=14+13+12+11 14号=14号+13号+12号+11号+15号 以此类推
pv6 就是当前行+往后所有行
如果不指定rows between 默认为从起点到当前行 如果不指定order by 默认则将分组内累加
PRECEDING:往前
FOLLOWING:往后
CURRENT ROW:当前行
UNBOUNDED:起点,UNBOUNDED PRECEDING 表示从前面的起点, UNBOUNDED FOLLOWING:表示到后面的终点
hive中分析函数window子句的更多相关文章
- Hive 窗口分析函数
1.窗口函数 1.LAG(col,n,DEFAULT) 用于统计窗口内往上第n行值 第一个参数为列名,第二个参数为往上第n行(可选,默认为1),第三个参数为默认值(当往上第n行为NULL时候,取默认值 ...
- hive 中窗口函数row_number,rank,dense_ran,ntile分析函数的用法
hive中一般取top n时,row_number(),rank,dense_ran()这三个函数就派上用场了, 先简单说下这三函数都是排名的,不过呢还有点细微的区别. 通过代码运行结果一看就明白了. ...
- hive窗口函数/分析函数详细剖析
hive窗口函数/分析函数 在sql中有一类函数叫做聚合函数,例如sum().avg().max()等等,这类函数可以将多行数据按照规则聚集为一行,一般来讲聚集后的行数是要少于聚集前的行数的.但是有时 ...
- Hive中的窗口函数
简介 本文主要介绍hive中的窗口函数.hive中的窗口函数和sql中的窗口函数相类似,都是用来做一些数据分析类的工作,一般用于olap分析 概念 我们都知道在sql中有一类函数叫做聚合函数,例如su ...
- Hive之分析函数
目录 一.sum() over(partition by) 二.avg().min().max() over(partition) 三.row_number() over(partition by) ...
- hive中简单介绍分区表
所介绍内容基本上是翻译官方文档,比较肤浅,如有错误,请指正! hive中创建分区表没有什么复杂的分区类型(范围分区.列表分区.hash分区.混合分区等).分区列也不是表中的一个实际的字段,而是一个或者 ...
- hive中简单介绍分区表(partition table)——动态分区(dynamic partition)、静态分区(static partition)
一.基本概念 hive中分区表分为:范围分区.列表分区.hash分区.混合分区等. 分区列:分区列不是表中的一个实际的字段,而是一个或者多个伪列.翻译一下是:“在表的数据文件中实际上并不保存分区列的信 ...
- hive中 udf,udaf,udtf
1.hive中基本操作: DDL,DML 2.hive中函数 User-Defined Functions : UDF(用户自定义函数,简称JDF函数)UDF: 一进一出 upper lower ...
- HIVE中join、semi join、outer join
补充说明 left outer join where is not null与left semi join的联系与区别:两者均可实现exists in操作,不同的是,前者允许右表的字段在select或 ...
随机推荐
- delete file by bat
@echo off set logFile=AmazonDeleteFiles.log set Feeds="E:\AmazonProject\AmazonListing\AmazonLis ...
- tcpdump抓SQL[转]
转自:http://www.cnblogs.com/LMySQL/p/5060604.html 前言:假设如果有个服务器几十个链接突然达到上千个链接,show processlist,general_ ...
- [转]Django与遗留系统和数据库集成
From:http://www.czug.org/python/django/17.html 尽管Django最适合从零开始开发项目--所谓的"绿色领域"开发--将框架与遗留系统和 ...
- Random
/* * Random:产生随机数的类 * * 构造方法: * public Random():没有给种子,用的是默认种子,是当前时间的毫秒值 * public Random(long seed):给 ...
- java安全沙箱(四)之安全管理器及Java API
java是一种类型安全的语言,它有四类称为安全沙箱机制的安全机制来保证语言的安全性,这四类安全沙箱分别是: 类加载体系 .class文件检验器 内置于Java虚拟机(及语言)的安全特性 安全管理器及J ...
- java 实现WebService 以及不同的调用方式
webservice: 就是应用程序之间跨语言的调用 wwww.webxml.com.cn 1.xml 2. wsdl: webservice description l ...
- Java 判断文件夹、文件是否存在、否则创建文件夹
1.判断文件是否存在,不存在创建文件 File file=new File("C:\\Users\\QPING\\Desktop\\JavaScript\\2.htm"); if( ...
- 成功部署SSIS中含有Oracle数据库连接的ETL包
RT,正式写之前,我想说,真TMD不容易!!! 写博客,责任心,很重要 在百度搜出来的内地博客技术文章(CSDN.ITEYE.CNBLOGS……),大部分都是不全面,只针对一个遇到的问题点的记录,可以 ...
- 【摘】Mysql备份还原数据库之mysqldump实例及参数详细说明
原文http://www.cnblogs.com/xuejie/archive/2013/01/11/2856911.html 我们在运营项目的过程中肯定会遇到备份数据库,还原数据库的情况,我们一 ...
- 【java】分页查询实体类
package com.dmsd.itoo.tool.pageModel; import java.io.Serializable; import java.util.HashMap; import ...