将分区和未分区的BigQuery表从美国移至EU

时间:2018-05-09 08:46:43

标签: google-bigquery

我需要将具有许多表(分区和未分区)的BigQuery数据集从美国移动到欧盟。 如果源表是未分区的,那么bq extract数据到GCS并bq load在另一个区域中的文档记录方式可以正常工作,到目前为止一直很好。

但是,如果源表是分区的,则在加载步骤期间,数据和分区之间的映射将丢失,并且我最终会在一个分区内拥有所有数据。

BQ中是否存在导出和导入分区表的良好(自动)方式?任何指针将不胜感激!

2 个答案:

答案 0 :(得分:0)

有几种方法可以做到这一点,但我个人会使用Cloud Dataflow来解决它。您需要为Dataflow支付更多费用,但从长远来看,您将节省大量时间和脚本。

高级别:

  1. 启动数据流管道
  2. 在美国读取分区表(可能会将_PARTITIONTIME别名化,以便以后更轻松)
  3. 使用相同的分区将结果写回BigQuery。
  4. 它与所谈论的here基本相同。

答案 1 :(得分:0)

另一种解决方案是使用DML加载数据,而不是加载https://cloud.google.com/bigquery/docs/using-dml-with-partitioned-tables。由于表中有一个时间戳列来推断分区,因此可以使用

INSERT INTO PROJECT_ID.DATASET.mytable (_PARTITIONTIME, field1, field2) AS SELECT timestamp_column, 1, “one” FROM PROJECT_ID.DATASET.federated_table

您可以定义永久联合表,或临时联合表https://cloud.google.com/bigquery/external-data-cloud-storage#permanent-tables。你需要支付DML,而负载是免费的。