Hive函数面试高频考点

目录

行转列

列转行

排序函数

日期函数

四个By区别

窗口函数/开窗函数


行转列

collect_set() --行转列,去重。不同行转为一个集合,可按序号取值

collect_list() --行转列,不去重。

 

concat()

concat_ws()

列转行

explode (array):返回多行array中对应的元素。如explode(array('A','B','C'))

explode(map):返回多行map键值对对应元素。如explode(map(1,'A',2,'B',3,'C'))

lateral view explode(split(col1,','))

--同组同列的数据拆分成多行,以sep分隔符区分

 

LATERAL VIEW:

1.Lateral View 用于和UDTF函数【explode,split】结合来使用。
2.首先通过UDTF函数将数据拆分成多行,再将多行结果组合成一个支持别名的虚拟表。
3..主要解决在select使用UDTF做查询的过程中查询只能包含单个UDTF,不能包含其它字段以及多个UDTF的情况。
4.语法:LATERAL VIEW udtf(expression) tableAlias AS columnAlias (',' columnAlias)

使用LATERAL VIEW + explode 函数进行查询,语句如下:

select movie,category_name

from movie_info

LATERAL VIEW explode(category) tmpTable as category_name;

-- category_name 是给 explode(category) 列起的别名

 

排序函数

rank() over(partition by ..  order by .)

--根据partition排序,相同值,序号相同,序号跳跃

dense_rank() over(partition by .. order by ..)

--根据partition排序,相同值,序号相同,序号不跳跃

row_number()  over(partitiion by .. order by .. )

--根据partition排序,相同值,序号不同,序号不跳跃

日期函数

date_format() --日期格式化

to_date(string timestamp)   --返回时间字符串中的日期部分

current_date() --返回当前日期

date_add() & date_sub() --加减日期

next_day() --取当前天的下个周一,用作周指标

last_day() --取当月最后一天

date_add(next_day('2019-02-12','MO'),-7) --取当前周的周一

 

get_json_object解析json函数


nvl(value,default_value) - Returns default value if value is null else returns value

四个By区别

1.Order by:全局排序,只有一个Reduce
2.Sort By:分区内排序
3.Distrbute By:类似MR中Partition,进行分区,结合Sort By使用。
4.Cluster By:当Distrbute By 和Sort By字段相同时候使用,但是排序只能是升序排列,不能指定排序规则为asc或者desc。

窗口函数/开窗函数

OVER()

用于指定分析函数工作时的数据窗口大小,这个数据窗口大小可能会随着行的变而变化;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值