如何在BigQuery中的区域之间迁移摄取时间分区表?

时间:2020-08-28 06:53:23

标签: google-bigquery

我想将摄取时间分区表从一个区域迁移到另一个区域(使用自定义Python脚本),但是当我提取并加载它们时,它们都属于今天的分区,因为这是将它们摄取到表中时的情况。

如何确保新表包含与原始表相同的提取时间分区结构?

1 个答案:

答案 0 :(得分:1)

您可以使用Python客户端库提取表中的特定分区。因此,除了提取整个表之外,您还可以使用修饰符语法指定所需的分区(每日project.dataset.table$YYYYMMDD,每小时提取分区表project.dataset.table$YYYYMMDDHH),然后使用相同的分区按分区加载装饰器格式。

这是一些代码;

table_partition = client.get_table("my-project.my_dataset.mytable$20200727")
job_config = bigquery.job.ExtractJobConfig()
job_config.compression = bigquery.Compression.GZIP
job_config.destination_format = (bigquery.DestinationFormat.NEWLINE_DELIMITED_JSON)
extract_job = client.extract_table(table_partition, "gs://my-bucket", location="US", job_config=job_config)
job_result = extract_job.result()

您可以使用此查询找到所有摄入时间分区的列表:

SELECT DISTINCT _PARTITIONTIME AS pt
FROM `my-project.my_dataset.mytable`