Hive中的函数(一)
一.系统内置函数
1.查看函数
显示hive中的所有函数:show function;
查看某个函数的用法:desc function array;
2.1时间戳转日期
select from_unixtime(15524625468);
select from_unixtime(15524625468,yyyymmdd);
select from_unixtime(15524625468,yyyy-mm-dd HH-mm-ss);
2.2.获取当前时间戳
select unix_timestamp();
2.3.日期转时间戳
select unix_timestamp('2020-04-15 15:30:00');
2.4.计算时间差
select datediff('2019-12-04 16:20:00');
2.5.查询当月第几天
select dayofmonth(current_date);
2.6.月末
select last_day(current_date);
2.7.当月第一天
select date_sub(current_date,dayofmonth(current_date)-1);
2.8.下个月第一天
select add_months(date_sub(current_date,dayofmonth(current_date)-1)-1);
2.9.当前日期
select current_date;
3.字符串函数
1.lower---转小写
2.upper--转大写
3.length--字符串长度、字符数
4.concat--字符串拼接
5.cancat_ws--指定分隔符
6.substr--求子串
4.类型转换函数
cast(value as type)--类型转换
select cast('1234' as int)+1;
5.数学函数
1.round--四舍五入
2.ceil--向上取整
3.floor--向下取整
6.判断为空函数
nv1(expr1,expr2)
二.窗口函数
1.语法
1.1over开窗
select ,count() over() from t_order;
注意:
窗口函数是针对每一行数据的.
如果over中没有参数,默认的是全部结果集
1.2partition by子句
在over窗口中进行分区,对某一列进行分区统计,窗口的大小就是分区的大小
1.3order by子句
order by子句会让输入的数据强制排序
2.序列函数
1.1.NTILE
用于将分组数据按照顺序切分成n片,返回当前切片值
1.2.LAG和LEAD函数
lag返回当前数据行的上一行数据
lead返回当前数据行的下一行数据
1.3.fifirst_value和last_value
fifirst_value 取分组内排序后,截止到当前行,第一个值
last_value 分组内排序后,截止到当前行,最后一个值
3.排名函数
row_number:从1开始,按照顺序,生成分组内记录的序列,row_number()的值不会存在
重复,当排序的值相同时,按照表中记录的顺序进行排列
RANK():生成数据项在分组中的排名,排名相等会在名次中留下空位
DENSE_RANK(): 生成数据项在分组中的排名,排名相等会在名次中不会留下空位
今天的分享就先到这里啦。