Hive是建立在 Hadoop 上的数据仓库基础架构,定义了简单的类 SQL 查询语言(HQL)
函数分类:
简单内置函数:数学函数,字符函数,日期函数,条件函数,聚合函数。
高级内置函数:行列转换函数,分析性函数。
自定义函数:udf。
以上是小编自己整理分类的,网上也有很多不同分类的版本,下图就是在别人博客中我觉得比较好的分类方法。
数学函数
round():四舍五入
floor(): 向下取整
ceil(): 向上取整
rand(): 随机数
mod():取余
字符函数
length(string1):长度
concat(string1,string2):拼接
concat_ws(sep,string1,string2):返回按指定分隔符拼接的字符串
lower(string1):小写字符串 upper():返回大写字符串
trim(string1):去左右空格,ltrim(string1):去左空格。rtrim(string1):去右空格
reverse(string1):字符串逆置
rpad(string1,len1,pad1):字符右填充。lpad():左填充
split(string1,pat1):分隔字符串返回数组。如split('a,b,c',',')返回["a","b","c"]
substr():截取。如substr('abcde',1,3)返回'abc'
日期函数
curdate:返回当前日期
year(date):month(date):day(date): 返回日期date的年,月,日,类型为int
datediff(date1,date2):返回日期date1与date2相差的天数
str_to_date将日期格式的字符转换成指定格式的日期
例子:str_to_date('9-13-2020','%m-%d-%y')结果:2020-09-13
date_format()将日期转换成字符
例子:date_format('2020/9/13','%Y年%m月%d日')结果:2020年9月13日
条件函数
if(条件,t1,t2):若条件成立,则返回t1,反正返回t2。如if(1>2,100,200)返回200
case when 条件 then t1 else t2 end:若条件成立,则t1,否则t2,可加多重判断
isnull(a):若a为null则返回true,否则返回false
聚合函数
count():统计行数
sum(col1):统计指定列和
avg(col1):统计指定列平均值
min(col1):返回指定列最小值
max(col1):返回指定列最大值
行转列函数
lateral view explode(split(col1,',')) :同组同列的数据拆分成多行,以sep分隔符区分
列转行函数
concat_ws(sep, collect_set(col1)) :同组不同行合并成一列,以sep分隔符分隔。collect_set在无重复的情况下也可以collect_list()代替。collect_set()去重,collect_list()不去重
分析类函数
row_number() over(partitiion by .. order by .. ):根据partition排序,相同值取不同序号,不存在序号跳跃
rank() over(partition by .. order by .):根据partition排序,相同值取相同序号,存在序号跳跃
sum() over(partition by .. order by ..)根据partition排序,累计和
count() over(partition by .. order by ..)根据partition排序,累计行数
UDF函数
UDF(User-Defined Functions)即是用户定义的hive函数。hive自带的函数并不能完全满足业务需求,这时就需要我们自定义函数了
UDF的分类
UDF:one to one,进来一个出去一个,row mapping。是row级别操作,如:upper、substr函数
UDAF:many to one,进来多个出去一个,row mapping。是row级别操作,如sum/min。
UDTF:one to many ,进来一个出去多个。如alteral view与explode
今天无锡也下雪了,从朋友圈盗图一张,每天进步多一点~
降温了,大家做好保暖