1、系统内置函数
1)查看系统自带的函数
hive> show functions;
2)显示自带的函数的用法
hive> desc function upper;
3)详细显示自带的函数的用法
hive> desc function extended upper;
2、常用聚合函数:
count()、sum()、max()、min()、avg()
3、空字段赋值 NVL( value,default_value):
NVL:给值为 NULL 的数据赋值,它的格式是 NVL( value,default_value)。它的功能是如果 value 为 NULL,则 NVL 函数返回 default_value 的值,否则返回 value 的值,如果两个参数都为 NULL ,则返回 NULL。其中 default_value 可以为字段,也可以为确定的值。
查询:如果员工的 comm 为 NULL,则用 -1 代替
hive (default)> select comm,nvl(comm, -1) from emp;
4、行转列、列转行:
(1)CONCAT(string A/col, string B/col…):
返回输入字符串连接后的结果,支持任意个输入字符串或字段 ;
拼接字符:
结果显示:a-b-c
(2)CONCAT_WS(separator, str1, str2,...):
第一个参数为一个分隔符,后面都是字符串或字段。如:
结果显示:a-b-c
注意: CONCAT_WS must be "string or array<string>,必须为 String 或 String 数组
5、常用日期函数:
unix_timestamp: 返回当前或指定时间的时间戳
select unix_timestamp();
select unix_timestamp("2020-10-28",'yyyy-MM-dd');
from_unixtime:将时间戳转为日期格式
select from_unixtime(1603843200);
current_date:当前日期
select current_date;
current_timestamp:当前的日期加时间
select current_timestamp;
to_date:抽取日期部分
select to_date('2020-10-28 12:12:12');
year:获取年
select year('2020-10-28 12:12:12');
month:获取月
select month('2020-10-28 12:12:12');
day:获取日
select day('2020-10-28 12:12:12');
hour:获取时
select hour('2020-10-28 12:12:12');
minute:获取分
select minute('2020-10-28 12:12:12');
second:获取秒
select second('2020-10-28 12:12:12');
weekofyear:当前时间是一年中的第几周
select weekofyear('2020-10-28 12:12:12');
dayofmonth:当前时间是一个月中的第几天
select dayofmonth('2020-10-28 12:12:12');
months_between: 两个日期间的月份
select months_between('2020-04-01','2020-10-28');
add_months:日期加减月
select add_months('2020-10-28',-3);
datediff:两个日期相差的天数
select datediff('2020-11-04','2020-10-28');
date_add:日期加天数
select date_add('2020-10-28',4);
date_sub:日期减天数
select date_sub('2020-10-28',-4);
last_day:日期的当月的最后一天
select last_day('2020-02-30');
date_format (): 格式化日期
select date_format('2020-10-28 12:12:12','yyyy/MM/dd HH:mm:ss');
6、常用取整函数:
round: 四舍五入,只保留整数位
select round(3.14);
select round(3.54);
ceil: 向上取整
select ceil(3.14);
select ceil(3.54);
floor: 向下取整
select floor(3.14);
select floor(3.54);
7、常用字符串操作函数:
upper: 转大写
select upper('low');
lower: 转小写
select lower('LOW');
length: 长度
select length("atguigu");
trim: 前后去空格
select trim(" atguigu ");
lpad: 向左补齐,到指定长度。也可以当做截取字符串使用
select lpad('atguigu',9,'g');
结果:ggatguigu
select lpad('atguigu',3,'g');
结果:atg
rpad: 向右补齐,到指定长度。也可以当做截取字符串使用
select rpad('atguigu',9,'g');
结果:atguigugg
select rpad('atguigu',4,'g');
结果:atgu
regexp_replace:使用正则表达式匹配目标字符串,匹配成功后替换!
SELECT regexp_replace('2020/10/25', '/', '-');
结果:2020-10-25
8、集合操作(集合类型用得少,所以集合函数也用得少):
size: 集合中元素的个数
select size(friends) from test3;
map_keys: 返回 map 中的 key
select map_keys(children) from test3;
map_values: 返回 map 中的 value
select map_values(children) from test3;
array_contains: 判断 array 中是否包含某个元素
select array_contains(friends,'bingbing') from test3;
sort_array: 将 array 中的元素排序
select sort_array(friends) from test3;
grouping_set: 多维分析