大資料技術-hive視窗函式詳解

千鋒武漢發表於2021-08-25

      有不少同學一聽這個標題,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)

1

      邏輯視窗(滿足條件上下多少行):(金融行業、保險行業、p2p等)

      range between [num] PRECEDING AND [num] FOLLOWING

      如: over(partition by col order by range between 5 preceding and 5 fllowing)

2

      注意:視窗函式一般不和group by搭配使用。

      以上就是關於大資料hive視窗函式的介紹了,希望對大家有所幫助。想了解更多大資料相關知識,歡迎關注小千,後期會繼續分享大資料技術知識。

      本文來自千鋒教育,轉載請註明出處。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31548651/viewspace-2788628/,如需轉載,請註明出處,否則將追究法律責任。

相關文章