1.函数分类
2.操作符
A = B(等价A == B) 值相等
A <==> B Equals(两个同时为Null为真,只有一个Null为假,否则Equals)
A <>B(等价A!=B) 不等于(同Null为假,只有一个NUll为真,否则Equals取反)
A [NOT] BETWEEN B AND C [B,C]A是否在B,C之间(包含边界B,C)
A IS [NOT] NULL A是否为Null
A [NOT] LIKE B 同MySQL Like操作符
A RLIKE B (等价A REGEXP B) 模糊匹配(正则)
A DIV B A除以B的整数部分(小数直接摄取)
3.复杂对象
map(key1, value1, key2, value2, ...) 用指定的键值创建一个Map对象
struct(val1, val2, val3, ...) 用指定的值创建一个struct对象,字段名依次为col1.col2.....
named_struct(name1, val1, name2, val2, ...) 用指定的字段名,字段值创建一个struct对象
array(val1, val2, ...) 用指定的值创建一个array对象
create_union(tag, val1, val2, ...) 使用标记参数指向的值创建一个联合类型
A[n] 获取数组对象A下标为n的值
M[key] 获取键值对对象M的键为key的值
S.x 获取结构体S的字段x的值
size(Map<K.V>) size(Array<T>) 返回Map或数组的元素个数
map_keys(Map<K.V>) 返回Map的键数组对象
map_values(Map<K.V>) 返回Map的值数组对象
array_contains(Array<T>, value) 返回Map是否包含指定的值
sort_array(Array<T>) 数组排序(升序)
4.UDF函数
4.1 数学函数
round(DOUBLE a) 返回a的四舍五入的值
round(DOUBLE a, INT d) 返回a四舍五入保留d位小数的值
bround(DOUBLE a [, INT d]) 返回a的高斯四舍五入的值
floor(DOUBLE a) 返回a向上取整的值
ceil(DOUBLE a), ceiling(DOUBLE a) 返回a向下取整的值
rand(), rand(INT seed) 返回一个随机数
greatest(T v1, T v2, ...) 返回指定值中最大的值
least(T v1, T v2, ...) 返回指定值中最小的值
更多数学函数见官网 https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF
4.2 类型转换函数
cast(expr as <type>) 将 expr转换为<type>类型
4.3 日期函数
from_unixtime(bigint unixtime[, string format]) 将一个时间戳转换为指定格式的字符串,默认(yyyy-MM-dd)
unix_timestamp() 获取当前时间时间戳(秒)
unix_timestamp(string date [, string pattern]) 将一个pattern格式(默认yyyy-MM-dd hh:mm:ss)的字符串转换为时间戳
to_date(string timestamp) 将一个时间戳转换为yyyy-MM-dd
quarter(date/timestamp/string) 返回日期、时间戳或范围为1到4的字符串的季度
year(string date) 返回字符串日期的年 year("1970-01-01 00:00:00") = 1970, year("1970-01-01") = 1970
month(string date) 返回字符串日期的月
day(string date) dayofmonth(date) 返回字符串日期的天
hour(string date) 返回字符串日期的小时
minute(string date) 返回字符串日期的分钟
second(string date) 返回字符串日期的秒
weekofyear(string date)返回字符串日期的星期几
extract(field FROM source) 从时间source中提取属性信息
select extract(month from "2016-10-20") results in 10.
select extract(hour from "2016-10-20 05:06:07") results in 5.
select extract(dayofweek from "2016-10-20 05:06:07") results in 5.
select extract(month from interval ‘1-3‘ year to month) results in 3.
select extract(minute from interval ‘3 12:20:30‘ day to second) results in 20.
原文地址:https://www.cnblogs.com/NightPxy/p/9153255.html