数据分析--积累--presto--一列转多行--数组分割展开

Posted 张小凡vip

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据分析--积累--presto--一列转多行--数组分割展开相关的知识,希望对你有一定的参考价值。

我们在做数据分析时,有时候需要使用join等作表连接,或者说 通过一些数据作关联。

但是 如果需要的数据 是存储的一列中使用逗号分割,或者存储在数组中,就不能很方便的进行表连接。

presto提供了很方便的语法,可以把列转成多行。

场景一 字符串

person表中 多个数据保存在pets使用逗号分割
如下:

select
       name,
       pets
from person

输出:

namepets
zzqsummer,winter
lyspring,autumn

使用sql如下:

select name,split_pet
FROM person
CROSS JOIN UNNEST(SPLIT(pets,',')) AS t (split_pet)

输出如下:

namesplit_pet
zzqsummer
zzqwinter
lyspring
lyautumn

注意 非规范的字段串 可以使用replace进行处理成规范的字符串

如下:

REPLACE(pets, '(', '')

场景二 数组

person表中 多个数据保存在pets使用逗号分割
如下:

select
       name,
       pets
from person

输出:

namepets
zzq[summer,winter]
ly[spring,autumn]

使用sql如下:

select name,split_pet
FROM person
CROSS JOIN UNNEST(pets) AS t (split_pet)

输出如下:

namesplit_pet
zzqsummer
zzqwinter
lyspring
lyautumn

参考文章:
https://blog.csdn.net/mao15827639402/article/details/108246430
https://blog.csdn.net/lzxlfly/article/details/108458110

以上是关于数据分析--积累--presto--一列转多行--数组分割展开的主要内容,如果未能解决你的问题,请参考以下文章

将多行数据列转置为一列

PCB SQL MS 将多行有序数据转为一行数据(一列转一行)

pandas 一列转多行

MySQL关联表多行转多列?

列转多行---Mysql

c#如何把Json转成DataTable每一行都一一对应下面多出来的列自动添加到后方