Hive- 序列函数
数据集如下:
cookie1,2015-04-10,1
cookie1,2015-04-11,5
cookie1,2015-04-12,7
cookie1,2015-04-13,3
cookie1,2015-04-14,2
cookie1,2015-04-15,4
cookie1,2015-04-16,4
cookie2,2015-04-10,2
cookie2,2015-04-11,3
cookie2,2015-04-12,5
cookie2,2015-04-13,6
cookie2,2015-04-14,3
cookie2,2015-04-15,9
cookie2,2015-04-16,7
1、ntile
用法:
ntitle 函数主要是用于将整表数据进行切片分组,默认是对表在不做任何操作之前进行切片分组的,比如现在整个表有9行数据,你要切片分成3组ntile(3),那么就是第1-3行为一组,4-6行为一组,7-9行分为一组。
说明:
NTILE(n),用于将分组数据按照顺序切分成n片,返回当前切片值
NTILE不支持ROWS BETWEEN,比如 NTILE(2) OVER(PARTITION BY cookieid ORDER BY createtime ROWS BETWEEN 3 PRECEDING AND CURRENT ROW)
如果切片不均匀,默认增加第一个切片的分布
selectcookieid,createtime,pv,ntile(2) over (partition by cookieid order by createtime) as rn1, --分组内将数据分成2片ntile(3) over (partition by cookieid order by createtime) as rn2, --分组内将数据分成2片ntile(4) over (order by createtime) as rn3 --将所有数据分成4片
from cookie.cookie2
order by cookieid,createtime;
查询结果如下:
问题:统计一个cookid,PV最多的前1/3天。
思路:对每个cookid的pv 降序排,然后进行切片分组ntile(3)。
select
cookieid,
createtime,
pv,
ntile(3) over(partition by cookid order by pv desc) as rn
from cook.cookie2;
取rn = 1的记录。
2、row_Number()
用法 :
从1开始,按照顺序生成该条数据在分组内的对应的序列数,row_number()的值不会存在重复,当排序的值相同时,按照表中记录的顺序进行排列。
在使用的时候,后面会跟着一个函数over(),over() 的作用是将表中的记录进行分组和排序,因为row_number()是按照顺序生成对应的序列,而不是按照排序生成序列,所以row_number()一般需要与order by 进行结合使用。
问题:取各组内的第一名?
select
cookieid,
createtime,
pv,
row_number() over(partition by cookieid order by pv desc) as rn
from cookie.cookie2
取各组内的 rn = 1即可。
3、RANK 和DENSE_RANK
rank()生成数据项在分组中的排名,排名相等会在名词中留下空位。
dense_Rank()生成数据项在分组中的排名,排名相等在名次中不会留下空位。
selectcookieid,createtime,pv,rank() over (partition by cookieid order by pv desc) as rn1,dense_rank() over (partition by cookieid order by pv desc) as rn2,row_number() over (partition by cookieid order by pv desc) as rn3
from cookie.cookie2
where cookieid='cookie1';
查询结果:
总结:
row_bumber 、Rank和Dense_Rank的区别
row_number:按照顺序编号,相同的值编号不同,不留空名次;
rank:按顺序编号,相同的值编号相同,留空位;
dense_Rank:按照顺序编号,相同的值编号相同,不留空名次;
Hive- 序列函数相关推荐
- HIVE 常用函数总结
HIVE 常用函数总结 hive 函数比较多,之前总是随用随查,今天把常用的函数总结一下,以后方便查阅. 本文主要涉及以下几个大面: 1.Hive函数介绍以及内置函数查看 内容较多,见<Hive ...
- 2021年大数据Hive(八):Hive自定义函数
全网最详细的Hive文章系列,强烈建议收藏加关注! 后面更新文章都会列出历史文章目录,帮助大家回顾知识重点. 目录 系列历史文章 前言 Hive自定义函数 一.概述 1.UDF(User-Define ...
- Hive常用函数大全一览
Hive常用函数大全一览 1 关系运算 1.1 1.等值比较: = 1.2 2.不等值比较: 1.3 3.小于比较: < 1.4 4.小于等于比较: <= 1.5 5.大于比较: > ...
- hive - 自定义函数(超详细步骤,手把手的交)
用Java开发自定义函数,步骤: 1.eclipse上新建一个工程project(db2019): 2.导jar依赖包: db2019右键 --build path --configure... -- ...
- hive 开窗函数_Hive的架构剖析
本文主要介绍Hive的架构和以及HQL的查询阶段,主要内容包括: Hive的架构 架构中的相关组件介绍 HQL的查询阶段 Hive的架构 hive的基本架构图如下图所示: 相关组件介绍 数据存储 Hi ...
- hive UDF函数取最新分区
hive UDF函数取最新分区 1.pom文件 <dependencies><!-- https://mvnrepository.com/artifact/org.apache.hi ...
- Hadoop3集群搭建之——hive添加自定义函数UDTF (一行输入,多行输出)
上篇: Hadoop3集群搭建之--虚拟机安装 Hadoop3集群搭建之--安装hadoop,配置环境 Hadoop3集群搭建之--配置ntp服务 Hadoop3集群搭建之--hive安装 Hadoo ...
- Hive自定义函数入门实例
概念 UDF函数一共分为三种类型: UDF-一进一出,给定一个参数,输出一个处理后的数据 UDAF-多进一出,属于聚合函数,类似于count.sum等函数 UDTF-一进多出,属于一个参数,返 ...
- Hive自定义函数(字母大小写转换)
自定义Hive的函数,首先需要继承UDF类,然后定义方法名字为evaluate的方法,该方法不能设置void,如果需要返回为空,可以返回为null. 一个简单的大小写转换案例 特别注意看注释 pack ...
- 基本数据结构--字典和常用内置序列函数
字典 #字典 #创建一个字典,存储一个人的信息 dict1={'name':'zhangsan','age':30,'city':'beijing'} print(dict1) {'name': 'z ...
最新文章
- 数学中的span以及线性流形是什么意思
- VS2015 error MSB6006: “cmd.exe”已退出 代码为 3
- 4.2.2 磁盘调度算法
- socket缓冲区以及阻塞模式详解
- linux多点触控软件测试,测试工程师日常工作中高频Linux命令
- Apache网站服务
- linux php 5.3 变慢,异常在 PHP 5.3 中的最佳实践
- java接口回调学习
- python中英文切换_vue根据按钮进行中英文切换
- 解决 Mac OS 下罗技鼠标滚轮无法使用问题(滚动失效)
- Reactor5.0源代码混淆器
- Shell 使用 expr 进行数学运算
- FDE之要求密码开机流程
- 经验分享!java程序员面试十多家公司后的经验心得
- fsleyes -- 一款多功能影像数据查看器
- Spark 1:Spark基础入门
- JPG图片怎么压缩到30k内?如何压缩图片到指定大小?
- 搜一下导航完整程序源码+亲测可用
- STM32 中的 GPIO_Pin_n与GPIO_Pinsource_n
- 【智能工厂】—走进MES项目
热门文章
- vue项目debugger调试看不到源码
- 在js里面获取当前时间的前六个月
- 苹果手机文件连接服务器显示离线,查找iphone一直显示30分钟前的旧位置,是代表设备短暂接入后又离线了吗?...
- 三步教你开通微信小程序直播功能
- java画折线图和柱状图结合的综合图(用jfreechart)
- C#学习 - 关于懒汉式和饿汉式单例
- itextpdf中文乱码问题研究
- (15.1.5)无聊的时候我们就去翻妹子们的微博
- 169751-73-9,Tos-PEG5-CH2CO2tBu化学式:C21H34O9S
- Java、使用循环语句打印4个图案