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

合并不同列的表时,如何为NULL的STRUCT类型指定字段名?

解决UNION ALL后STRUCT字段名丢失的问题

当然可以解决,你只需要在table1的x字段类型声明里明确指定STRUCT的字段名,而不是只写类型。

UNION ALL会以第一个表的字段结构(包括STRUCT内部的字段名)作为最终输出的结构模板,所以只要在第一个表的NULL STRUCT定义里把字段名加上,后续表的同类型STRUCT字段就能自动对齐名称,不会被重命名为_field_1、_field_2。

修改后的SQL代码如下:

WITH
  table1 AS (
  SELECT
    STRUCT(1 AS b, 2 AS c) AS a,
    -- 明确指定STRUCT的字段名y和z
    CAST(NULL AS STRUCT<y STRING, z STRING>) AS x),
  table2 AS (
  SELECT
    CAST(NULL AS STRUCT<INT64, INT64>) AS a,
    STRUCT('hello' AS y, 'world' AS z) AS x)
SELECT
  *
FROM
  table1
UNION ALL
SELECT
  *
FROM
  table2

执行这段代码后,输出中的x字段会正确保留y和z的字段名,不会出现_field_1、_field_2的情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 04:57:36