当前位置: 首页 > news >正文

hive 字符串拼接_Hive行转列详解

ef0eceef92a325bb45691eccabe2d31c.png

需求:

孙悟空 白羊座 A
沙悟净 射手座 A
宋松松 白羊座 B
猪八戒 白羊座 A
小凤姐 射手座 A

转换成以下格式:

白羊座,A 孙悟空|猪八戒
白羊座,B 宋松松
射手座,A 沙悟净|小凤姐

思路:表的行转列

知识点:concat(string1,string2) string1和string2需要是列名

-- 使用hive的beeline客户端,使用t_vehicle_log,并查看该表的secma

9c3cf4e6d25ebc4c2b3fa08c4752d910.png
-- 对其中两列字段进行拼接
select concat(vehicle_speed,vehicle_plate) from t_vehicle_log;

c1fa376c6b240ec109f67bfd404028fd.png
--concat()  对拼接的两列字符串中间用,连接
select concat(vehicle_speed,",",vehicle_plate) from t_vehicle_log;

加入我们要拼接多个列,并且需要用同样的分隔符(如A,B,C,D),该怎么做呢?

——我们可以使用concat_ws()

select concat_ws(",",monitor_id,camera_id,vehicle_plate) from t_vehicle_log;

620b8d7bba34d563905959600c25ce37.png

如果某一列有很多重复的字段,我们需要对其进行去重,并对去重字段返回一个数组,该怎么办呢?

—— 我们可以使用 collect_set()

select monitor_id from t_vehicle_log;

d2d7358167d792d0e50337013eef77e7.png
select collect_set(monitor_id) from t_vehicle_log;

dc2e06dc127a3d44af159fb28f729701.png

以上为本次需求所需的知识点的讲解,下面开始解决本次需求:

-- 建表:

使用concat_ws()查询:

select concat_ws(",",constellation,blood_type) c_b,name from person_info;

结果:

d75e6544cfe0fa685cb46eed3a0ea1b0.png

对上一步结果作为子查询,在查询:

select 
    t1.c_b, 
    collect_set(t1.name)
from(
    select concat_ws(",",constellation,blood_type) c_b,
    name from person_info
) t1
group by t1.c_b;

最终结果:collect_set()返回的是数组,concat_ws()接受的string或者是string数组

11c0ad95a4e061015e3a3e8804c39c0a.png

将数组划分开:

select 
    t1.c_b, 
    concat_ws("|",collect_set(t1.name))
from(
    select concat_ws(",",constellation,blood_type) c_b,
    name from person_info
) t1
group by t1.c_b;

结果:

60237d1c7948ae9c900757e64107c92d.png

到此,任务完成。我们下期再见。

1c332b4094534b7e9804d7d9b7426d95.png

一个不务正业的技术博主

相关文章:

  • idea 单元测试_java单元测试覆盖率统计
  • iframe 注入js_基于HTML注入的一种攻击思路
  • java多线程实例_Java 多线程三大核心点实例讲解
  • python安装依赖包经常出错怎么办_如何解决Python包依赖问题
  • python 定时播放音乐_python – 如何在第一首歌曲结束后安排音频文件在pygame中自动播放?...
  • jedis依赖_Jedis认知
  • python中lower的用法_Python string islower()用法及代码示例
  • 前端为什么有的接口明明是成功回调却执行了.catch失败回调_【微信支付】微信支付成功之后没有请求回调接口...
  • axture动画原型制作_新的工作流程如何将ZBrush雕刻的角色变成虚幻引擎的动画角色...
  • pip版本和python版本一样吗_windows下多版本python安装与pip安装和pip使用 吐血总结...
  • 全职只学python要多久_全职学python,几周才能在上海找到一个很普通很普通的数据方面的实习(实习不是兼职)?...
  • tcp ip协议_TCP/IP协议:传输层协议
  • list遍历_LeetCode102-二叉树的层次遍历
  • php转python还是java_零基础到底学java.php还是Python?(转)
  • 小程序直播间页面路径怎么访问直播间_客满美业小程序第51期重磅更新来啦!...
  • 【React系列】如何构建React应用程序
  • 345-反转字符串中的元音字母
  • Electron入门介绍
  • ES6系列(二)变量的解构赋值
  • java B2B2C 源码多租户电子商城系统-Kafka基本使用介绍
  • Java|序列化异常StreamCorruptedException的解决方法
  • JavaScript中的对象个人分享
  • Js基础知识(四) - js运行原理与机制
  • NLPIR语义挖掘平台推动行业大数据应用服务
  • python 装饰器(一)
  • 提升用户体验的利器——使用Vue-Occupy实现占位效果
  • 我的业余项目总结
  • 一份游戏开发学习路线
  • “十年磨一剑”--有赞的HBase平台实践和应用之路 ...
  • 分布式关系型数据库服务 DRDS 支持显示的 Prepare 及逻辑库锁功能等多项能力 ...
  • 格斗健身潮牌24KiCK获近千万Pre-A轮融资,用户留存高达9个月 ...
  • 哈罗单车融资几十亿元,蚂蚁金服与春华资本加持 ...
  • ​Kaggle X光肺炎检测比赛第二名方案解析 | CVPR 2020 Workshop
  • ​马来语翻译中文去哪比较好?
  • # Java NIO(一)FileChannel
  • #100天计划# 2013年9月29日
  • #AngularJS#$sce.trustAsResourceUrl
  • #我与Java虚拟机的故事#连载02:“小蓝”陪伴的日日夜夜
  • (AtCoder Beginner Contest 340) -- F - S = 1 -- 题解
  • (C语言)共用体union的用法举例
  • (动手学习深度学习)第13章 计算机视觉---图像增广与微调
  • (附源码)springboot 房产中介系统 毕业设计 312341
  • (原创)boost.property_tree解析xml的帮助类以及中文解析问题的解决
  • (转) Face-Resources
  • ****Linux下Mysql的安装和配置
  • .NET CF命令行调试器MDbg入门(三) 进程控制
  • .NET DataGridView数据绑定说明
  • /run/containerd/containerd.sock connect: connection refused
  • @GetMapping和@RequestMapping的区别
  • [ JavaScript ] JSON方法
  • [ Linux Audio 篇 ] 音频开发入门基础知识
  • [ 常用工具篇 ] AntSword 蚁剑安装及使用详解
  • [2023-年度总结]凡是过往,皆为序章
  • [8481302]博弈论 斯坦福game theory stanford week 1
  • [BUAA软工]第一次博客作业---阅读《构建之法》