我使用.setSchemaUpdateOptions
和ALLOW_FIELD_RELAXATION
将数据追加到我的表中,该表具有几个不存在/空值的REQUIRED字段。我的印象是它将暂时放宽对REQUIRED的限制。不幸的是,它似乎已将我的所有字段永久更改为NULLABLE。
是否有一种方法可以还原此更改而不重播整个表?
答案 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属性。