hive string转decimal_数据仓库工具–Hive(归纳笔记第五部分: 函数一)
写在开头:
本章是Hive教程第五部分归纳,着重于归纳Hive函数
文章内容输出来源:拉勾教育大数据高薪训练营
函数在做HQL开发时经常被用到,也需要不断练习才能掌握,这里将介绍hive的内置函数,时间日期函数,字符串函数,数学函数,函数二部分将介绍条件函数,UDTF函数,窗口函数,排名函数,序列函数等,最后加上sql的一些简单案例来帮助大家熟练使用这些函数。
Hive函数很重要,所以下文会将所有常用的函数做一个梳理,配合运行结果,让大家更容易学习这些知识。
在学习这些函数时遇到很多问题,尤其是窗口函数,排名函数,序列函数等,从对知识点一开始的一头雾水到越来越清晰,首先感谢授课老师谆谆不倦的教导,每一次的教学都加深了我对这些函数的理解,其次感谢Bob导师,课后在复盘时因为粗心遇到各种问题都是他帮我解决。最后感谢班主任在学习群中的督促,尤其像我这样有严重拖延症的人来说,能让我能够按时完成相应的学习任务。
1.首先介绍HIVE系统内置函数
— 查看系统自带函数
show functions;
— 显示自带函数的用法
desc function upper;
desc function extended upper;
2.日期函数是hive函数模块中很重要的模块
— 查看当前前日期
select current_date;
select unix_timestamp();
— 建议使用current_timestamp,有没有括号都可以
select current_timestamp();
— 时间戳转日期
select from_unixtime(1505456567);
select from_unixtime(1505456567, 'yyyyMMdd');
select from_unixtime(1505456567, 'yyyy-MM-dd HH:mm:ss');
— 日期转时间戳
select unix_timestamp('2019-09-15 14:23:00');
— 计算时间差
//查询20200418到20191112差了几天
select datediff('2020-04-18','2019-11-21');
//同理
select datediff('2019-11-21', '2020-04-18');
— 查询今天是当月第几天
select dayofmonth(current_date);
— 计算月末:
select last_day(current_date);
— 查询当月第1天:
select date_sub(current_date, dayofmonth(current_date)-1)
— 下个月第1天:
select add_months(date_sub(current_date,dayofmonth(current_date)-1), 1)
— 字符串转时间(字符串必须为:yyyy-MM-dd格式)
select to_date('2020-01-01');
select to_date('2020-01-01 12:12:12');
— 日期、时间戳、字符串类型格式化输出标准时间格式
select date_format(current_timestamp(), 'yyyy-MM-dd HH:mm:ss');
select date_format(current_date(), 'yyyyMMdd');
select date_format('2020-06-01', 'yyyy-MM-dd HH:mm:ss');
— 计算emp表中,每个人的工龄
select *, round(datediff(current_date, hiredate)/365,1) workingyears from emp;
字符串函数
— 转小写。lower
select lower('HELLO WORLD');
— 转大写。upper
select upper(ename), ename from emp;
— 求字符串长度。length
select length(ename), ename from emp;
— 字符串拼接。 concat / ||
select empno || ” ” ||ename idname from emp;
select concat(empno, ” ” ,ename) idname from emp;
— 指定分隔符。concat_ws(separator, [string | array(string)]+)
SELECT concat_ws(‘.’, ‘www’, array(‘lagou','com’));
select concat_ws(” “, ename, job) from emp;
— 求子串。substr
SELECT substr(‘www.lagou.com’, 5);
SELECT substr(‘www.lagou.com’, -5);
SELECT substr(‘www.lagou.com’, 5, 5);
— 字符串切分。split,注意 ‘.’ 要转义
select split('www.lagou.com', '.');
数学函数
— 四舍五入。round
select round(314.15926);
select round(314.15926, 2);
select round(314.15926, -2);
— 向上取整。ceil
select ceil(3.1415926);
— 向下取整。floor
select floor(3.1415926);
写在结尾:
本章主要介绍了内置函数,时间日期函数,字符串函数和数学函数,其中日期函数在自己使用时还是会有很多问题。
下一章将介绍函数比较难的部分。
更多推荐
所有评论(0)