对结构数组的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列struct类型和2行。

如何预先获得所需的结果?有可能吗?

预先感谢

解决方法

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

您可以通过以下方式获得所需的输出

SELECT ROW(t.name,t. department)

或者通过防止unnesttransform()“拆包”行:

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