将可空字段恢复为必填

时间:2019-01-31 16:29:04

标签: google-bigquery

我使用.setSchemaUpdateOptionsALLOW_FIELD_RELAXATION将数据追加到我的表中,该表具有几个不存在/空值的REQUIRED字段。我的印象是它将暂时放宽对REQUIRED的限制。不幸的是,它似乎已将我的所有字段永久更改为NULLABLE。

是否有一种方法可以还原此更改而不重播整个表?

2 个答案:

答案 0 :(得分:0)

由于此表中的某些行中现在存在空值,因此您将无法还原该表以具有必需的约束

在此处了解更多信息:https://cloud.google.com/bigquery/docs/managing-table-schemas

放松列的模式 当前,您可以对列模式进行的唯一受支持的修改是将其从“必需”更改为“空”。更改列的距离需要NULLABLE模式也称为柱放松。您可以放宽REQUIRED栏:

手动 使用加载或查询作业覆盖表时 使用查询作业将数据追加到表时 注意:更改REQUIRED列NULLABLE不能撤消

什么的BigQuery做得非常好移动台之间巨大的数据集(注意成本) 您可以: 1.更新当前表中的空值 2.使用REQUIRED字段重新创建一个新表(如果要保留名称,则也必须在TEMP表中停止) 3.启动一个简单的负载作业从旧的数据迁移到新的表

答案 1 :(得分:0)

您需要重新创建表,可以就地执行此操作:

CREATE OR REPLACE TABLE dataset.table
(
  x INT64 NOT NULL,
  y STRING NOT NULL,
 z BOOL NOT NULL
) AS
SELECT *
FROM dataset.table

您必须列出列及其类型,以及想要的列的NOT NULL属性。