一、概览

Hive是搭建在Hadoop上的数仓基础框架,能够将结构化底层数据映射在数据库表中,提供类SQL查询功能,并将其转化为MapReduce任务来进行执行。

hive函数的划分业界有很多方式,小火龙认为,可分为“Hive基础函数”和“Hive进阶函数”,本期主要总结“Hive基础函数”,让大家在5min之内可以有一个比较好的认知。基础函数可分为以下六个方向。



二、Hive基础函数

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'))返回三行】






【作者】互联网大厂数据分析专家,本系列「干货」类文章,会和大家分享一些总结的实用知识,希望能够帮助到同行的同学,同时也渴望和大家在此沟通探讨。

举报/反馈

小火龙说数据

154获赞 85粉丝
深耕数据分析优质内容及经验分享
关注
0
0
收藏
分享