0

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

我有一个表,其中包含以下行:

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

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

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

4

1 回答 1

1

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

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

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

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

SELECT 
     JSON_EXTRACT_SCALAR(
        CAST(JSON '"[{\"k1\":\"value1\", \"key2\":\"value2\"...}]"' as VARCHAR),
       '$[0].k1'
     )
于 2021-04-08T10:48:50.577 回答