hive将包含逗号的字段拆分为多列

目录

一、概述

二、行动

1.准备数据

2.数据清洗

3.substring_index函数

4.split函数实现


一、概述

想将hive表中包含逗号的字段按逗号做分隔符进行分列操作

二、行动

1.准备数据

sql 复制代码
--1
select '{1,2,3,4,5,6,7,8}' as num_str --使用的数据

2.数据清洗

sql 复制代码
--2
select 
      num_str
     ,replace(replace(num_str,'{',''),'}','')  as clean1 --清洗掉大括号
 from (
 select '{1,2,3,4,5,6,7,8}' as num_str --使用的数据
 ) t 

3.substring_index函数

函数介绍:

substring_index(string A, string delim, int count)

返回分隔符出现次数之前字符串A中的子字符串,count>0是从前往后截取,count<0是从后往前截取

sql 复制代码
--3
 select 
      num_str
     ,substring_index(replace(replace(num_str,'{',''),'}',''),',',1)  as index1   --从前往后1个分隔符
     ,substring_index(replace(replace(num_str,'{',''),'}',''),',',2)  as index2   --从前往后2个分隔符
     ,substring_index(replace(replace(num_str,'{',''),'}',''),',',3)  as index3   --从前往后3个分隔符
     ,substring_index(replace(replace(num_str,'{',''),'}',''),',',-1) as index_1  --从后往前1个分隔符
     ,substring_index(replace(replace(num_str,'{',''),'}',''),',',-2) as index_2  --从后往前2个分隔符
     ,substring_index(replace(replace(num_str,'{',''),'}',''),',',-3) as index_3  --从后往前3个分隔符
 from (
 select '{1,2,3,4,5,6,7,8}' as num_str --使用的数据
 ) t 

4.split函数实现

split(string str, string pat)

数组(注意下角标数字从0开始)

string str :待分割字符串

string pat:分割符

sql 复制代码
--4
 select 
      num_str
     ,split(replace(replace(num_str,'{',''),'}',''), ',')[0]          as s1
     ,split(replace(replace(num_str,'{',''),'}',''), ',')[1]          as s2
     ,split(replace(replace(num_str,'{',''),'}',''), ',')[2]          as s3
     ,split(replace(replace(num_str,'{',''),'}',''), ',')[3]          as s4
     ,split(replace(replace(num_str,'{',''),'}',''), ',')[4]          as s5
     ,split(replace(replace(num_str,'{',''),'}',''), ',')[5]          as s6
     ,split(replace(replace(num_str,'{',''),'}',''), ',')[6]          as s7
     ,split(replace(replace(num_str,'{',''),'}',''), ',')[7]          as s8
from (
 select '{1,2,3,4,5,6,7,8}' as num_str --使用的数据
 ) t 

由此可以看出,split函数可以实现我想要的效果,over~

相关推荐
Gain_chance6 小时前
34-学习笔记尚硅谷数仓搭建-DWS层最近一日汇总表建表语句汇总
数据仓库·hive·笔记·学习·datagrip
Gain_chance7 小时前
36-学习笔记尚硅谷数仓搭建-DWS层数据装载脚本
大数据·数据仓库·笔记·学习
Gain_chance8 小时前
35-学习笔记尚硅谷数仓搭建-DWS层最近n日汇总表及历史至今汇总表建表语句
数据库·数据仓库·hive·笔记·学习
无级程序员17 小时前
大数据Hive之拉链表增量取数合并设计(主表加历史表合并成拉链表)
大数据·hive·hadoop
华农DrLai19 小时前
Spark SQL Catalyst 优化器详解
大数据·hive·sql·flink·spark
心疼你的一切1 天前
解密CANN仓库:AIGC的算力底座、关键应用与API实战解析
数据仓库·深度学习·aigc·cann
qq_12498707531 天前
基于Hadoop的信贷风险评估的数据可视化分析与预测系统的设计与实现(源码+论文+部署+安装)
大数据·人工智能·hadoop·分布式·信息可视化·毕业设计·计算机毕业设计
十月南城1 天前
Hive与离线数仓方法论——分层建模、分区与桶的取舍与查询代价
数据仓库·hive·hadoop
鹏说大数据2 天前
Spark 和 Hive 的关系与区别
大数据·hive·spark
B站计算机毕业设计超人2 天前
计算机毕业设计Hadoop+Spark+Hive招聘推荐系统 招聘大数据分析 大数据毕业设计(源码+文档+PPT+ 讲解)
大数据·hive·hadoop·python·spark·毕业设计·课程设计