无法在BigQuery中修改STRUCT嵌套字段类型,求排查报错原因
BigQuery修改嵌套结构体字段类型报错原因及解决办法
报错原因
BigQuery的ALTER COLUMN语法不支持直接通过点分隔的路径(比如struct1.struct2.CurrentlyStringDataType)定位嵌套结构体中的子字段。ALTER COLUMN仅能直接操作顶级列,嵌套字段属于顶级结构体列的组成部分,无法单独通过路径指定修改。
正确操作方式
要修改嵌套结构体里的字段类型,需要重新定义整个顶级结构体列的完整类型,仅将目标子字段的类型调整为INTEGER,其余字段保持原有定义不变。
举个实际例子:
假设原表中struct1的结构是:
struct1 STRUCT<struct2 STRUCT<CurrentlyStringDataType STRING, other_field STRING>>
那么正确的修改语句应该是:
ALTER TABLE `project.dataset.table` ALTER COLUMN struct1 SET DATA TYPE STRUCT<struct2 STRUCT<CurrentlyStringDataType INTEGER, other_field STRING>>;
注意事项
- 必须完整保留结构体中所有其他字段的定义,否则未指定的字段会被移除。
- 若结构体层级更深,需要完整写出整个嵌套结构,仅修改目标字段的类型即可。
内容的提问来源于stack exchange,提问作者Spider
相关产品推荐
相关产品推荐

