hive 窗口函数(开窗函数)
生活随笔
收集整理的這篇文章主要介紹了
hive 窗口函数(开窗函数)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
窗口函數(開窗函數)
窗口函數是高階函數,分為窗口和函數兩個部分,窗口是限定函數的計算范圍,函數表示是計算邏輯。
1.窗口函數的語法
基本語法:
函數 + over( [partition by …] [order by …] [窗口子句] )
- over表示開窗,默認窗口大小會包含所有數據。
- partition by表示根據字段再劃分一個細窗口,相同字段進入同一個細窗口里面,每個窗口之間相互獨立,窗口子句對于每個細窗口獨立生效。
- order by表示窗口內按什么排序,如果只有over表示直接最大窗口排序;如果有partition by每個細窗口單獨排序。
- 窗口子句,可以進一步限定范圍
- (rows | range) between (unbounded | [num]) preceding and ([num] preceding | current row | (unbounded | [num]) following
- (rows | range) between current row and (current row | (unbounded | [num]) following)
- (rows | range) between [num] following and (unbounded | [num]) following
示例:
rows between unbounded preceding and unbounded following
// 行的范圍為上無邊界到下無邊界(第一行到最后一行)。
// 注:窗口函數是一行一行執行的。
2.哪些函數是窗口函數
2.1窗口函數
- lag(col,n,default_val):往前第n行數據。
- lead(col,n, default_val):往后第n行數據。
- first_value (col,true/false):當前窗口下的第一個值,第二個參數為true,跳過空值。
- last_value (col,true/false):當前窗口下的最后一個值,第二個參數為true,跳過空值。
2.2聚合函數
- max:最大值。
- min:最小值。
- sum:求和。
- avg:平均值。
- count:計數。
2.3排名分析函數
- rank:排名相同時會重復,總數不會減少。
- dense_rank:排名相同時會重復,總數會減少。
- row_number:行號。
- ntile:分組并給上組號。
總結
以上是生活随笔為你收集整理的hive 窗口函数(开窗函数)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php smarty程序设计,Smart
- 下一篇: 海康威视监控有线/无线安装调试