2021年大数据Hive(七):Hive的开窗函数
全網(wǎng)最詳細(xì)的Hive文章系列,強(qiáng)烈建議收藏加關(guān)注!
后面更新文章都會(huì)列出歷史文章目錄,幫助大家回顧知識(shí)重點(diǎn)。
目錄
系列歷史文章
前言
Hive的開窗函數(shù)
一、窗口函數(shù) ROW_NUMBER,RANK,DENSE_RANK
1、數(shù)據(jù)準(zhǔn)備
2、ROW_NUMBER
3、RANK 和 DENSE_RANK
二、Hive分析窗口函數(shù) SUM,AVG,MIN,MAX
1、數(shù)據(jù)準(zhǔn)備
2、SUM(結(jié)果和ORDER BY相關(guān),默認(rèn)為升序)
3、AVG,MIN,MAX
系列歷史文章
2021年大數(shù)據(jù)Hive(十二):Hive綜合案例!!!
2021年大數(shù)據(jù)Hive(十一):Hive調(diào)優(yōu)
2021年大數(shù)據(jù)Hive(十):Hive的數(shù)據(jù)存儲(chǔ)格式
2021年大數(shù)據(jù)Hive(九):Hive的數(shù)據(jù)壓縮
2021年大數(shù)據(jù)Hive(八):Hive自定義函數(shù)
2021年大數(shù)據(jù)Hive(七):Hive的開窗函數(shù)
2021年大數(shù)據(jù)Hive(六):Hive的表生成函數(shù)
2021年大數(shù)據(jù)Hive(五):Hive的內(nèi)置函數(shù)(數(shù)學(xué)、字符串、日期、條件、轉(zhuǎn)換、行轉(zhuǎn)列)
2021年大數(shù)據(jù)Hive(四):Hive查詢語(yǔ)法
2021年大數(shù)據(jù)Hive(三):手把手教你如何吃透Hive數(shù)據(jù)庫(kù)和表操作(學(xué)會(huì)秒變數(shù)倉(cāng)大佬)
2021年大數(shù)據(jù)Hive(二):Hive的三種安裝模式和MySQL搭配使用
2021年大數(shù)據(jù)Hive(一):Hive基本概念
前言
?2021大數(shù)據(jù)領(lǐng)域優(yōu)質(zhì)創(chuàng)作博客,帶你從入門到精通,該博客每天更新,逐漸完善大數(shù)據(jù)各個(gè)知識(shí)體系的文章,幫助大家更高效學(xué)習(xí)。
有對(duì)大數(shù)據(jù)感興趣的可以關(guān)注微信公眾號(hào):三幫大數(shù)據(jù)
Hive的開窗函數(shù)
一、窗口函數(shù) ROW_NUMBER,RANK,DENSE_RANK
1、數(shù)據(jù)準(zhǔn)備
cookie1,2021-06-10,1cookie1,2021-06-11,5cookie1,2021-06-12,7cookie1,2021-06-13,3cookie1,2021-06-14,2cookie1,2021-06-15,4cookie1,2021-06-16,4cookie2,2021-06-10,2cookie2,2021-06-11,3cookie2,2021-06-12,5cookie2,2021-06-13,6cookie2,2021-06-14,3cookie2,2021-06-15,9cookie2,2021-06-16,7CREATE?TABLE?it_t1 (cookieid string,createtime string,???--daypv INT)?ROW?FORMAT?DELIMITED FIELDS TERMINATED BY?',';-- 加載數(shù)據(jù):load data?local?inpath '/export/data/hivedatas/it_t2.txt'?into?table?it_t1;
???????2、ROW_NUMBER
ROW_NUMBER() ?從1開始,按照順序,生成分組內(nèi)記錄的序列
SELECT?cookieid,createtime,pv,ROW_NUMBER()?OVER(PARTITION?BY?cookieid ORDER?BY?pv desc)?AS?rnFROM?it_t1;
???????3、RANK 和 DENSE_RANK
RANK() 生成數(shù)據(jù)項(xiàng)在分組中的排名,排名相等會(huì)在名次中留下空位
DENSE_RANK() 生成數(shù)據(jù)項(xiàng)在分組中的排名,排名相等會(huì)在名次中不會(huì)留下空位
SELECT?cookieid,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?rn3FROM?it_t1WHERE?cookieid =?'cookie1';
???????二、Hive分析窗口函數(shù) SUM,AVG,MIN,MAX
???????1、數(shù)據(jù)準(zhǔn)備
--建表語(yǔ)句:create?table?it_t2(cookieid string,createtime string,???--daypv int)?row?format?delimitedfields terminated by?',';--加載數(shù)據(jù):load data?local?inpath '/root/hivedata/?it_t2.txt'?into?table?it_t2;--開啟智能本地模式SET?hive.exec.mode.local.auto=true;
???????2、SUM(結(jié)果和ORDER BY相關(guān),默認(rèn)為升序)
select?cookieid,createtime,pv,sum(pv)?over(partition?by?cookieid order?by?createtime)?as?pv1from?it_t2;select?cookieid,createtime,pv,sum(pv)?over(partition?by?cookieid order?by?createtime rows?between?unbounded preceding and?current?row)?as?pv2from?it_t2;select?cookieid,createtime,pv,sum(pv)?over(partition?by?cookieid)?as?pv3from?it_t2;??--如果沒有order ?by排序語(yǔ)句 ?默認(rèn)把分組內(nèi)的所有數(shù)據(jù)進(jìn)行sum操作select?cookieid,createtime,pv,sum(pv)?over(partition?by?cookieid order?by?createtime rows?between?3?preceding and?current?row)?as?pv4from?it_t2;select?cookieid,createtime,pv,sum(pv)?over(partition?by?cookieid order?by?createtime rows?between?3?preceding and?1?following)?as?pv5from?it_t2;select?cookieid,createtime,pv,sum(pv)?over(partition?by?cookieid order?by?createtime rows?between?current?row?and?unbounded following)?as?pv6from?it_t2;--pv1: 分組內(nèi)從起點(diǎn)到當(dāng)前行的pv累積,如,11號(hào)的pv1=10號(hào)的pv+11號(hào)的pv, 12號(hào)=10號(hào)+11號(hào)+12號(hào)--pv2: 同pv1--pv3: 分組內(nèi)(cookie1)所有的pv累加--pv4: 分組內(nèi)當(dāng)前行+往前3行,如,11號(hào)=10號(hào)+11號(hào), 12號(hào)=10號(hào)+11號(hào)+12號(hào),13號(hào)=10號(hào)+11號(hào)+12號(hào)+13號(hào), 14號(hào)=11號(hào)+12號(hào)+13號(hào)+14號(hào)--pv5: 分組內(nèi)當(dāng)前行+往前3行+往后1行,如,14號(hào)=11號(hào)+12號(hào)+13號(hào)+14號(hào)+15號(hào)=5+7+3+2+4=21--pv6: 分組內(nèi)當(dāng)前行+往后所有行,如,13號(hào)=13號(hào)+14號(hào)+15號(hào)+16號(hào)=3+2+4+4=13,14號(hào)=14號(hào)+15號(hào)+16號(hào)=2+4+4=10/*- 如果不指定rows between,默認(rèn)為從起點(diǎn)到當(dāng)前行;- 如果不指定order by,則將分組內(nèi)所有值累加;- 關(guān)鍵是理解rows between含義,也叫做window子句:- preceding:往前- following:往后- current row:當(dāng)前行- unbounded:起點(diǎn)- unbounded preceding 表示從前面的起點(diǎn)- unbounded following:表示到后面的終點(diǎn)*/?
???????3、AVG,MIN,MAX
AVG,MIN,MAX和SUM用法一樣
select?cookieid,createtime,pv,avg(pv)?over(partition?by?cookieid order?by?createtime rows?between?unbounded preceding and?current?row)?as?pv2from?it_t2;select?cookieid,createtime,pv,max(pv)?over(partition?by?cookieid order?by?createtime rows?between?unbounded preceding and?current?row)?as?pv2from?it_t2;select?cookieid,createtime,pv,min(pv)?over(partition?by?cookieid order?by?createtime rows?between?unbounded preceding and?current?row)?as?pv2from?it_t2;
- 📢博客主頁(yè):https://lansonli.blog.csdn.net
- 📢歡迎點(diǎn)贊 👍 收藏 ?留言 📝 如有錯(cuò)誤敬請(qǐng)指正!
- 📢本文由 Lansonli 原創(chuàng),首發(fā)于 CSDN博客🙉
- 📢大數(shù)據(jù)系列文章會(huì)每天更新,停下休息的時(shí)候不要忘了別人還在奔跑,希望大家抓緊時(shí)間學(xué)習(xí),全力奔赴更美好的生活?
總結(jié)
以上是生活随笔為你收集整理的2021年大数据Hive(七):Hive的开窗函数的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2021年大数据Hive(五):Hive
- 下一篇: 2021年大数据Hive(八):Hive