在 AWS Redshift 中取消数组的嵌套

Mak*_*oni 8 sql amazon-redshift unnest

我有一个带有列的表,其中包含如下列表:

id
[1,2,3,10]
[1]
[2,3,4,9]
Run Code Online (Sandbox Code Playgroud)

我想要的结果是一个包含未列出值的表,如下所示:

id2
1
2
3
10
1
2
3
4
9
Run Code Online (Sandbox Code Playgroud)

我尝试了在网上找到的不同解决方案、aws 文档SO 解决方案博客文章,但没有任何运气,因为我在列中有一个列表,而不是 json 对象。任何帮助表示赞赏!

Sve*_*end 10

更新(2022):Redshift 现在支持数组并允许轻松“取消嵌套”它们。

语法很简单,就是有一个FROM the_table AS the_table_alias, the_table_alias.the_array AS the_element_alias

这是问题中提到的数据的示例:

WITH
  -- some table with test data
  input_data as (
    SELECT array(1,2,3,10)  as  id
    union all
    SELECT  array(1)  as id
    union all
    SELECT  array(2,3,4,9)  as id
  ) 


SELECT 
  id2 
FROM 
  input_data AS ids, 
  ids.id AS id2
Run Code Online (Sandbox Code Playgroud)

产生预期的结果:

id2
---
1
2
3
4
9
1
2
3
10 
Run Code Online (Sandbox Code Playgroud)

请参阅此处了解更多详细信息和具有更深嵌套级别的示例:https://docs.aws.amazon.com/redshift/latest/dg/query-super.html