使用分区表的BigQuery Write Truncate会导致分区信息丢失?

时间:2017-04-18 04:18:25

标签: google-bigquery

我们最近使用以下方法在BigQuery中对大多数表进行了分区:

  1. 运行数据流管道,该管道读取表并将数据写入新的分区表。

  2. 使用带有write truncate set的复制作业将分区表复制回原始表。

  3. 完成后,原始表将替换为新创建的分区表中的数据,但原始表仍未分区。所以我再次尝试了这个副本,这次首先删除了原始表,这一切都奏效了。

    问题是复制我们的分区表需要20分钟,这会导致我们的生产应用程序停机。那么有没有办法用分区表替换非分区表而不造成任何停机时间进行写截断?或者我们是否需要先删除表格才能替换它?

1 个答案:

答案 0 :(得分:1)

很抱歉,您无法将非分区表更改为已分区,反之亦然。您必须删除并重新创建表格。

我能想到的几个解决方法:

  1. 在您将查询迁移到分区表时保留两个表。迁移所有查询后,删除原始的非分区表。
  2. 如果您使用的是标准Sql,则可以使用分区表顶部的视图替换原始表。使用视图删除和替换原始表应该非常快。分区修剪仍应在视图顶部工作,因此您只需为查询的分区付费。分区修剪可能不适用于遗留sql。