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

Hive字符串数组json类型取某字段再列转行

一、原始数据

acctcontent
1232313[{"name":"张三","code":"上海浦东新区89492jfkdaj\r\n福建的卡"...},{"name":"狂徒","code":"select * from table where aa=1\r\n and a=12"...},{...}]
......

二、需求

 上述数据表名code_content,把json中code内容全都取出来拼接成一行数据,最终效果:

acctnew_content
1232313上海浦东新区89492jfkdaj\r\n福建的卡\u0001select * from table where aa=1\r\n and a=12
......

三、解析思路

四、实现方法

1.sql

select acct,concat_ws('\u0001',collect_list(t.code)) code
from 
(
select acct,get_json_object(a_json,'$.code') code
from
(
select acct,
split(regexp_replace(regexp_extract(code,'(^\\[)(.*?)(\\]$)',2),'\\},\\{','\\}|\\{'),'\\|') as t_code
from code_content
where dt=20230823
) a
lateral view explode(t_code) code_content_tab as a_json
) t
group by acct

2.sql解释:

  • regexp_extract(code,'(^\\[)(.*?)(\\]$)',2):用正则取出数组里的json
  • regexp_replace:替换},{为}|{,方便切割因为,号一般语句里会比较多
  • split:切割成数组
  • explode:函数中的参数传入的是arrary数据类型的列名,通常,explode函数会与lateral view一起结合使用
  • lateral view:Lateral View配合 split, explode 等UDTF函数一起使用,它能够将一列数据拆成多行数据,并且对拆分后结果进行聚合,即将多行结果组合成一个支持别名的虚拟表。
  • get_json_object(a_json,'$.code'):获取json字段value
  • concat_ws('\u0001',collect_list(t.code)):“列转行”

参考:

Hive SQL中的 lateral view 与 explode(列转行)以及行转列_sql explode_卖山楂啦prss的博客-CSDN博客

hivesql解析json数组并拆分成多行_hive sql怎么对一个数组进行分行_Time Woods的博客-CSDN博客

http://www.lryc.cn/news/141404.html

相关文章:

  • ElementUI Table 翻页缓存数据
  • 使用 AutoGPTQ 和 transformers 让大语言模型更轻量化
  • AUTOSAR规范与ECU软件开发(实践篇)6.5 BswM模块概念与配置方法介绍
  • 1.1 VMware Workstation与Kali的安装和配置1
  • DDR与PCIe:高性能SoC的双引擎
  • C#_特性反射详解
  • 【跟小嘉学 Rust 编程】十三、函数式语言特性:迭代器和闭包
  • 时间复杂度和空间复杂度
  • mac docker 卡住解决
  • linux/centos zookeeper 使用记录
  • 用wireshark流量分析的四个案例
  • Oracle 时区详解
  • 仿mudou高性能高并发服务器
  • vue权限管理——菜单权限设置
  • 【LeetCode】228.汇总区间
  • Qt快速学习(二)--QMainWindow,对话框,布局管理器,常用控件
  • 群晖DSM下套件及系统网页服务器ssl证书自动更新
  • 【Flink】Flink架构及组件
  • React Navigation 开发准备
  • 前端面试:【前端安全】安全性问题与防范措施
  • [Linux]进程
  • 01-jupyter notebook的使用方法
  • pytestx容器化执行引擎
  • (动态规划) 剑指 Offer 42. 连续子数组的最大和 ——【Leetcode每日一题】
  • OLED透明屏曲面技术:创新突破引领显示行业未来
  • 视频云存储/安防监控EasyCVR视频汇聚平台分发rtsp流时,出现“用户已过期”提示该如何解决?
  • 调用paddleocr接口实现文本检测与识别,并在图像中显示识别结果
  • 如何提升winform程序性能
  • 按钮权限控制
  • 【脚本式设置环境变量】