1. 程式人生 > >hive聚合函數

hive聚合函數

限制 tac author 方差 center pos userinfo tar cat

聚合函數

下表為Hive內置的聚合函數。

返回類型

函數名

描述

BIGINT

count(*)

count(expr)

count(DISTINCT expr[, expr_.])

count(*) – 返回檢索到的行的總數,包括含有NULL值的行。count(expr) – 返回expr表達式不是NULL的行的數量count(DISTINCT expr[, expr]) – 返回expr是唯一的且非NULL的行的數量

DOUBLE

sum(col)

sum(DISTINCT col)

對組內某列求和(包含重復值)或者對組內某列求和(不包含重復值)

DOUBLE

avg(col),

avg(DISTINCT col)

對組內某列元素求平均值者(包含重復值或不包含重復值)

DOUBLE

min(col)

返回組內某列的最小值

DOUBLE

max(col)

返回組內某列的最大值

DOUBLE

variance(col),

var_pop(col)

返回組內某個數字列的方差

DOUBLE

var_samp(col)

返回組內某個數字列的無偏樣本方差

DOUBLE

stddev_pop(col)

返回組內某個數字列的標準差

DOUBLE

stddev_samp(col)

返回組內某個數字列的無偏樣本標準差

DOUBLE

covar_pop(col1, col2)

返回組內兩個數字列的總體協方差

DOUBLE

covar_samp(col1, col2)

返回組內兩個數字列的樣本協方差

DOUBLE

corr(col1, col2)

返回組內兩個數字列的皮爾遜相關系數

DOUBLE

percentile(BIGINT col, p)

返回組內某個列精確的第p位百分數,p必須在0和1之間

array<double>

percentile(BIGINT col, array(p1

[, p2]...))

返回組內某個列精確的第p1,p2,……位百分數,p必須在0和1之間

DOUBLE

percentile_approx(DOUBLE col, p [, B])

返回組內數字列近似的第p位百分數(包括浮點數),參數B控制近似的精確度,B值越大,近似度越高,默認值為10000。當列中非重復值的數量小於B時,返回精確的百分數

array<double>

percentile_approx(DOUBLE col, array(p1 [, p2]...) [, B])

同上,但接受並返回百分數數組

array<struct {‘x‘,‘y‘}>

histogram_numeric(col, b)

使用b個非均勻間隔的箱子計算組內數字列的柱狀圖(直方圖),輸出的數組大小為b,double類型的(x,y)表示直方圖的中心和高度

array

collect_set(col)

返回消除了重復元素的數組

array

collect_list(col)

返回允許重復元素的數組

INTEGER

ntile(INTEGER x)

該函數將已經排序的分區分到x個桶中,並為每行分配一個桶號。這可以容易的計算三分位,四分位,十分位,百分位和其它通用的概要統計

內置 Table-Generating函數(UDTF)

正常的用戶定義函數,如concat,輸入一個單行然後輸出一個單行,但table-generating函數將一個單輸入行轉換為多個輸出行。下表為Hive內置的table-generating函數。

返回類型

函數名

描述

N rows

explode(ARRAY)

參數列為數組類型,將數組數據中的每個元素做為一行返回

N rows

explode(MAP)

將輸入map中的每個鍵值對轉換為兩列,一列為key,另一列為value,然後返回新行

inline(ARRAY<STRUCT[,STRUCT]>)

分解struct數組到表中

Array Type

explode(array<TYPE> a)

對於數組a中的每個元素,該函數產生包含該元素的行For

元組

json_tuple(jsonStr, k1, k2, ...)

參數為一組鍵k1,k2……和JSON字符串,返回值的元組。該方法比 get_json_object 高效,因為可以在一次調用中輸入多個鍵

元組

parse_url_tuple(url, p1, p2, ...)

該方法同parse_url() 相似,但可以一次性提取URL的多個部分,有效的參數名稱為: HOST, PATH, QUERY, REF, PROTOCOL, AUTHORITY, FILE, USERINFO, QUERY:<KEY>

N rows

posexplode(ARRAY)

行為與參數為數組的explode方法相似,但包含項在原始數組中的位置,返回(pos,value)的二元組

stack(INT n, v_1, v_2, ..., v_k)

將v_1, ..., v_k 分為n行,每行包含n/k列,n必須為常數

使用語法”SELECT udtf(col) AS colAlias...”有以下幾點限制:

  • 在SELECT中不允許再有其他表達式:不支持SELECT pageid, explode(adid_list) AS myCol...
  • UDTF不能夠嵌套使用:不支持SELECT explode(explode(adid_list)) AS myCol...
  • 不支持GROUP BY /CLUSTER BY / DISTRIBUTE BY / SORT BY:不支持SELECT explode(adid_list) AS myCol ... GROUP BY myCol

hive聚合函數