如何在 AWS Athena 中访问嵌套数组和 JSON

How to access nested arrays and JSON in AWS Athena

我正在尝试处理来自 Athena 中的 s3 日志的一些数据,这些数据具有复杂的类型,我不知道如何使用。

我有一个 table 行,例如:

data
____
"[{\"k1\":\"value1\", \"key2\":\"value2\"...}]"

我想将其视为 (1) 一个数组以提取第一个元素,然后将第一个元素视为 JSON。

一切都很混乱,因为数据自然是一个字符串,包含一个数组,包含json,我什至不知道从哪里开始

您可以使用以下 JSON 命令组合:

SELECT 
     JSON_EXTRACT_SCALAR(
        JSON_EXTRACT_SCALAR('"[{\"k1\":\"value1\", \"key2\":\"value2\"...}]"','$'),
       '$[0].k1'
     )

内部 JSON_EXTRACT_SCALAR 将 return JSON ARRAY [{"k1":"value1", "key2":"value2"...}] 而外部 return相关值 value1

另一个类似的选项是使用 CAST(JSON :

SELECT 
     JSON_EXTRACT_SCALAR(
        CAST(JSON '"[{\"k1\":\"value1\", \"key2\":\"value2\"...}]"' as VARCHAR),
       '$[0].k1'
     )