Hive - 内置函数

本章介绍 Hive 中可用的内置函数。这些函数看起来与 SQL 函数非常相似,只是用法不同。

内置函数

Hive 支持以下内置函数:

返回类型 签名 描述
BIGINT round(double a) 返回 double 的四舍五入后的 BIGINT 值。
BIGINT floor(double a) 返回等于或小于 double 的最大 BIGINT 值。
BIGINT ceil(double a) 返回等于或大于 double 的最小 BIGINT 值。
double rand(), rand(int seed) 返回一个逐行变化的随机数。
string concat(string A, string B,...) 返回将 B 连接到 A 后得到的字符串。
string substr(string A, int start) 返回从起始位置到字符串 A 末尾的 A 子字符串。
string substr(string A, int start, int length) 返回从起始位置开始的给定长度的 A 子字符串。
string upper(string A) 返回将 A 的所有字符转换为大写后得到的字符串。
string ucase(string A) 同上。
字符串 lower(string A) 返回将 B 的所有字符转换为小写后得到的字符串。
字符串 lcase(string A) 同上。
字符串 trim(string A) 返回从 A 两端修剪空格后得到的字符串。
字符串 ltrim(string A) 返回从 A 开头(左侧)修剪空格后得到的字符串A。
字符串 rtrim(string A) rtrim(string A) 它返回从 A 的末尾(右侧)修剪空格后得到的字符串。
字符串 regexp_replace(字符串 A, 字符串 B, 字符串 C) 它返回用 C 替换 B 中所有与 Java 正则表达式语法匹配的子字符串后得到的字符串。
int size(Map<K.V>) 它返回映射类型中的元素数量。
int size(Array<T>) 它返回数组类型中的元素数量。
<type> 的值 cast(<expr> as <type>) 它将表达式 expr 的结果转换为 <type> 例如 cast('1' as BIGINT) 将字符串 '1' 转换为其整数表示形式。如果转换不成功,则返回 NULL。
string from_unixtime(int unixtime) 将 Unix 纪元(1970-01-01 00:00:00 UTC)的秒数转换为表示当前系统时区该时刻的时间戳的字符串,格式为"1970-01-01 00:00:00"
string to_date(string timestamp) 返回时间戳字符串的日期部分:to_date("1970-01-01 00:00:00") = "1970-01-01"
int year(string date) 返回日期或时间戳字符串的年份部分:year("1970-01-01 00:00:00") = 1970, year("1970-01-01") = 1970
int month(string date) 返回日期或时间戳字符串的月份部分:month("1970-11-01 00:00:00") = 11, month("1970-11-01") = 11
int day(string date) 返回日期或时间戳字符串的日期部分:day("1970-11-01 00:00:00") = 1, day("1970-11-01") = 1
string get_json_object(string json_string, string path) 根据指定的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 聚合函数相同。

返回类型 签名 描述
BIGINT count(*), count(expr), count(*) - 返回检索到的总行数。
DOUBLE sum(col), sum(DISTINCT col) 它返回组中元素的总和或组中列的不同值的总和。
DOUBLE avg(col), avg(DISTINCT col) 它返回组中元素的平均值或组中列的不同值的平均值组。
DOUBLE min(col) 返回组中列的最小值。
DOUBLE max(col) 返回组中列的最大值。