bigquery python client.run_async_query给出错误:409已经存在

时间:2017-07-03 22:08:39

标签: python google-api google-bigquery

我正在编写运行某个SELECT查询异步的python脚本。在第一次运行脚本之后,它始终会出错,并出现以下错误:

  

google.cloud.exceptions.Conflict:409已存在:作业   ps-bigdata:vci-temp-sales-query-job(POST   https://www.googleapis.com/bigquery/v2/projects/ps-bigdata/jobs

以下是代码段:

from google.cloud import bigquery

google_auth_json_file = './myprojectauth.json'
client = bigquery.Client.from_service_account_json( google_auth_json_file )

project = 'myProject'
dataset = 'myDataset'
ds = client.dataset(dataset)
query = "SELECT X,y,z FROM mytable;"

#--- Clear/create temp table
temp_table_name = 'myTempTable'
temp_tbl = myCreateTempTableFunction( client, project, dataset, temp_table_name )

#--- Create an async query job
job_name = 'vci-temp-sales-query-job'
job = client.run_async_query(job_name, query)
job.destination = temp_tbl
job.write_disposition = 'WRITE_TRUNCATE'
job.begin()

此脚本在" job.begin()"线。我不知道命名的工作是在会话结束或工作执行之后生效的。如何检查已命名的作业是否已存在,如果存在,如何删除现有的命名作业以创建新作业?或者,在运行异步作业时,是否必须创建随机或唯一的作业名称?

1 个答案:

答案 0 :(得分:2)

您需要使用唯一的作业ID,因为这是与操作的元数据相关联的内容。参考querying data example,您的代码可能是这样的:

job_name = 'vci-temp-sales-query-job_{}'.format(uuid.uuid4())