当目标表在Bigquery上具有覆盖首选项时,所有列都有NULLABLE问题

eeb*_*ruu 0 google-bigquery

我正在运行查询以更改列数据类型并选择目标表查询表本身.我选择写优先"覆盖表".表所有列都是REQUIRED,表不为空.但运行查询后,所有列模式都会更改为NULLABLE.我的演员查询如下:

SELECT CAST(id AS STRING) as id, column1, column2 FROM dataset.mytable;

它总是这样,或者我犯了错误?

Mik*_*ant 5

我弄错了?

不,这是设计,当你覆盖表原始模式丢失,列默认为可空

总是这样吗?

您应该使用CREATE OR REPLACE TABLEDDL语句来实现您的目标.像下面的东西

CREATE OR REPLACE TABLE `project.dataset.mytable` (
  id STRING NOT NULL,
  column1 INT64 NOT NULL,
  column2 INT64 NOT NULL
) AS 
SELECT  CAST(id AS STRING) as id, column1, column2
FROM `project.dataset.mytable`
Run Code Online (Sandbox Code Playgroud)