背景
在平时使用spark sql分析数据时,特别是分析从mysql的表入仓的hive表时,我们会经常和字符串数组的列打交道,而且这种情况下我们一般都需要把一行字符串数组的行数据转成多列的形式,我们看下怎么写这个sql
spark sql 转换字符串数组成多列结构
sql:
select goods_id,sinlge_label_id from (
select goods_id ,label_Ids from hivedb.sourece where (label_Ids !='' and label_Ids != '[]') and is_deleted = 0
) as a lateral view explode(split(regexp_replace(label_Ids,"\\[|\\]|\"", ""),",")) as sinlge_label_id
这里的核心其实就是怎么先使用regexp_replace把字符串数组的一些特殊字符去掉,然后通过split转换成数组后,利用lateral view的方式进行行转列。