Hive - Built-in Functions

本章介绍了Hive中可用的内置功能.这些函数看起来与SQL函数非常相似,除了它们的用法.

内置函数

Hive支持以下内置函数:

返回类型签名描述
BIGINTround(double a)它返回double的舍入BIGINT值.
BIGINTfloor(double a)返回等于或小于double的最大BIGINT值.
BIGINTceil(double a)返回等于或大于double的最小BIGINT值.
doublerand(),rand(int seed)它返回一个随行变化的随机数.
stringconcat(string A,str B,...)它返回在A之后连接B得到的字符串.
stringsubstr(字符串A,int start)它返回从开始位置到结束的A的子字符串字符串A.
字符串substr(字符串A,int start,int长度)它从给定长度的起始位置开始返回A的子串.
stringupper(字符串A)它返回将A的所有字符转换为大写字符所产生的字符串.



stringucase(string A)与上述相同.
stringlower(字符串A)它返回将B的所有字符转换为小写的字符串.
stringlcase(字符串A)与上述相同.
stringtrim(字符串A)它返回从A两端修剪空格得到的字符串.
stringltrim(字符串A)它返回从A的开头(左侧)修剪空格所产生的字符串.
stringrtrim(string A)rtrim(string A )
它返回从A的结尾(右侧)修剪空格所产生的字符串.
stringregexp_replace(字符串A,字符串B,字符串C)它返回替换B中与Java常规字符串匹配的所有子字符串的字符串表达式语法与C.
intsize(地图< K.V> ;)它返回地图类型中元素的数量.
intsize(Array< T>)
< type>cast(< expr> as< type>)它将表达式expr的结果转换为< type>例如cast('1'作为BIGINT)将字符串'1'转换为整数表示.如果转换不成功,则返回NULL.
stringfrom_unixtime (int unixtime)将Unix纪元(1970-01-01 00:00:00 UTC)的秒数转换为表示当前系统时间内该时刻的时间戳的字符串区域格式为"1970-01-01 00:00:00"
stringto_date(字符串时间戳)它返回时间戳字符串的日期部分:to_date("1970-01-01 00:00:00")="1970- 01-01"
intyear(字符串日期)它返回日期或时间戳字符串的年份部分:年("1970-01-01 00:00:00")= 1970,年("1970-01-01")= 1970
int月(字符串日期)它返回日期或时间戳字符串的月份部分:月份("1970-11-01 00:00:00")= 11,月份("1970-11-01")= 11
intday(字符串日期)它返回日期或时间戳字符串的日期部分:day("1970-11-01 00:00:00")= 1,day ("1970-11-01")= 1
stringget_json_object (字符串json_string,字符串路径)它根据指定的json路径从json字符串中提取json对象,并返回提取的json对象的json字符串.如果输入的json字符串无效,则返回NULL.

示例

以下查询演示了一些内置函数:

round()函数

hive> SELECT round(2.6) from temp;

成功执行查询后,您会看到以下响应:

3.0

floor()函数

hive> SELECT floor(2.6) from temp;

成功执行查询后,您会看到以下回复:

2.0

ceil()函数

hive> SELECT ceil(2.6) from temp;

成功执行查询后,您会看到以下回复:

3.0

聚合函数

Hive支持以下内置聚合函数.这些函数的用法与SQL聚合函数相同.

返回类型签名描述
BIGINTcount(*),count(expr),count(*) - 返回总数检索行.
DOUBLEsum(col),sum(DISTINCT col )它返回组中元素的总和或组中列的不同值的总和.
DOUBLEavg(col),avg(DISTINCT col)它返回平均值组中的元素或组中列的不同值的平均值.
DOUBLEmin(col)它返回组中列的最小值.
DOUBLEmax(col)它返回组中列的最大值.