You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Athena中从JSON数组提取狗狗名字数组的SQL查询方案

问题

现有数据中包含名为pets的JSON数组变量(数据类型为ROW),示例数据如下:

pets
---
[{"type":"dog", "name":"fido"}, {"type":"cat", "name":"steve"}, {"type":"dog", "name":"carl"}]
[{"type":"dog", "name":"ellie"}, {"type":"fish", "name":"goldie"}]
[{"type":"cat", "name":"simone"}, {"type":"lizard", "name":"sparky"}]

需要编写SQL查询,得到每行对应的狗狗名字数组,期望输出格式:

dog_names
---
["fido", "carl"]
["ellie"]
[]

目前已能通过filter(pets, r -> r.type= 'dog')过滤出狗狗条目,但无法批量提取名字,且无狗狗时需避免报错。

解决方案

可以结合filter和transform函数实现需求,SQL语句如下:

transform(filter(pets, r -> r.type = 'dog'), r -> r.name) AS dog_names

说明

  • filter(pets, r -> r.type = 'dog'):先从pets数组中筛选出所有类型为dog的元素,得到仅包含狗狗条目的子数组;
  • transform(..., r -> r.name):遍历过滤后的子数组,提取每个元素的name字段值,最终生成由狗狗名字组成的数组;
  • 当没有狗狗时,filter返回空数组,transform处理空数组会直接返回空数组[],不会触发报错,完全满足需求。

内容的提问来源于stack exchange,提问作者DavidWebb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 12:57:12