Presto Query of array of structs devuelve elementos de estructura individuales como columnas en lugar de filas de estructuras

Aug 15 2020

Aquí hay datos de muestra y consultas rápidas con resultados reales y resultados deseados.

WITH
dataset AS (
  SELECT 
      ARRAY[
        CAST(ROW('Sally', 'engineering') AS ROW(name VARCHAR, department VARCHAR)),
        CAST(ROW('John', 'finance') AS ROW(name VARCHAR, department VARCHAR))
      ] AS users
)
select t.*
from dataset
cross join unnest(users) as t

Salida Devolvió 2 columnas : nombre y departamento y 2 filas.

Salida deseada : 1 columna de tipo struct y 2 filas.

¿Cómo obtengo el resultado deseado en presto? ¿Es posible?

Gracias por adelantado,

Respuestas

2 PiotrFindeisen Aug 15 2020 at 13:44

El comportamiento que está observando es el comportamiento estándar de SQL.

Puede obtener la salida deseada con

SELECT ROW(t.name, t. department)

o, al evitar que unnest"desempaque" las filas con un transform():

CROSS JOIN UNNEST(transform(users, u -> ROW(u)) as t