Hive是搭建在Hadoop上的数仓基础框架,能够将结构化底层数据映射在数据库表中,提供类SQL查询功能,并将其转化为MapReduce任务来进行执行。
hive函数的划分业界有很多方式,小火龙认为,可分为“Hive基础函数”和“Hive进阶函数”,本期主要总结“Hive基础函数”,让大家在5min之内可以有一个比较好的认知。基础函数可分为以下六个方向。
1、数字函数
floor(double x):返回小于x的最大整值
【input:floor(2.4);output:2】
ceil(double x):返回大于x的最小整值
【input:floor(2.4);output:3】
rand(int seed):返回随机数,seed为随机因子
round(double x, int n):返回x保留n位四舍五入
【input:round(2.442, 2);output:2.44】
2、字符串函数
length(string1):返回string1长度
【input:length('abc');output:3】
concat(string1, string2):返回拼接string1及string2后的字符串
【input:concat('a', 'b');output:'ab'】
concat_ws(sep, string1, string2):返回按指定分隔符拼接的字符串
【input:concat_ws(',', 'a', 'b', 'c');output:'a,b,c'】
lower(string1):返回小写字符串,同lcase(string1)
【input:lower('AB');output:'ab'】
upper(string1):返回大写字符串,同ucase(string1)
【input:upper('ab');output:'AB'】
trim(string1):去除字符串左右空格
【input:trim(' ab ');output:'ab'】
ltrim(string1):去除字符串左空格
【input:ltrim(' ab ');output:'ab '】
rtrim(string1):去除字符串右空格
【input:rtrim(' ab ');output:' ab'】
repeat(string1,n):返回重复string1字符串n次后的字符串
【input:repeat('abc', 2);output:'abcabc'】
reverse(string1):返回string1反转后的字符串
【input:reverse('a', 'b', 'd');output:'cba'】
split(string1, sep):以正则sep分隔字符串string1,返回数组,常配合选择数组第几位使用,第几位索引从0开始
【input:split('a,b,c', ',')[2];output:'c'】
substr(string1, int1, int2):将string1以int1位置起截取int2个字符,索引从0开始
【input:substr('abcdef', 2, 3);output:'cde'】
3、条件函数
if(boolean, x1, x2):若boolean成立,则返回x1,反之返回x2
【input:if(2>1, 1, 2);output:1】
case when boolean then x1 else x2 end:若布尔值成立,则x1,否则x2,同if函数,当多重判断时候,格式较为友好
【input:case when 2>1 then 1 else 2 end;output:1】
coalesce(v0, v1, v2):返回参数中的第一个非空值,若所有值均为空,则返回空
【input:coalesce(null, 1, 2);output:1】
isnull(a):若a为空,则返回true,否则返回false
4、日期函数
to_date(string timestamp):返回时间字符串中的指定日期部分
【input:to_date('2021-11-15 00:00:00');output:'2021-11-15'】
current_date:返回当前日期
【input:current_date;output:'2021-11-15'】
year(date):返回日期date的年份,返回int格式
【input:year('2021-11-15');output:2021】
month(date):返回日期date的月份,返回int格式
【input:year('2021-11-15');output:11】
day(date):返回日期date的天,返回int格式
【input:year('2021-11-15');output:15】
weekofyear(date):返回日期date位于该年第几周
【input:weekofyear('2021-11-15');output:46】
datediff(date1, date2):返回日期date1与date2相差的天数,在计算留存时经常用到
【input:datediff('2021-11-15', '2021-11-14');output:1】
date_add(date, int1):返回日期date加上int1的日期
【input:date_add('2021-11-14', 1);output:'2021-11-15'】
date_sub(date, int1):返回日期date减去int1的日期
【input:date_sub('2021-11-15', 1);output:'2021-11-14'】
unix_timestamp():返回当前时间的unix时间戳,可指定日期格式
【input:unix_timestamp('2021-11-15','yyyy-mm-dd');output:1610640660】
from_unixtime():返回unix时间戳对应的日期,可指定格式
【input:from_unixtime(unix_timestamp('2021-11-15','yyyy-mm-dd'),'yyyymmdd');output:'20211115'】
5、聚合函数
count(col):统计行数
sum(col):统计指定列和
avg(col):统计指定列平均值
min(col):返回指定列最小值
max(col):返回指定列最大值
6、拆分函数
explode (array):返回多行array中对应的元素【explode(array('A','B','C'))返回三行】
【作者】互联网大厂数据分析专家,本系列「干货」类文章,会和大家分享一些总结的实用知识,希望能够帮助到同行的同学,同时也渴望和大家在此沟通探讨。