我正在编写运行某个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()"线。我不知道命名的工作是在会话结束或工作执行之后生效的。如何检查已命名的作业是否已存在,如果存在,如何删除现有的命名作业以创建新作业?或者,在运行异步作业时,是否必须创建随机或唯一的作业名称?
答案 0 :(得分:2)
您需要使用唯一的作业ID,因为这是与操作的元数据相关联的内容。参考querying data example,您的代码可能是这样的:
job_name = 'vci-temp-sales-query-job_{}'.format(uuid.uuid4())