我想将摄取时间分区表从一个区域迁移到另一个区域(使用自定义Python脚本),但是当我提取并加载它们时,它们都属于今天的分区,因为这是将它们摄取到表中时的情况。
如何确保新表包含与原始表相同的提取时间分区结构?
答案 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`