使用python将bigquery分区替换为bigquery表中暂存的数据



我有30天的数据暂存在bigquery中的每日分区表中。我有一个更大的表,里面每天都有5年的数据分区。我需要从阶段表中进行选择,并替换较大表中现有分区的全部内容,以用于我的阶段表中的30天。我的偏好是使用Python来完成这项工作,而不是先将数据提取到csv,然后如果可以避免的话,将其加载回BQ。有什么建议吗?提前谢谢。

您所需要做的就是查询所需内容,并为查询设置目标表。

from google.cloud import bigquery
client = bigquery.Client()
query = """
SELECT firstname + ' ' + last_name AS full_name,
FLOOR(DATEDIFF(CURRENT_DATE(), birth_date) / 365) AS age
FROM dataset_name.persons
"""
dataset = client.dataset('dataset_name')
table = dataset.table(name='person_ages')
job = client.run_async_query('fullname-age-query-job', query)
job.destination = table
job.write_disposition= 'truncate'
job.begin()

这实际上对我不起作用,但我确实认为这是正确的,尽管它适用于大型查询客户端库的旧版本。你的回答确实帮了我很大的忙,我会接受的。我正在使用最新的图书馆。以下对我有效:

for partition in gbq.list_partitions(stage_table_ref):
table_partition = table_name+'$'+partition
stage_partition = stage_dataset.table(table_partition)
target_partition = target_dataset.table(table_partition)
job_config = bigquery.CopyJobConfig()
job_config.write_disposition = bigquery.WriteDisposition.WRITE_TRUNCATE   
gbq.copy_table(stage_partition, target_partition,job_config = job_config) 

最新更新