我需要将具有许多表(分区和未分区)的BigQuery数据集从美国移动到欧盟。
如果源表是未分区的,那么bq extract
数据到GCS并bq load
在另一个区域中的文档记录方式可以正常工作,到目前为止一直很好。
但是,如果源表是分区的,则在加载步骤期间,数据和分区之间的映射将丢失,并且我最终会在一个分区内拥有所有数据。
BQ中是否存在导出和导入分区表的良好(自动)方式?任何指针将不胜感激!
答案 0 :(得分:0)
有几种方法可以做到这一点,但我个人会使用Cloud Dataflow来解决它。您需要为Dataflow支付更多费用,但从长远来看,您将节省大量时间和脚本。
高级别:
_PARTITIONTIME
别名化,以便以后更轻松)它与所谈论的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,而负载是免费的。