Rastreé datos usando aws glue para importar datos json de una carpeta s3 que contiene datos donde las llaves raíz son una matriz como esta:
[{id: '1', name: 'rick'},{id: '2', name: 'morty'}]Esto termina resultando en un esquema como este:
array<struct<expand:string,id:string,name:string>> ¿Cómo consulto por name en Athena?
Si pruebo esto:
SELECT * FROM people_s3_buckets WHERE name = "rick";Obtuve el siguiente error:
SYNTAX_ERROR: Column 'name' cannot be resolvedTal vez, hay una manera de configurar el rastreador de Glue para agregar solo los elementos dentro de la matriz y evitar el anidamiento por completo.
Para consultar campos de elementos dentro de una matriz, primero debe UNNEST . Suponiendo que la estructura array<struct<expand:string,id:string,name:string>> corresponde a los members de la columna, deberá hacer
SELECT * FROM people_s3_buckets, UNNEST(members) as t(member) WHERE member.name = 'rick'Tenga en cuenta que debe usar comillas simples en lugar de comillas dobles.
Aquí están los documentos oficiales de AWS sobre el manejo de matrices en AWS Athena: Querying Arrays