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