如何将CSV文件加载到包含JSON字段的Amazon Athena

时间:2018-05-14 13:34:09

标签: amazon-s3 amazon-athena

我在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";

1 个答案:

答案 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";