拼接函数(行转列):
collect_set():把多个值去重拼接成一个数组
collect_list():同上,不去重
concat_ws():用指定分隔符,把数组拼成一个字符串
–:concat_ws(分隔符,数组)
字符串拼接:
concat(v1,v2,v3)
分割函数(列转行):
split(字符串,分隔符):切割字符串
split(字符串,起始索引):字符串部分截取
lateral view explde(数组或者map):数组炸成多行
使用sort by 求topN
select * from gift sort by id limit 10
抽样固定条数
select * from gift sort by rand() limit 200
hive的count(distinct value)效率低于group by再sum(1) --:1代表行数
因为前者只在一个进程中跑,后者在分多个reduce跑
hive sql不支持union只有union all(非去重)
left semi join(左半开连接)
显示满足条件的左表内容,(右表不显示)
hive sql 对 in exists的优化
窗口函数:
特点:可以显示聚集前的数据
格式: 聚合函数 over(partition by 字句,order by字句,window字句)
常用分析函数:
RANK() :在分组中排名,相同排名时会留下空位;
DENSE_RANK() :在分组中排名,相同排名时不会留下空位;
FIRST_VALUE() :分组内排序取第一个值;
LAST_VALUE() :分组内排序取最后一个值;
NTILE(n) :将分组数据按顺序切分成n份,返回当前所在切片;
ROW_NUMGBER() :在分组中从1开始按序记录序列;
CUME_DIST() :小于等于当前值的行数 / 分组总行数(百分比);
PERCENT_RANK() :(分组内的R