我正在尝试为查询运行一个简单示例。但是,我希望能够首先进行查询的干运行以检索所需的处理大小。这最终将起作用的方式是运行一堆查询,我试图首先估算总成本。基本上,我希望能够访问在UI中验证查询时看到的相同信息,并告诉您例如“此查询将处理6.5GB数据”。
现在,我可以正常运行查询并检索其结果而不会出现任何问题:
def get_event_data(client, pj, start_range, end_range, debug = False, dryRun = True):
query = '''#legacySQL
SELECT type FROM (
TABLE_DATE_RANGE([data_archive:day.],
TIMESTAMP(\'{0}\'),
TIMESTAMP(\'{1}\')
))
WHERE pj.name = \'{2}\' '''.format(start_range, end_range, project)
if (debug):
print(query)
job_config = bigquery.QueryJobConfig()
job_config.use_legacy_sql = True
job_config.dryRun = dryRun
query_job = client.query(query, job_config = job_config)
results = query_job.result()
rows = list(results)
print(len(rows))
for row in rows:
print(row)
但是,我在API文档中无法弄清楚的是我可以获得处理信息...因为我使用python客户端,我没有形成自己的请求,似乎没有收到http响应可能存储此信息的位置。任何帮助或指示将不胜感激,我还没有能够访问此信息:(
干杯,
格雷格
答案 0 :(得分:1)
我认为你很接近,而不是351
你应该在dryRun
对象中设置dry_run=True
:
QueryJobConfig
此行为发生在最新版本的Google Cloud API中,以便为用户提供更大的灵活性,以便他们为查询作业定义内容(我认为这是BigQuery后端团队的请求,因为这可以让他们创建新功能可以在不需要源代码部署的情况下使用。)
作为旁注,我建议使用Standard SQL版本而不是遗留版本,它更强大,更稳定。