我正在尝试将一些使用旧google客户端gem的旧代码移到惯用的Ruby客户端。
该过程是一个简单的查询作业,它将其结果保存到另一个表中。在较旧的gem中,我使用了如下配置:
config= {
"jobReference": {
"projectId": GOOGLE_PROJECT,
'location'=> 'europe-west2'
},
'configuration'=> {
'query'=> {
'allowLargeResults' => true,
'createDisposition' => 'CREATE_IF_NEEDED',
'writeDisposition' => 'WRITE_TRUNCATE',
'query' => sql,
'destinationTable'=> {
'projectId'=> GOOGLE_PROJECT,
'datasetId'=> 'my_dataset',
'tableId'=> table,
'location'=> 'europe-west2'
}
}
},
}在更新库的文档之后,我将此作为基本测试运行( sql在其他地方定义)
bigquery = Google::Cloud::Bigquery.new
dataset = bigquery.dataset('my_dataset')
puts(dataset.location)
puts("1")
job = bigquery.query_job(sql, table: dataset.table(table), write: 'truncate', create: 'needed')
puts("2")
job.wait_until_done!
puts("3")
job.done?这将达到puts 2,在job.wait_until_done!上失败并出现错误Google::Cloud::NotFoundError: notFound: Not found: Job my_project:job_hApg5h0NQQb4Xbv7Sr3zzIXm5RWF
如果我“放置”job.job_id,我看到的ID与它表示找不到的ID相同。我尝试在多区域和单一位置的数据集中运行这个程序,但仍然是相同的错误。最终,我需要这只在“欧洲-西部2”地区运行。
有人能帮我和/或指出一个有用的例子吗?提前感谢!
发布于 2022-01-27 17:48:27
正如@Tlaquetzal所建议的那样,您可以将您的SQL查询替换为一个简单的SELECT 1,如下所示,并查看结果。
sql = "SELECT 1 FROM `project.dataset.table`"https://stackoverflow.com/questions/60772824
复制相似问题