You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL如何合并数组内不同Schema的Struct并为缺失字段填充Null

问题原因

直接使用UNION ALL运行失败,是因为两张表的a字段类型不匹配:

  • baz_v1的a字段类型为ARRAY<STRUCT<x INT64>>,数组内的结构体只有x一个字段
  • baz_v2的a字段类型为ARRAY<STRUCT<x INT64, y INT64>>,数组内的结构体有x、y两个字段

UNION ALL要求上下两个查询的对应列的数量、数据类型完全一致,所以需要先对齐baz_v1的a字段结构,补上缺失的y字段,默认值设为NULL即可。

实现代码

替换原待实现逻辑部分即可:

SELECT * FROM baz_v2
UNION ALL
SELECT
  ARRAY(SELECT AS STRUCT x, CAST(NULL AS INT64) AS y FROM UNNEST(a)) AS a,
  b
FROM baz_v1

运行后即可得到你需要的拼接结果,baz_v1对应行的a.y会自动填充为NULL。


内容的提问来源于stack exchange,提问作者Tobias Hermann

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 16:06:08