我有一个雅典娜表,其中有一个字段
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"
我尝试了许多方法,但是对于field_1来说只有一个错误或只有空值。任何帮助将不胜感激。
答案 0 :(得分:1)
基于示例数据,它看起来像是JSON字段。因此,我要做的第一件事就是使用json_parse
进行转换。
"fields"."field_1"
语法适用于row
列-但是,似乎无法在Athena(基于Presto 0.172)中将json强制转换为行-参见{{ 3}}。
您可以将其转换为map<varchar,varchar>
,然后通过Cast from JSON in the 0.172 Presto Release Documentation访问它:[]
示例:
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;