hive函数
其他常用
1.NVL: 空字段赋值
给值为NULL的数据赋值,它的格式是NVL( string1, replace_with)。它的功能是如果string1为NULL,则NVL函数返回replace_with的值,否则返回string1的值,如果两个参数都为NULL ,则返回NULL。
2.concat: 字符串拼接
可以在参数中传入多个string类型的字符串,一旦有一个参数为null,返回Null!
Tips:
- 最好已经做好数据清洗,使得没有null数据
3.concat_ws:
使用指定的分隔符完成字符串拼接!
concat_ws(分隔符,[string | array<string>]+)
4. collect_set:
collect_set(列名) : 将此列的多行记录合并为一个set集合,去重
5. collect_list:
collect_list(列名) : 将此列的多行记录合并为一个set集合,不去重
6. explode:
explode(列名)
参数只能是array或map!
将array类型参数转为1列N行
将map类型参数转为2列N行
列转行: 1列1行 转为 1列N行
注意:
- explode函数属于UDTF,UDTF在使用时,不能和其他表达式一起出现在select子句后!
- 只能单独出现在select子句后!
案例:
movie_info.movie | movie_info.category
《疑犯追踪》 | ["悬疑","动作","科幻","剧情"]
期望结果:
《疑犯追踪》 悬疑
《疑犯追踪》 动作
《疑犯追踪》 科幻
《疑犯追踪》 剧情
《Lie to me》 悬疑
-------------不允许----------
select movie,explode(category)
from movie_info
--------不符合要求--------------
select movie,col1
from movie_info
join
(select explode(category) col1
from movie_info) tmp
处理:
①先explode
②需要将炸裂后的1列N行,在逻辑上依然视作1列1行,实际是1列N行,和movie进行笛卡尔集
这个操作在hive中称为侧写(lateral VIEW)
Lateral view explode() 临时表名 as 临时列名
select movie,col1
from movie_info Lateral view explode(category) tmp1 as col1
Tips:
- select后面只能写分组后的字段和聚集函数!聚集函数: 多进一出
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。