介紹
Hive的分析函數(shù)又叫窗口函數(shù), 在oracle中就有這樣的分析函數(shù)枷恕,主要用來做數(shù)據(jù)統(tǒng)計(jì)分析的党晋。
Lag和Lead分析函數(shù)可以在同一次查詢中取出同一字段的前N行的數(shù)據(jù)【LAG】和后N行的數(shù)據(jù)【LEAD】作為獨(dú)立的列。
LAG
LAG(col,n,DEFAULT) 用于統(tǒng)計(jì)窗口內(nèi)往上第n行值
參數(shù)1為列名徐块,參數(shù)2為往上第n行(可選未玻,默認(rèn)為1),參數(shù)3為默認(rèn)值(當(dāng)往上第n行為NULL時(shí)候胡控,取默認(rèn)值扳剿,如不指定,則為NULL)昼激。
LEAD
LEAD(col,n,DEFAULT) 用于統(tǒng)計(jì)窗口內(nèi)往下第n行值
參數(shù)1為列名庇绽,參數(shù)2為往下第n行(可選锡搜,默認(rèn)為1),參數(shù)3為默認(rèn)值(當(dāng)往下第n行為NULL時(shí)候瞧掺,取默認(rèn)值耕餐,如不指定,則為NULL)辟狈。
用法
select *,lag(field_name, 1, 'none')over()as lag_col from tabl;
- 其中over()里可以加入gorup by 和order by來進(jìn)一步對數(shù)據(jù)進(jìn)行處理肠缔。
-
lag也可以換成lead,剛好取值效果剛好相反哼转。