如何在BigQuery中构造NULL数组与STRUCT并插入NULL字段?
在BigQuery中构造NULL数组与STRUCT的正确方法
针对你创建的表结构:
CREATE TABLE `project.dataset.table` ( field ARRAY<STRUCT<value STRUCT<float_val FLOAT64, int_val INT64, string_val STRING>>> )
你可以通过以下几种方式正确构造符合要求的NULL相关数组/STRUCT:
1. 插入整个数组为NULL值
如果需要让field字段直接为NULL,写法最简单:
SELECT NULL AS field
2. 构造包含单个NULL元素的数组
如果数组里要存一个NULL的STRUCT元素:
SELECT [NULL] AS field
3. 构造包含所有字段为NULL的STRUCT元素的数组
这是你尝试实现的场景,只需用STRUCT字面量语法嵌套构造,不需要嵌套SELECT AS STRUCT:
SELECT [STRUCT(STRUCT(NULL AS float_val, NULL AS int_val, NULL AS string_val) AS value)] AS field
若要明确指定类型避免隐式转换问题,可添加CAST:
SELECT [STRUCT( STRUCT( CAST(NULL AS FLOAT64) AS float_val, CAST(NULL AS INT64) AS int_val, CAST(NULL AS STRING) AS string_val ) AS value )] AS field
错误原因说明
你之前的SQL错误在于嵌套使用了SELECT AS STRUCT,在BigQuery中构造STRUCT直接用STRUCT(...)语法即可,内部嵌套SELECT AS STRUCT会被解析为无效的表达式/子查询,从而触发语法错误。
内容的提问来源于stack exchange,提问作者TMo
相关产品推荐
相关产品推荐

