我正在 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"
}
]
}
]
你必须将桌子和unnest之间的所有内容合并起来。
Select col, el
From tbl t, arraycol el
Union all
Select col, null
From tbl
Where isnull(get_array_length(arraycol),0)=0