HIVE SQL实现分组字符串拼接concat

这篇具有很好参考价值的文章主要介绍了HIVE SQL实现分组字符串拼接concat。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在Mysql中可以通过group_concat()函数实现分组字符串拼接,在HIVE SQL中可以使用concat_ws()+collect_set()/collect_list()函数实现相同的效果。
实例:

a b c
2014 B 9
2015 A 8
2014 A 10
2015 B 7
2014 B 6

1.concat_ws+collect_list 非去重拼接

select a 
	,concat_ws('-',collect_list(b))  as col_b
	,concat_ws('-',collect_list(cast(c as string)))  as col_c
from tb_name
group by a
;

查询结果:

a col_b col_c
2014 B-A-B 9-10-6
2015 A-B 8-7

2.concat_ws+collect_set 去重拼接

select a 
	,concat_ws('-',collect_set(b))  as col_b
	,concat_ws('-',collect_set(cast(c as string)))  as col_c

from tb_name
group by a
;

查询结果:

a col_b col_c
2014 B-A 9-10-6
2015 A-B 8-7

3.如果在分组拼接的时候需要保持拼接结果为有序排序,可以通过以下两种方式
1)先排序再拼接

select a 
	,concat_ws('-',collect_set(b))  as col_b
	,concat_ws('-',collect_set(cast(c as string)))  as col_c

from 
(
select a 
	,b
	,c
	,row_number() over (partition by a order by b asc) as rn
from tb_name
) t
group by a
;

查询结果:

a col_b col_c
2014 A-B 10-6-9
2015 A-B 8-7
select a 
	,concat_ws('-',collect_list(b))  as col_b
	,concat_ws('-',collect_list(cast(c as string)))  as col_c

from 
(
select a 
	,b
	,c
	,row_number() over (partition by a order by b asc) as rn
from tb_name
) t
group by a
;

查询结果:(col_b与col_c 的位置对应且col_b中的字符有序)

a col_b col_c
2014 A-B-B 10-6-9
2015 A-B 8-7

2)sort_array()函数升序排列文章来源地址https://www.toymoban.com/news/detail-657476.html

select a 
	,concat_ws('-',sort_array(collect_list(b)))  as col_b

from tb_name
group by a
;
a col_b
2014 A-B-B
2015 A-B

到了这里,关于HIVE SQL实现分组字符串拼接concat的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【SQL相关】Hive行列字符串的合并与拆分

    目录 一、行方向 1. 行方向的合并 1.1 concat 函数 1.2 concat_ws 函数 2. 行方向的拆分 二、列方向 1. 列方向的合并 1.1 group_concat 函数 1.2 collect_list 函数 1.3 collect_set 函数 2. 列方向的拆分 2.1 explode 函数 2.2 lateral view 1. 行方向的合并 将同一行某几列的数据以分隔符分隔,合并到同一列

    2024年04月14日
    浏览(40)
  • mysql中的实现字段或字符串拼接的三种方式

    concat函数是将多个字段或字符串拼接为一个字符串;但是字符串之间没有任何分隔。 concat函数官方介绍 执行结果如下: 执行结果如下: 如果拼接的字段中有一个为null,则结果为null。 执行结果如下: concat_ws函数将多个字段或字符串拼接为一个字符串,且字符串直接可以指定

    2024年02月22日
    浏览(64)
  • Hive SQL判断一个字符串中是否包含字串的N种方式及其效率

    这是个常见需求,某个表tab中,需要判断某个string类型的字段中,哪些数据含有一个子串。以下给出6种方案,并给出效率对比。 可以使用regexp_extract(subject, pattern, index)函数来提取字符串中匹配指定正则表达式的字串。要判断一个字符串中是否包含字串\\\"ABCD;\\\",可以使用如下代

    2024年01月24日
    浏览(53)
  • spark SQL 怎么将一个时间戳字符串转换成hive支持的时间日期类型?

    在 Spark SQL 中,可以使用 to_timestamp 函数将一个时间戳字符串转换成 Hive 支持的时间日期类型。这个函数的语法如下: 其中,timestampStr 表示要转换的时间戳字符串,format 表示时间戳字符串的格式,格式必须与时间戳字符串的实际格式相匹配。如果不指定格式,Spark 会使用默认

    2024年02月11日
    浏览(39)
  • 297.【华为OD机试】拼接url(字符串处理—Java&Python&C++&JS实现)

    🚀点击这里可直接跳转到本专栏,可查阅顶置最新的华为OD机试宝典~ 本专栏所有题目均包含优质解题思路,高质量解题代码(JavaPythonC++JS分别实现),详细代码讲解,助你深入学习,深度掌握!

    2024年04月12日
    浏览(36)
  • mysql 拼接字符串,截取字符串 常用方式

    1,拼接字符串常用:CONCAT(‘需要拼接的字符串’,列名) CONCAT(\\\'+\\\',b.Telephone)查询出号码,前边加上+号 2,分割字符串 substring_index(b.Telephone,\\\'+\\\',1) 用从左往右的第一个+分割电话号码,获取分割后的从左往右的第一个字符串 比如 86+133333333 执行完后 为 86 substring_index(b.Telephone,\\\'+\\\',

    2024年02月14日
    浏览(41)
  • Python_字符串(字符串拼接:join() 与 +拼接符两种方法效率对比)

    运算结果如下图所示: 显然,在循环1000000次的前提下,字符的join()运算效率远远高于使用+拼接符的运算。 其根本逻辑在于: 对于简单的+运算符,字符串每次相加都会创建一个新的对象。较为费时。 而对于join(),其用于列表内字符串的相加,列表中字符串的相加并不会创建

    2023年04月24日
    浏览(45)
  • Hive 解析 JSON 字符串数据的实现方式

    在 Hive 中提供了直接解析 JSON 字符串数据的方法 get_json_object(json_txt, path) ,该方法参数解析如下: json_txt :顾名思义,就是 JSON 字符串; path :指的是匹配 JSON 字符串的格式,通过固定的语法获取 JSON 字符串中的内容。 常用的 path 参数匹配符号有四个,分别是: $ :表示获

    2024年02月05日
    浏览(40)
  • shell 拼接字符串,出现后面的字符串覆盖前面的字符串问题

    shell 拼接字符串语法很简单两个参数并排前后写上接口,如下 str1=www str2=bbb s t r 1 str1 s t r 1 str2 的结果未 wwwbbb 有时会出现如下问题: 在拼接字符串的时候,后面的字符串将前面的字符串覆盖了。 shell的内容如下: #!/bin/bash date_str=“ date +%Y%m%d ” echo $date_str python_file_name=\\\" 1

    2024年02月09日
    浏览(39)
  • JS中字符串切割为数组/数组拼接为字符串

    (1)语法格式: 其中所选分隔符使用双引号(“”)或者单引号(‘’)括起来; 所生成的数组会存放于前面定义的数组变量中。 (2)样例: JS代码: 运行结果: (3)其他用法: ①当所选分隔符为空时,返回的数组即将每个字符分割出来: JS代码: 运行结果: ②分隔

    2024年02月12日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包