AWS Athena 数据库解析json格式字段

提出问题

Athena数据库中遇到如下json格式的字段:

{"name": "Susan Smith",
"org": "engineering",
"projects":
    [
     {"name":"project1", "completed":false},
     {"name":"project2", "completed":true}
    ]
}

希望解析该字段,提取关键信息

初步解析

首先任务是提取name的值和projects的值。我们来试一下:

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

结果如下:

   name                                 projects
"Susan Smith"	[{"name":"project1","completed":false},{"name":"project2","completed":true}]

其中name和projects均为json格式。如果想要得到varchar格式的结果,只需要将json_extract替换为json_extract_scalar即可。但需要注意json_extract_scalar不能作用于array, maps,structs格式。

深度解析

下面展示获取projects下的第一个name的值:

WITH dataset AS (
  SELECT '{"name": "Susan Smith",
           "org": "engineering",
           "projects": [{"name":"project1", "completed":false},{"name":"project2", "completed":true}]}'
    AS blob
)
SELECT
  json_extract_scalar(blob, '$.name') AS name,
  json_extract(blob, '$.projects[0].name') AS projects
FROM dataset

需注意数组中的元素计数从 0 开始。

本文是在阅读athena官方文档时的读书笔记,原文见:Extracting Data from JSON

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值