Presto Query de array de structs retorna elementos de struct individuais como colunas em vez de linhas de structs

Aug 15 2020

Aqui estão dados de amostra e consultas prontas com resultados reais e resultados desejados.

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

Saída Retorna 2 colunas : nome e departamento e 2 linhas.

Saída desejada : 1 coluna do tipo struct e 2 linhas.

Como faço para obter o resultado desejado no presto? É possível?

Desde já, obrigado,

Respostas

2 PiotrFindeisen Aug 15 2020 at 13:44

O comportamento que você está observando é o comportamento padrão do SQL.

Você pode obter a saída desejada com

SELECT ROW(t.name, t. department)

ou, impedindo o unnestde "desempacotar" as linhas com um transform():

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