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 - 将数据拆分为多行的主要内容,如果未能解决你的问题,请参考以下文章