我在s3中有一个CSV(制表符分隔),需要在JSON字段上查询。
uid\tname\taddress
1\tmoorthi\t{"rno":123,"code":400111}
2\tkiranp\t{"rno":124,"street":"kemp road"}
如何在Amazon Athena中查询此数据?
我应该可以查询:
select uid
from table1
where address['street']="kemp road";
答案 0 :(得分:4)
您可以尝试使用json_extract()
命令。
来自Extracting Data from JSON - Amazon Athena:
您可能拥有包含JSON编码字符串的源数据,您不一定要将其反序列化为Athena中的表。在这种情况下,您仍然可以使用Presto中提供的JSON函数对此数据运行SQL操作。
WITH dataset AS (
SELECT '{"name": "Susan Smith",
"org": "engineering",
"projects": [{"name":"project1", "completed":false},
{"name":"project2", "completed":true}]}'
AS blob
)
SELECT
json_extract(blob, '$.name') AS name,
json_extract(blob, '$.projects') AS projects
FROM dataset
此示例显示如何使用json_extract()
从JSON中提取字段。因此,您可能能够执行以下操作:
select uid
from table1
where json_extract(address, '$.street') = "kemp road";