Hive分析函數(shù)

Hive分析函數(shù)

image.png

Example:

Ntile(分片)

使用場(chǎng)景:計(jì)算百分之幾的用戶的結(jié)果

  • 給了用戶和每個(gè)用戶對(duì)應(yīng)的消費(fèi)信息表既琴, 計(jì)算花費(fèi)前50%的用戶的平均消費(fèi)含思;
-- 把用戶和消費(fèi)表,按消費(fèi)下降順序平均分成2份
drop table if exists test_by_payment_ntile;
create table test_by_payment_ntile as
select 
      nick, 
      payment ,
      NTILE(2) OVER(ORDER BY payment desc) AS rn 
from test_nick_payment;

-- 分別對(duì)每一份計(jì)算平均值贡必,就可以得到消費(fèi)靠前50%和后50%的平均消費(fèi)
select 
   'avg_payment' as inf,
   t1.avg_payment_up_50 as avg_payment_up_50,
   t2.avg_payment_down_50 as avg_payment_down_50
from
 (select
         avg(payment) as avg_payment_up_50 
  from test_by_payment_ntile 
  where rn=1
)t1
   join
(select 
          avg(payment) as avg_payment_down_50 
 from test_by_payment_ntile 
 where rn=2
)t2
on (t1.dp_id=t2.dp_id);

Rank,Dense_Rank,Row_Number

使用場(chǎng)景:Top N

  • Rank : 相同的排名會(huì)留下空缺,1,2栈源,2,4
  • Dense_Rank: 相同的排名不會(huì)留下空缺竖般,1甚垦,2,2涣雕,3
  • Row_Number:不會(huì)重復(fù)

Lag,Lead

使用場(chǎng)景:計(jì)算用戶頁(yè)面的停留時(shí)間

統(tǒng)計(jì)窗口內(nèi)往上(往下)第n行值,當(dāng)前行不算

-- 組內(nèi)排序后艰亮,向后或向前偏移
-- 如果省略掉第三個(gè)參數(shù),默認(rèn)為NULL挣郭,否則補(bǔ)上迄埃。
select
    dp_id,
    mt,
    payment,
    LAG(mt,2) over(partition by dp_id order by mt) mt_new
from test2;
image.png
-- 組內(nèi)排序后,向后或向前偏移
-- 如果省略掉第三個(gè)參數(shù)兑障,默認(rèn)為NULL侄非,否則補(bǔ)上。
select
   dp_id,
   mt,
   payment,
   LEAD(mt,2,'1111-11') over(partition by dp_id order by mt) mt_new
from test2;
image.png

FIRST_VALUE, LAST_VALUE

使用場(chǎng)景:計(jì)算每個(gè)部門(mén)的最高工資與最低工資

-- FIRST_VALUE      獲得組內(nèi)當(dāng)前行往前的首個(gè)值
-- LAST_VALUE       獲得組內(nèi)當(dāng)前行往前的最后一個(gè)值
-- FIRST_VALUE(DESC) 獲得組內(nèi)全局的最后一個(gè)值
select
   dp_id,
   mt,
   payment,
   FIRST_VALUE(payment) over(partition by dp_id order by mt) payment_g_first,
   LAST_VALUE(payment) over(partition by dp_id order by mt) payment_g_last,
  FIRST_VALUE(payment) over(partition by dp_id order by mt desc) payment_g_last_global
from test2
ORDER BY dp_id,mt;
image.png

多維度

使用場(chǎng)景:計(jì)算每一類(lèi)圈子的觀看量流译,和每一類(lèi)圈子下每一個(gè)標(biāo)簽視頻的觀看量

-- grouping sets 
select 
       order_id,
       departure_date,
       count(*) as cnt
  from ord_test
 where order_id=410341346
 group by order_id,
       departure_date
 grouping sets (order_id,(order_id,departure_date))
;

---- 等價(jià)于以下
group by order_id
union all
group by order_id,departure_date

-- cube
select 
       order_id,
       departure_date,
       count(*) as cnt
  from ord_test
 where order_id=410341346
 group by order_id,
       departure_date
 with cube
 ;

---- 等價(jià)于以下
select count(*) as cnt from ord_test where order_id=410341346
union all
group by order_id
union all
group by departure_date
union all
group by order_id,departure_date

-- rollup
select 
       order_id,
       departure_date,
       count(*) as cnt
  from ord_test
 where order_id=410341346
 group by order_id,
       departure_date
 with rollup
 ;

---- 等價(jià)于以下
select count(*) as cnt from ord_test where order_id=410341346
union all
group by order_id
union all
group by order_id,departure_date

計(jì)算比當(dāng)前小的百分比

使用場(chǎng)景:計(jì)算當(dāng)前組內(nèi)比你小的人數(shù)比例

cume_list: 小于等于當(dāng)前值的行數(shù)/分組內(nèi)總行數(shù)

percent_rank:分組內(nèi)當(dāng)前行的RANK值-1/分組內(nèi)總行數(shù)-1

根窗口聚合函數(shù)使用相同

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末逞怨,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子福澡,更是在濱河造成了極大的恐慌叠赦,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,110評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件革砸,死亡現(xiàn)場(chǎng)離奇詭異眯搭,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)业岁,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,443評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)鳞仙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人笔时,你說(shuō)我怎么就攤上這事棍好。” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,474評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵借笙,是天一觀的道長(zhǎng)扒怖。 經(jīng)常有香客問(wèn)我,道長(zhǎng)业稼,這世上最難降的妖魔是什么盗痒? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,881評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮低散,結(jié)果婚禮上俯邓,老公的妹妹穿的比我還像新娘。我一直安慰自己熔号,他們只是感情好稽鞭,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,902評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著引镊,像睡著了一般朦蕴。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上弟头,一...
    開(kāi)封第一講書(shū)人閱讀 51,698評(píng)論 1 305
  • 那天吩抓,我揣著相機(jī)與錄音,去河邊找鬼赴恨。 笑死疹娶,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的嘱支。 我是一名探鬼主播,決...
    沈念sama閱讀 40,418評(píng)論 3 419
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼挣饥,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼除师!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起扔枫,我...
    開(kāi)封第一講書(shū)人閱讀 39,332評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤汛聚,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后短荐,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體倚舀,經(jīng)...
    沈念sama閱讀 45,796評(píng)論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,968評(píng)論 3 337
  • 正文 我和宋清朗相戀三年忍宋,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了痕貌。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,110評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡糠排,死狀恐怖舵稠,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤哺徊,帶...
    沈念sama閱讀 35,792評(píng)論 5 346
  • 正文 年R本政府宣布室琢,位于F島的核電站,受9級(jí)特大地震影響落追,放射性物質(zhì)發(fā)生泄漏盈滴。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,455評(píng)論 3 331
  • 文/蒙蒙 一轿钠、第九天 我趴在偏房一處隱蔽的房頂上張望巢钓。 院中可真熱鬧,春花似錦谣膳、人聲如沸竿报。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,003評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)烈菌。三九已至,卻和暖如春花履,著一層夾襖步出監(jiān)牢的瞬間芽世,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,130評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工诡壁, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留济瓢,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,348評(píng)論 3 373
  • 正文 我出身青樓妹卿,卻偏偏與公主長(zhǎng)得像旺矾,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子夺克,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,047評(píng)論 2 355