Hive collect_set()、collect_list()列转行,并对转换后的行值排序

Hive collect_set()、collect_list()列转行,和concat_ws()使用,并对转换后的行值排序

1、需求描述

对列值分组,并按一定顺序排序,最后多行合并一行,合并值左到右逆序排列。

2、考点:

  • sort_array(e: column, asc: boolean)将array中元素排序(自然排序),默认asc为true,即默认排升序
  • collect_set() 和 collect_list()的区别是前者去重,后者不去重

3.1、直接上collect_list()代码实现:

select st_name
      ,concat_ws(",",sort_array(collect_list(class),false)) 
      ,concat_ws(",",sort_array(collect_list(class),true))
      ,concat_ws(",",sort_array(collect_list(class))) 
from
(
  select "jack" as st_name, '3' as class
  union all
  select "jack" as st_name, '1' as class
  union all
  select "jack" as st_name, '2' as class
  union all
  select "jack" as st_name, '3' as class
  union all
  select "jack" as st_name, '5' as class
)tb_mid
group by st_name;

结果如下:

st_name concat_ws(,, sort_array(collect_list(class), false))    concat_ws(,, sort_array(collect_list(class), true))     concat_ws(,, sort_array(collect_list(class), true))
jack    5,3,3,2,1       1,2,3,3,5       1,2,3,3,5
Time taken: 0.16 seconds, Fetched 1 row(s)

3.2、直接上collect_set()代码实现:

select st_name
      ,concat_ws(",",sort_array(collect_set(class),false)) 
      ,concat_ws(",",sort_array(collect_set(class),true))
      ,concat_ws(",",sort_array(collect_set(class))) 
from
(
  select "jack" as st_name, '3' as class
  union all
  select "jack" as st_name, '1' as class
  union all
  select "jack" as st_name, '2' as class
  union all
  select "jack" as st_name, '3' as class
  union all
  select "jack" as st_name, '5' as class
)tb_mid
group by st_name;

结果如下:


st_name concat_ws(,, sort_array(collect_set(class), false))     concat_ws(,, sort_array(collect_set(class), true))      concat_ws(,, sort_array(collect_set(class), true))
jack    5,3,2,1 1,2,3,5 1,2,3,5
Time taken: 0.152 seconds, Fetched 1 row(s)

相关推荐

  1. Excel:如何数据进行码转换

    2024-01-31 06:00:04       14 阅读
  2. oracle 转行

    2024-01-31 06:00:04       7 阅读
  3. Oracle转行使用实例

    2024-01-31 06:00:04       31 阅读
  4. 利用pandas进行数据转行

    2024-01-31 06:00:04       16 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-31 06:00:04       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-31 06:00:04       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-31 06:00:04       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-31 06:00:04       20 阅读

热门阅读

  1. Session

    Session

    2024-01-31 06:00:04      24 阅读
  2. C语言:计算任意年份及月份的天数

    2024-01-31 06:00:04       40 阅读
  3. Linux系统MySQL重置root密码

    2024-01-31 06:00:04       28 阅读
  4. 代码随想录算法训练营第17天

    2024-01-31 06:00:04       35 阅读
  5. react的withRouter高阶组件:

    2024-01-31 06:00:04       34 阅读
  6. 力扣0111——二叉树的最小深度

    2024-01-31 06:00:04       42 阅读
  7. ClickHouse(24)ClickHouse集成mongodb表引擎详细解析

    2024-01-31 06:00:04       37 阅读