大数据技术-hive窗口函数详解
有不少同學一聽這個標題,hive窗口函數(shù)是什么鬼?沒聽說過還有窗口函數(shù)這個東西啊,其實它的用處可大了,下面聽小千慢慢道來。
hive窗口函數(shù)
窗口函數(shù)指定了函數(shù)工作的數(shù)據(jù)窗口大小(當前行的上下多少行),這個數(shù)據(jù)窗口大小可能會隨著行的變化而變化。
窗口函數(shù)和聚合函數(shù)區(qū)別
窗口函數(shù)對于每個組返回多行,組內(nèi)每一行對應返回一行值。聚合函數(shù)對于每個組只返回一行。
在日常的開發(fā)中常用那些類型函數(shù)?
1、字符串操作函數(shù)?split、concat、ifnull、cast
2、聚合函數(shù) : hive適用于分析,所以常用。
3、時間函數(shù) : 數(shù)倉的特征隨時間變化而變化,所以時間也特別多
4、窗口函數(shù):sum() over() 、 count() over() 、 排名函數(shù)
了解哪些窗口函數(shù),都是什么意思?
sum(col) over() : 分組對col累計求和
count(col) over() : 分組對col累計
min(col) over() : 分組對col求小
max(col) over() : 分組求col的大值
avg(col) over() : 分組求col列的平均值
first_value(col) over() : 某分區(qū)排序后的個col值
last_value(col) over() : 某分區(qū)排序后的后一個col值 lag(col,n,DEFAULT) : 統(tǒng)計往前n行的col值,n可選,默認為1,DEFAULT當往上第n行為NULL時候,取默認值,如不指定,則為NULL
lead(col,n,DEFAULT) : 統(tǒng)計往后n行的col值,n可選,默認為1,DEFAULT當往下第n行為NULL時候,取默認值,如不指定,則為NULL
ntile(n) : 用于將分組數(shù)據(jù)按照順序切分成n片,返回當前切片值。注意:n必須為int類型。
over(分組 排序 窗口) 中的order by后的語法: 1、物理窗口(真實往上下移動多少行rows between):
CURRENT ROW | UNBOUNDED PRECEDING | [num] PRECEDING AND UNBOUNDED FOLLOWING | [num] FOLLOWING| CURRENT ROW
如: over(partition by col order by rows between 1 preceding and 1 fllowing)
邏輯窗口(滿足條件上下多少行):(金融行業(yè)、保險行業(yè)、p2p等)
range between [num] PRECEDING AND [num] FOLLOWING
如: over(partition by col order by range between 5 preceding and 5 fllowing)
注意:窗口函數(shù)一般不和group by搭配使用。
以上就是關于大數(shù)據(jù)hive窗口函數(shù)的介紹了,希望對大家有所幫助。想了解更多大數(shù)據(jù)相關知識,歡迎關注小千,后期會繼續(xù)分享大數(shù)據(jù)技術知識。
本文來自千鋒教育,轉(zhuǎn)載請注明出處。
總結(jié)
以上是生活随笔為你收集整理的大数据技术-hive窗口函数详解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java开发技巧——并发控制中的乐观锁与
- 下一篇: 怎样用Python提取信息呢?分享这3个