红移超类型:左外不稳定

问题描述 投票:0回答:1

我正在 Redshift 中取消嵌套一些 JSON。 下面的代码可以工作,但是... ...如果记录没有“标签”元素,则整行将被有效地忽略并“内部”连接。

我读到在这种情况下你不能做“左外”。 不过,想检查是否有任何解决方法?

我记得在 Athena/Presto 中,如果子集为空,您可以合并并证明默认 array() ?

select
    src.ac, 
    src."day", 
    src.region, 
    i.resourcearn, 
    t.key, 
    t.value
from 
    ap_rs_meta_use_dev.getresources  src
    ,src.resourcetagmappinglist i
    ,i.tags t

示例数据:

 [  
  {         
    "resourcearn":"arn:aws:ec2:us-xxxx-x:123456789012:volume/vol-##############b",
     "tags": [          
     {
                "key": "ManagedBy",
                "value": "#########"            
     },{
                "key": "Environment",
                "value": "Production"           
     }      
    ]   
  } 
 ]
amazon-redshift
1个回答
0
投票

你必须将桌子和unnest之间的所有内容合并起来。

Select col, el
From tbl t, arraycol el

Union all

Select col, null
From tbl
Where isnull(get_array_length(arraycol),0)=0
© www.soinside.com 2019 - 2024. All rights reserved.