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~

相关推荐
梦想画家12 小时前
从选型到落地:Trino赋能智能制造数据驱动实践
数据仓库·trino·分布式查询·联邦查询
奕成则成14 小时前
Flink全面入门指南:从基础认知到BI数据仓库实践
大数据·数据仓库·flink
鹿衔`1 天前
Hadoop HDFS 核心机制与设计理念浅析文档
大数据·hadoop·hdfs
`林中水滴`1 天前
数仓系列:一文读懂仓湖一体架构
数据仓库
Justice Young2 天前
Sqoop复习笔记
hadoop·笔记·sqoop
大厂技术总监下海2 天前
从Hadoop MapReduce到Apache Spark:一场由“磁盘”到“内存”的速度与范式革命
大数据·hadoop·spark·开源
zgl_200537792 天前
ZGLanguage 解析SQL数据血缘 之 Python提取SQL表级血缘树信息
大数据·数据库·数据仓库·hive·hadoop·python·sql
Justice Young2 天前
Hive第四章:HIVE Operators and Functions
大数据·数据仓库·hive·hadoop
LF3_2 天前
hive,Relative path in absolute URI: ${system:user.name%7D 解决
数据仓库·hive·hadoop
德彪稳坐倒骑驴2 天前
Hive SQL常遗忘的命令
hive·hadoop·sql