Redshift - 将数据拆分为多行

Posted

技术标签:

【中文标题】Redshift - 将数据拆分为多行【英文标题】:Redshift - Splitting data into multiple rows 【发布时间】:2019-09-04 12:26:33 【问题描述】:

我有销售数据显示购买了产品的客户。所有客户 ID 都附加到同一个单元格,如下所示。

我如何拆分它,以便每个 cust_id 每个 prod_id 有一行

prod_id,cust_id
10001,100,101
10002,102

预期输出:

prod_id,cust_id
10001,100
10001,101
10002,102

【问题讨论】:

根据另一篇帖子 (***.com/questions/46784721/…) 找出解决方案 我很高兴它对你有用! Redshift split single dynamic column into multiple rows in new table的可能重复 【参考方案1】:

由于Redshift现在支持generate_series,所以可以使用下面的SQL来达到想要的效果

with test(prod_id,cust_id) as (
select 10001,'100,101' union all
select 10002,'102'
),
max_ids as (
select distinct generate_series(1, regexp_count(cust_id,',') +1) n from test
)
select distinct prod_id, split_part(cust_id, ',', n) cust_id
from test, max_ids 
where split_part(cust_id, ',', n) != ''

输出是

prod_id cust_id
10001   100
10001   101
10002   102

【讨论】:

哦,终于!多么大的突破(RE 支持 generate_series)

以上是关于Redshift - 将数据拆分为多行的主要内容,如果未能解决你的问题,请参考以下文章

Redshift :- 易于将逗号分隔的字符串拆分为行

将 IntelliJ 连接到 Amazon Redshift

Tableau 数据存储迁移到 Redshift

拆分文件 - Redshift 复制命令

将每月固定值拆分为 Redshift 中的天数和国家/地区

在同一个数据库表中将一行拆分为多行