• 2023.11.15-hivesql之炸裂函数explode练习


    把一个容器的多个数据炸裂出单独展示:  explode(容器)

    需求:将NBA总冠军球队数据使用explode进行拆分,并且根据夺冠年份进行倒序排序。

    1.建表

    1. --step1:建表
    2. create table the_nba_championship(
    3. team_name string,
    4. champion_year array<string>
    5. ) row format delimited
    6. fields terminated by ','
    7. collection items terminated by '|';

    2.加载数据

    load data  inpath '/input/The_NBA_Championship.txt' into table the_nba_championship;

     3.验证数据

    1. p3:验证数据
    2. select * from the_nba_championship;

    可以使用order by,但效率太低 

    1. --只查询冠军年份,降序排序
    2. select explode(champion_year) as champ
    3. from the_nba_championship order by champ ; --order by 太占用资源,效率低

    使用炸裂函数,配合侧视图,制作新表

    1. -- 将NBA总冠军球队数据使用explode进行拆分,并且根据夺冠年份进行倒序排序。
    2. --先将冠军年各个炸出来
    3. select explode(champion_year) from the_nba_championship;
    4. --再将炸出来的结果用侧视图保存,和原表的球队名字拼起来
    5. with nba as
    6. (select team_name, c.champ_year_explode
    7. from the_nba_championship
    8. lateral view explode(champion_year) c as champ_year_explode
    9. --冠军年份炸开后,存到虚拟表c,并起了个字段名,与原表进行拼接.
    10. --并将拼接完成的表起了个别名,作为排序查询的准备
    11. )
    12. select * from nba order by champ_year_explode desc ;

    结果

  • 相关阅读:
    协同设计有哪些优势和作用?
    MySQL(4)
    初识散列表
    Linux常见Bug解决方案
    layui 表格(table)合计 取整数
    vue+vite+nginx 前端项目部署在同一端口的不同路径
    web3调研:Iron fish调研
    python之while循环介绍
    SQL Server如何建表
    每日一题--658. 找到 K 个最接近的元素
  • 原文地址:https://blog.csdn.net/m0_49956154/article/details/134429585