当前位置:   article > 正文

大数据HiveSQL UDTF 函数 explode_sql炸裂函数

sql炸裂函数

1、应用场景

数据准备

provice

category

广东省

南方、经济强省

海南省

热带、旅游、自由贸易

新疆

西北、沙漠、哈密瓜

需求展示:

  1. 广东省            南方
  2. 广东省            经济强省
  3. 海南省            热带
  4. 海南省            旅游
  5. 海南省            自由贸易
  6. 新疆              西北
  7. 新疆              沙漠
  8. 新疆                哈密瓜

2、Explode : UDTF 函数, 一个输入多个输出函数【炸裂函数】

功能说明:将 hive 一列中复杂的 Array 或者 Map 结构拆分成多行,即将数据打散。

3、和 lateral view【侧写表】 及 split 结合使用

Hive Lateral View

Apply table generation function, then join the function input and output together(应用表生成功能,将功能输入和输出连接在一起)

  1. 在一个复杂的SQL查询中,可以生成类似于临时的视图一样的功能;
  2. 使用LATERAL VIEW 如果视图是空值的话,那么最终不会有任何输出结果,需要使用 LATERAL VIEW OUT

LATERAL VIEW OUT

  1. will generate the result even output is null (即便输出为空,LATERAL VIEW OUTER 也会生成结果)
  2. 视图为空值,也会展示全部的结果

EXPLODE 函数的用法:

  1. 参数:接受的是一个集合
  2. 返回值:返回集合的每一个元素

使用场景示例:可以基于explode + laterval view 实现词频统计

4、Split: 将字符串分割字符串数组

5、lateral view 为原始表的每行调用UDTF,UDTF会把一行拆分成一或者多行,lateral view 再把结果结合,产生一个支持别名表的虚拟表

  1. create table tmp_provice_category as
  2. select
  3.     provice, category
  4. from
  5. (
  6.     select '广东省' as provice, '南方、经济强省' as category
  7.     union all
  8.     select '海南省' as provice, '热带、旅游、自由贸易' as category
  9.     union all
  10.     select '新疆' as provice, '西北、沙漠、哈密瓜' as category
  11. )

执行以下SQL:

select provice, category from tmp_provice_category

结果:

  1. provice    category
  2. 新疆     西北、沙漠、哈密瓜
  3. 海南省     热带、旅游、自由贸易
  4. 广东省     南方、经济强省
  1. select
  2.     provice, category_name
  3. from
  4. (
  5.     select provice, category from tmp_provice_category
  6. )
  7. lateral view explode (split(category, '、')) table_temp_view as category_name

结果:

  1. provice    category_name
  2. 新疆     西北
  3. 新疆     沙漠
  4. 新疆     哈密瓜
  5. 海南省     热带
  6. 海南省     旅游
  7. 海南省     自由贸易
  8. 广东省     南方
  9. 广东省     经济强省

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/426624
推荐阅读
相关标签
  

闽ICP备14008679号