有不少同學(xué)一聽這個標(biāo)題,hive窗口函數(shù)是什么鬼?沒聽說過還有窗口函數(shù)這個東西啊,其實它的用處可大了,下面聽小千慢慢道來。
hive窗口函數(shù)
窗口函數(shù)指定了函數(shù)工作的數(shù)據(jù)窗口大小(當(dāng)前行的上下多少行),這個數(shù)據(jù)窗口大小可能會隨著行的變化而變化。
窗口函數(shù)和聚合函數(shù)區(qū)別
窗口函數(shù)對于每個組返回多行,組內(nèi)每一行對應(yīng)返回一行值。聚合函數(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可選,默認(rèn)為1,DEFAULT當(dāng)往上第n行為NULL時候,取默認(rèn)值,如不指定,則為NULL
lead(col,n,DEFAULT) : 統(tǒng)計往后n行的col值,n可選,默認(rèn)為1,DEFAULT當(dāng)往下第n行為NULL時候,取默認(rèn)值,如不指定,則為NULL
ntile(n) : 用于將分組數(shù)據(jù)按照順序切分成n片,返回當(dāng)前切片值。注意: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搭配使用。
以上就是關(guān)于大數(shù)據(jù)hive窗口函數(shù)的介紹了,最后歡迎對大數(shù)據(jù)感興趣的同學(xué)了解一下我們的大數(shù)據(jù)開發(fā)培訓(xùn)課程,內(nèi)容包含Linux&&Hadoop生態(tài)體系、大數(shù)據(jù)計算框架體系、云計算體系、機(jī)器學(xué)習(xí)&&深度學(xué)習(xí)。現(xiàn)在咨詢還能免費(fèi)領(lǐng)取大數(shù)據(jù)學(xué)習(xí)資料,趕緊來找在線老師申領(lǐng)吧。