當前位置:編程學習大全網 - 源碼下載 - Hive開窗函數

Hive開窗函數

first_value:取分組內排序後,截止到當前行,第壹個值;

last_value:取分組內排序後,截止到當前行,最後壹個值;

lead(col, n, default):用於統計窗口內往下第n行值。第壹個參數為列名,第二個參數為往下第n行(可選,默認為1),第三個參數為默認值(當往下第n行為null時,取默認值,如不指定則為null);

lag(col, n, default):與lead相反,用於統計窗口內往上第n行值。第壹個參數為列名,第二個參數為往上第n行(可選,默認為1),第三個參數為默認值(當往上第n行為null時,取默認值,如不指定,則為null)。

1)使用標準的聚合函數 count、sum、min、max、avg

2)使用 partition by 語句,使用壹個或多個原始列

3)使用 partition by 與 order by 語句,使用壹個或多個分區或者排序列

4)使用窗口規範,窗口規範支持以下格式:

當 ORDER BY 後面缺少窗口從句條件,窗口規範默認是 RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW .

當 ORDER BY 和窗口從句都缺失, 窗口規範默認是 ROW BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING .

OVER 從句支持以下函數, 但是並不支持和窗口壹起使用它們。

Ranking 函數: Rank, NTile, DenseRank, CumeDist, PercentRank .

Lead 和 Lag 函數.

row_number() :從1開始,按照順序生成組內記錄的序列,比如按照pv降序排列生成分組內的pv排名;獲取分組內的top1記錄;獲取壹個session內的第壹條記錄等等。

rank() :生成數據項在分組內的排名,排名相等會在名次中留下空位。

dense_rank() :生成數據項在分組內的排名,排名相對不會在名次中留下空位。

cume_dist :小於等於當前值的行數/分組內總行數。比如,統計小於等於當前薪資的人數占總人數的比例。

percent_rank : (分組內當前行的rank值-1)/(分組內總行數-1)。

ntile(n) :用於將分組數據按照順序切分成n片,返回當前切片值,如果切片不均勻,默認增加第壹個切片的分布。 ntile 不支持 rows between ,比如 ntile(2) over(partition by cookieied order by createtime rows between 3 preceding and current row) 。

4、測試數據集

  • 上一篇:請詳細介紹壹下VB的各種控件
  • 下一篇:★如何寫好統計數據分析報告
  • copyright 2024編程學習大全網