Sql Athena查询JSON字段存储为字符串

Sql Athena查询JSON字段存储为字符串,sql,amazon-web-services,amazon-athena,Sql,Amazon Web Services,Amazon Athena,我有一张雅典娜的桌子,上面有一块地 fields (string) 数据看起来像 {"field_1":"value_1","field_2":"value_2"} {"field_1":"value_3","field_2":"value_4"} ... 我想提出以下问题: select "fields".&qu

我有一张雅典娜的桌子,上面有一块地

fields (string)
数据看起来像

{"field_1":"value_1","field_2":"value_2"}
{"field_1":"value_3","field_2":"value_4"}
...
我想提出以下问题:

select "fields"."field_1" as field_1 from table_name where field_1 = "something"

我尝试了很多方法,但要么得到一个错误,要么字段_1只有空值。任何帮助都将不胜感激。

根据示例数据,字段看起来是JSON。所以我要做的第一件事是使用json_parse来转换它

语法fields.field_1适用于行-列-但是,看起来不可能在基于Presto 0.172的Athena中对行强制转换json-请参阅

您可以将其转换为地图,然后通过:[]访问它

例如:

with example as
(
    SELECT * FROM (
    VALUES
        ('{"field_1":"value_1","field_2":"value_2"}'),
        ('{"field_1":"value_3","field_2":"value_4"}')
    ) AS t (fields)
)
,example_cast as
(
    select *
    ,cast(json_parse(fields) AS map<varchar,varchar>) fields_parsed
    from example 
)
select *
,fields_parsed['field_1'] fields_field_1
from example_cast;