簡體   English   中英

使用python將bigquery分區替換為在bigquery表中暫存的數據

[英]replace bigquery partition with data staged in bigquery table using python

我在bigquery的每日分區表中暫存了30天的數據。 我有一個更大的表,每天有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) 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM