sql athena/presto 检查嵌套 json 数组中的值是否

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

我在 athena 中运行查询,如下所示:

SELECT element_at(col_name,1).entities FROM "db_name"."the_table" limit 10;

我得到了一个嵌套的 json/dict 数组,如下所示:

[{country=US,content=content},{country=DE,content=content},{country=GB,content=content}]
[]
[{country=HK,content=content},{country=IN,content=content},{country=GB,content=content}]
[]

并且我想创建一个查询,如果有任何一个

country=US
,则提取该行。

所以我尝试了:

SELECT * FROM "db_name"."the_table" WHERE any_match(element_at(col_name,1).entities, e-> e.country= 'US') limit 10;

但是这崩溃了,说它不是一行

我想提取国家/地区为美国的行..

sql amazon-athena presto trino
1个回答
0
投票

还有另一种类型可以这样写在输出中 - 它是

MAP
,所以你可以尝试:

WHERE any_match(element_at(col_name,1).entities, e-> e['country'] = 'US')

或(如果密钥是可选的):

WHERE any_match(element_at(col_name,1).entities, e-> element_at(e, 'country') = 'US')
© www.soinside.com 2019 - 2024. All rights reserved.