hive 計算分位數

hive裏面卻是有個percentile函數和percentile_approx函數,其使用方式爲percentile(col, p)、percentile_approx(col, p),p∈(0,1) 
其中percentile要求輸入的字段必須是int類型的,而percentile_approx則是數值相似型的均可以 
其實percentile_approx還有一個參數B:percentile_approx(col, p,B),參數B控制內存消耗的近似精度,B越大,結果的準確度越高。默認爲10,000。當col字段中的distinct值的個數小於B時,結果爲準確的百分位數。 
若是我要求多個分位數怎麼辦呢?,能夠把p換爲array(p1,p2,p3…),即app

percentile_approx(col,array(0.05,0.5,0.95),9999)函數


若是不放心的話,就給col再加個轉換: 內存

percentile_approx(cast(col as double),array(0.05,0.5,0.95),9999)ast


其輸出結果長這樣:di

[0.0,4001.0,4061.0]co


無法直接用,再加個轉換:cas

explode(percentile_approx(cast(col as double),array(0.05,0.5,0.95),9999))as percentile參數

相關文章
相關標籤/搜索