如何通过BigQuery的DDL修改STRUCT嵌套字段的描述?
为嵌套STRUCT字段添加描述的正确方法
先创建测试表:
CREATE OR REPLACE TABLE tmp.table_description_test AS ( SELECT 1 AS a, STRUCT(2 AS c, 3 AS d) AS b )
为普通字段(比如a或b)添加描述的操作很简单:
ALTER TABLE tmp.table_description_test ALTER COLUMN a SET OPTIONS (description = '字段a的描述');
ALTER TABLE tmp.table_description_test ALTER COLUMN b SET OPTIONS (description = '结构体字段b的描述');
但如果要为嵌套字段(例如b中的c或d)添加或修改描述,直接使用b.c这种写法会执行失败:
ALTER TABLE tmp.table_description_test ALTER COLUMN b.c SET OPTIONS (description = '字段b.c的描述');
触发的报错为:
语法错误:在[1:54]位置意外出现"."
正确操作方式
要给嵌套STRUCT里的字段添加描述,需要重新定义整个STRUCT的数据类型,在定义中为目标嵌套字段指定描述,再通过ALTER COLUMN ... SET DATA TYPE语句更新字段类型:
ALTER TABLE tmp.table_description_test ALTER COLUMN b SET DATA TYPE STRUCT<c INT64 OPTIONS(description='结构体b中c字段的描述'), d INT64 OPTIONS(description='结构体b中d字段的描述')>;
如果只需要修改单个嵌套字段的描述,也要完整写出整个STRUCT的定义,保留其他字段的原有类型和已有的描述信息。
内容的提问来源于stack exchange,提问作者Tobias Hermann
相关产品推荐
相关产品推荐

