注:以下是本人个人总结的,常用的一些hive的内嵌函数,可能有不足的,欢迎补充。
1.聚集函数
sum() --取字段数值的汇总
max() --取字段的最大值
min() --取字段的最小值
avg() --取字段数值的所有平均值
count() --统计字段的总个数
注:一般聚集函数会和分组函数(group by)一起使用,而且使用分组函数后,查询
的字段也只能出现分组字段和聚集函数。
2.字符串处理函数
substr(a,num1,num2) --字段截取函数,这个函数是取字段a,从num1位置开始取,取num2个字符。
concat(a,b) --字段拼接函数 ,将a,b拼接在一起成ab
concat_ws(’-’,a,b) --在字段a,b通过间隔符-拼接在一起成a-b
upper() --转大写
lower() --转小写
trim() --去除两边空格 (ltrim/rtrim 分别是去左边和右边空格)
lpad/rpad(a,num1,b)–左右填充函数,在a字段左/右填充num1个b
3.日期函数
unix_timestamp() --返回当前的时间戳
from_unixtime() --转换时间戳的格式
注:一般我们获取当前时间且是我们想要的格式会这么使用上面两个函数
from_unixtime(unix_timestamp(),‘yyyyMMdd’) --得到当前时间具体到天
year(workdate) --返回时间中的年
month(workdate) --返回时间的月
day(workdate) --返回时间的天
hour(workdate) --返回时间的小时
minute(workdate) --返回时间的分钟
second(workdate) --返回时间的秒
weekofyear(workdate) --返回一年的第几周
date_add(workdate,num1)–给workdate时间加上num1天
date_sub(workdate,num1)–给workdate时间减去num1天
datediff (type,workdate1,workdate2) --根据类型type(day/year/momth,默认是天),返回workdate1和workdate2差值
4.条件函数
case when 函数,主要一下两种用法
1.
case a
when b then 1
when c then 2
else
‘其他’
end;
case
when a=b then 1
when a=c then 2
else
‘其他’
end;
以上就是当a值等于b则输出1,当a=c则输出2,否则则输出其他
5,开窗函数
基本格式 :函数名() over() ,例如(row_numbner() over(),count() over()等等)
接下来主要介绍两个我主要用到了的
row_number() over(distribute by name1 sort by time desc) --按name1分组按时间字段降序排序并给上序号(不区分相同值,例(1,2,3,4))
rank() over(distribute by name1 sort by time desc ) --按name1分组,按时间降序排序并且给上序列号(区分相同值,但不跳跃 例(1,2,2,3))
dense_rank() over(distribute by name1 sort by time desc ) --按name1分组,按时间降序排序并且给上序列号(区分相同值,且跳跃 例(1,2,2,4))
我日常工作做去重表会用到上述函数
select * from
(select a.*,row_number() over (distribute by name sort by time desc ) rm from tab_name a) t1
where t1.rm=1;
这样我就可以得到name 列唯一的表。
本文介绍了Hive中的常见内嵌函数,包括聚集函数如SUM、MAX、MIN、AVG、COUNT,字符串处理函数如SUBSTR、CONCAT、UPPER等,日期函数如UNIX_TIMESTAMP、FROM_UNIXTIME,条件函数CASE WHEN,以及窗口函数ROW_NUMBER、RANK和DENSE_RANK,特别是如何利用这些函数进行数据处理和去重。
1752

被折叠的 条评论
为什么被折叠?



