Hive内置函数大全
目录
Hive内置函数大全
1.复合类型构造函数
2 复合类型操作符
3 数值计算函数
4 日期函数
5 条件函数
6 字符串函数
7 汇总统计函数(UDAF)
8 表格生成函数(UDTF)
9 类型转换函数
10 数学函数
11 数学运算
12 逻辑运算
13 排序函数
14 混合函数
15 XPath解析XML函数
1.复合类型构造函数
函数 | 描述 | 举例 |
map | map(key0, value0, key1, value1…)——使用给定的键/值对创建映射 | |
struct | struct(col1, col2, col3,…)——用给定的字段值创建一个struct。STRUCT可以包含不同数据类型的元素。这些元素可以通过”点语法”的方式来得到所需要的元素 | |
named_struct | named_struct(name1, val1, name2, val2,…)——用给定的字段名和值创建一个结构体,使用给定的表达式,构造一个指定列名的 struct 数据结构 | |
array | array(n0, n1…)——用给定的元素创建一个数组 | |
create_union | create_union (tag, val1, val2, …)使用给定的 tag 和表达式,构造一个 uniontype 数据结构。tag 表示使用第 tag 个 表达式作为 uniontype 的 value |
2 复合类型操作符
函数 | 描述 | 举例 |
Map[key];size(Map<k .V>) | 返回 map 结构 M 中 key 对应的 value,没有对应的 key 返回 NULL;返回map类型的长度 | |
S.x | 返回 struct 结构 S 中名为 x 的元素。 |
|
A[n];size(Array) | 返回数组 A 中第 n 个索引的元素值,数组的起始下标为0;返回array类型的长度 | |
array_contains(array, value) | 如果数组包含值,则返回TRUE。 |
3 数值计算函数
函数 | 描述 | 举例 |
round(x[,d]) | 四舍五入(x[, d])——将x四舍五入到d的小数位 | |
floor(x) | 求不大于x的最大整数,向下取整函数 | |
ceil(x),ceiling(x) | 求不小于x的最小整数,向上取整函数 | |
rand([seed]) | 返回0到1之间的伪随机数 | |
exp(x) | 返回e的x次方 | |
log10(x) | 返回以10为底的x的对数 | |
log2(x) | 返回以2为底的x的对数 | |
log([b], x) | 返回以b为底的x的对数 | |
pow(x1, x2),power(x1, x2) | 取x1的x2次方 | |
sqrt(x) | 开平方函数,返回√x | |
bin(n) | 返回n的二进制 | |
hex(n, bin, or str) | 将参数转换为十六进制, 如果参数是字符串,则为字符串中的每个字符返回两个十六进制数字。 如果参数是数字或二进制,则返回十六进制表示 | |
unhex(str) | 将十六进制参数转换为二进制 | |
conv(num, from_base, to_base) | 将num从from_base转换为to_base,如果to_base是负数,则将num视为带符号整数,否则将其视为无符号整数。 | |
abs(x) | 返回x的绝对值 | |
pmod(a,b) | a对b取模 | |
sin(x) | 返回sinx (x以弧度为单位) | |
asin(x) | 返回arcsin (x)如果-1<=x<=1,否则返回NULL | |
cos(x) | 返回cosx (x以弧度为单位) | |
acos(x) | 返回arccos (x)如果-1<=x<=1,否则返回NULL | |
positive(x) | 返回x | |
negative(x) | 返回-x |
4 日期函数
函数 | 描述 | 举例 |
from_unixtime(unix_time, format) | UNIX时间戳转日期函数,返回指定格式的unix_time | |
unix_timestamp(date[, pattern]) | 将时间转换为数字,获取当前(指定)UNIX时间戳函数 | |
current_timestamp | 获取当前UNIX时间戳函数 | |
to_date(expr) | 提取date或datetime表达式expr的date部分,日期时间转日期函数 | |
year(param) | 返回日期/时间戳/间隔的year | |
month(param) | 返回日期/时间戳/间隔的month | |
day(param) | 返回日期/时间戳/间隔的day | |
hour(param) | 返回日期/时间戳/间隔的hour | |
minute(param) | 返回日期/时间戳/间隔的minute | |
second(param) | 返回日期/时间戳/间隔的second | |
weekofyear(date) | 返回给定日期的年份的星期。一周被认为从周一开始,第一周是>第3天的第一周。 | |
datediff(date1, date2) | 返回date1和date2之间的天数 | |
date_add(start_date, num_days) | 日期增加函数,返回start_date之后的num_days日期。 | |
date_sub | 日期减少函数,返回start_date之前的num_days日期。 |
5 条件函数
函数 | 描述 | 举例 |
IF(expr1,expr2,expr3) | 如果expr1为真(expr1 <> 0和expr1 <> NULL),则If()返回expr2;否则返回expr3。IF()返回一个数值或字符串值,这取决于使用它的上下文。 | |
CASE | ① CASE WHEN a THEN b [WHEN cTHEN d]... [ELSE e] END 这种case,case后面没有表达式,用于处理单个列的查询结果 ②CASE a WHEN b THEN c [WHENd THEN e]... [ELSE f] END 这种CASE A和if差不多,如果a等于b,那么返回c;如果a等于d,那么返回e;否则返回f | |
COALESCE(T v1, T v2, …) | 返回参数中的第一个非空值;如果所有值都为NULL,那么返回NULL |
6 字符串函数
函数 | 描述 | 举例 |
ascii(str) | 返回str的第一个字符的数值 | |
base64(bin) | 将参数从二进制转换为以64为基数的字符串 | |
concat(str1, str2, ... strN | 返回str1、str2、…strN或concat(bin1, bin2,…返回二进制数据bin1, bin2,…binN 如果任何参数为空,则返回NULL。 | |
concat_ws(separator, [string | array(string)]+) | 返回由分隔符分隔的字符串的连接。 | |
format_number(X, D or F) | 将数字X格式化为'#,###,###。,四舍五入到D位小数,或者使用指定的F格式进行格式化,并将结果作为字符串返回。如果D为0,则结果没有小数点或小数部分。这应该像MySQL的格式一样工作 | |
substr(str, pos[, len]),substring(str, pos[, len]) | 返回从pos开始的长度为len的字节数组片段 | |
instr(str, substr) | 返回str中第一次出现substr的索引 | |
length(str | binary) | 返回二进制数据中的str长度或字节数 | |
locate(substr, str[, pos]) | 返回位置pos之后str中第一次出现substr的位置 | |
printf(String format, Obj... args) | 该函数可以根据printf样式的格式字符串格式化字符串 | |
str_to_map(text, delimiter1, delimiter2) | 使用两个分隔符将文本分割为键值对。第一个分隔符分隔对,第二个分隔符分隔键和值。如果只给出一个参数,则使用默认分隔符:','作为delimiter1,':'作为delimiter2。 | |
unbase64(str) | 将参数从基本的64字符串转换为二进制 | |
upper(str),ucase(str) | 返回所有字符都更改为大写的str | |
lower(str),lcase(str) | 返回所有字符都更改为小写的str | |
trim(str) | 从str中删除前导和尾随空格字符 | |
ltrim(str) | 从str中删除前导空格字符 | |
rtrim(str) | 从str中删除尾随空格字符 | |
regexp_replace(str, regexp, rep) | 用rep替换所有匹配regexp的str子字符串 | |
regexp_extract(str, regexp[, idx]) | 提取匹配regexp的组 | |
parse_url(url, partToExtract[, key]) | 从URL中提取一部分 | |
get_json_object(json_txt, path) | 根据指定的json路径从json字符串中提取json对象,并返回提取的json对象的json字符串。如果输入的json字符串无效,则返回null。 | |
space(n) | 返回n个空格 | |
repeat(str, n) | 重复str n次 | |
lpad(str, len, pad) | 返回str,用pad左填充到len的长度 | |
rpad(str, len, pad) | 返回str,右填充pad到len的长度 | |
split(str, regex) | 拆分匹配正则表达式的str | |
find_in_set(str,str_array) | 返回str_array中第一个出现的str,其中str_array是一个逗号分隔的字符串。如果其中一个参数为空,则返回null。如果第一个参数有逗号,则返回0。 | |
sentences(str, lang, country) | 将str拆分为句子数组,其中每个句子都是单词数组。“lang”和“country”参数是可选的,如果省略,则使用默认 |
7 汇总统计函数(UDAF)
函数 | 描述 |
①count(*)②count(expr)③count(DISTINCT expr[, expr...]) | 个数统计:①返回检索到的行总数,包括包含空值的行②返回提供的表达式为非空的行数③返回所提供的表达式惟一且非空的行数。 |
sum(x) | 总和统计,返回一组数字的和 |
avg(x) | 平均值统计 |
min(x) | 最小值统计 |
max(x) | 最大值统计 |
var_pop(x) | 非空集合总体变量函数 |
var_samp(x) | 非空集合样本变量函数 |
stddev_pop(x) | 总体标准偏离函数 |
stddev_samp | 样本标准偏离函数 |
percentile(expr, pc) | 中位数函数,返回expr在pc上的百分位数(范围:[0,1])。pc可以是双数组或双数组 |
percentile_approx(expr, pc, [nb]) | 近似中位数函数 |
histogram_numeric(expr, nb) | 直方图 |
collect_set(x) | 集合去重数,返回一组消除了重复元素的对象 |
collect_list(x) | 集合不去重函数,返回具有重复项的对象列表 |
8 表格生成函数(UDTF)
函数 | 描述 |
explode(a) | 将数组a的元素分隔为多行,或将映射的元素分隔为多行和多列 |
9 类型转换函数
函数 | 描述 |
binary(a) | 将a转换为二进制 |
cast | 基础类型之间强制转换 |
10 数学函数
函数 | 描述 |
= | 等值比较 |
<=> | 等值比较 |
<>和!= | 不等值比较 |
< | 小于比较 |
<= | 小于等于比较 |
>= | 大于比较 |
IS NULL | 空值判断 |
IS NOT NULL | 非空判断 |
LIKE | LIKE比较 |
RLIKE | JAVA的LIKE操作 |
REGEXP | REGEXP操作(如果str匹配REGEXP,则返回true,否则返回false) |
11 数学运算
函数 | 描述 |
+ | 加法操作 |
– | 减法操作 |
* | 乘法操作 |
/ | 除法操作 |
% | 取余操作 |
& | 位与操作 |
| | 位或操作 |
^ | 位异或操作 |
~ | 位取反操作 |
12 逻辑运算
函数 | 描述 |
AND 、&& | 逻辑与操作 |
OR 、|| | 逻辑或操作 |
NOT、! | 逻辑非操作 |
13 排序函数
rank() | 相同的排序是一样的,但是下一个小的会跳着排序,比如 等级 排序 | |
dense_rank() | 相同的排序相同,下一个小的会紧挨着排序,这样总个数是相对减少的,适合求某些指标前几个等级的个数。 | |
row_number() | 顺序排序,总个数是不变的,适合求某些值的前几名 |
14 混合函数
函数 | 描述 |
java_method(class,method[,arg1[,arg2..]]) | 使用反射调用方法 |
reflect(class,method[,arg1[,arg2..]]) | 使用反射调用方法 |
hash(a1, a2, ...) | 返回参数的哈希值 |
15 XPath解析XML函数
函数 | 描述 |
xpath(xml, xpath) | 返回匹配xpath表达式的xml节点中的值的字符串数组 |
xpath_string(xml, xpath) | 返回匹配xpath表达式的第一个xml节点的文本内容 |
xpath_boolean(xml, xpath) | 计算布尔xpath表达式 |
xpath_short(xml, xpath) ,xpath_int, xpath_long,xpath_float, xpath_double, xpath_number | 返回与xpath表达式匹配的short... |