从 JSON 值数组创建扁平化数组 Athena

问题描述 投票:0回答:1

假设我的数据中有以下 json 变量数组:

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')

这可以正确过滤数组,并且在数组基数为 1 的情况下,允许我使用索引正确查询,但我想捕获所有名称(并且在没有找到狗时不会中断)。

澄清一下,宠物的数据类型是ROW。

sql amazon-web-services amazon-athena presto trino
1个回答
1
投票

根据用法,您似乎有

ROW
数组,因此您可以以类似的方式在过滤后的数组上使用
transform

transform(filter(pets, r -> r.type= 'dog'), r -> r.name)
© www.soinside.com 2019 - 2024. All rights reserved.