首页 > 解决方案 > 结构数组的 Presto 查询返回单个结构元素作为列而不是结构行

问题描述

这是示例数据和带有实际结果和期望结果的 presto 查询。

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

输出返回 2 列:名称和部门以及 2 行。

所需输出:1 列结构类型和 2 行。

我如何在 presto 中获得所需的结果?可能吗?

提前致谢,

标签: presto

解决方案


您正在观察的行为是 SQL 标准行为。

您可以使用

SELECT ROW(t.name, t. department)

或者,通过防止 使用unnesta 来“解包”行transform()

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

推荐阅读