我正在运行查询以更改列数据类型并选择目标表查询表本身.我选择写优先"覆盖表".表所有列都是REQUIRED,表不为空.但运行查询后,所有列模式都会更改为NULLABLE.我的演员查询如下:
SELECT
CAST(id AS STRING) as id, column1, column2
FROM
dataset.mytable;
它总是这样,或者我犯了错误?
我弄错了?
不,这是设计,当你覆盖表原始模式丢失,列默认为可空
总是这样吗?
您应该使用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)