我有以下json格式的数据
create table events (
id_user bigint,
experiments ARRAY <
STRUCT <
id: BIGINT,
impressed: BOOLEAN,
variantId: BIGINT
>
>
)
describe events
返回:
columns | types
id_user | bigint
experiments | array(row(id bigint, impressed boolean, variantid bigint))
我想使用以下命令取消嵌套数组结构
select CAST(ROW(array[experiments]) AS ROW(id BIGINT, impressed boolean, variantid bigint)) as test
from events
和presto返回以下错误: 失败:fromType和toType的大小必须匹配
当我在数组中输入伪数据时,命令运行平稳。
问题是什么,我如何克服?
答案 0 :(得分:1)
presto返回以下错误:失败:fromType和toType的大小必须匹配
此:
ROW(array[experiments])
用一个字段构成一个ROW
,类型为array
的“ row
”
我要取消嵌套
如果要unnest
数组,则需要类似的内容:
SELECT *
FROM events
LEFT JOIN UNNEST(experiments) AS t(experiment) ON true
(对于较早的Presto版本,使用CROSS JOIN
而不是LEFT JOIN .. ON true
;请注意,这会改变语义)