hive 建表_Hive分析窗口函数(二) NTILE,ROW_NUMBER,RANK,DENSE_RANK (4)

7f3e79c6cfc6765641ca5ebda3972227.png
四者都是常见的排序窗口函数,区别:
1、NTILE(n),用于将分组数据按照顺序切分成n片,返回当前切片值,如果切片不均匀,默认增加第一个切片的分布
2、ROW_NUMBER() 从1开始,按照顺序,生成分组内记录的序列
3、RANK()生成数据项在分组中的排名从1开始,排名相等会在名次中留下空位
4、DENSE_RANK() 生成数据项在分组中的排名,排名相等会在名次中不会留下空位
5、这4项都不支持row between and

1、hive建表

1)首先在另外一个窗口上建立txt的数据集

4b4bcb4b3d95f480966f36f56ab61bc0.png

1a3de687f49c95216712e44dbb905972.png

2)hive建表

由于cookie在木子李:hive基础建表(1)已经建立表结构,故采用表结构进行建表导入

7e96883228653170b6065897ec88bd92.png

2、NTILE(n)-按顺序切分n片,返回当前切片值

如果切片不均与,默认增加第一个切片的分布

select
  

2b238b8d8688d007622e453d53868fac.png

e2dba26002004d219ab30fbce9d102b5.png

问题:求该pv点击量前三分之一的是哪天?

select
  

efd11d64d70f4e2c6710d206fb7e2dca.png

f2895a981b29ed8348bf046077b91714.png

按照需求,选rn1-分组pv降序,取标记为1的数据。

3、ROW_NUMBER-无间隔排序

select
  

9a91e333efd3f709615c761de111fdbb.png

8eca849df431ad87c7d8038d47188b36.png

4、ROW_NUMBER、RANK 和 DENSE_RANK

这三个窗口函数的使、用场景非常多
- row_number()从1开始,按照顺序,生成分组内记录的序列,row_number()的值不会存在重复,当排序的值相同时,按照表中记录的顺序进行排列
- RANK() 生成数据项在分组中的排名,排名相等会在名次中留下空位
- DENSE_RANK() 生成数据项在分组中的排名,排名相等会在名次中不会留下空位
**注意:
rank和dense_rank的区别在于排名相等时会不会留下空位.**

为方便观看,我们采用木子李:Hive分析窗口函数(一) SUM,AVG,MIN,MAX(3)的cookie表进行计算。

select
  

711301cad79e58ec0a3eaac757288dcb.png

98d7d0542a43d5b83f1da6f48367a729.png

5、ROW_NUMBER、RANK 和 DENSE_RANK 的不同

row_number: 按顺序编号,不留空位 rank: 按顺序编号,相同的值编相同号,留空位 dense_rank: 按顺序编号,相同的值编相同的号,不留空位

Hive学习之路 (十四)Hive分析窗口函数(二) NTILE,ROW_NUMBER,RANK,DENSE_RANK

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值