BigQuery中从NULLABLE到REQUIRED的端口字段

Ale*_*ino 6 schema data-migration google-bigquery

我试图将一个BigQuery表移动到一个新的模式,该模式具有一些额外的新NULLABLE字段,并且其中一个字段f已经变为REQUIRED(在旧模式中它们是NULLABLE).

我尝试通过命令使用新架构更新表

bq update <table> <new_schema>

我得到了错误

BigQuery error in update operation: Provided Schema does not match Table

作为第二次尝试,我使用新字段创建了一个临时空表,然后尝试在那里附加来自查询的数据(来自旧表的SELECT*),但是我收到错误:

Invalid schema update. Field f has changed mode from REQUIRED to NULLABLE

有没有办法轻松完成此迁移?当然我可以忽略表中的字段f实际为NULL的行.如果BigQuery可以从查询中推断出它会很酷.我试着这样做

SELECT * FROM old_table WHERE f IS NOT NULL

并使用新架构将结果附加到表中,但这不起作用.

Mic*_*tin 0

使用第二种方法 - 创建新表并在其中附加数据。但使用StandardSQL dialect. 它将避免“更改模式”错误。当然,如果您尝试插入 NULL,查询仍然会失败。