【问题标题】:BigQuery query response 'jobComplete': FalseBigQuery 查询响应“jobComplete”:错误
【发布时间】:2016-11-08 17:03:55
【问题描述】:

我有以下功能:

def query_big_query(query_data, project_id):
    credentials = ServiceAccountCredentials.from_json_keyfile_name('credentials_bq.json')
    bigquery_service = build('bigquery', 'v2', credentials=credentials)
    try:
        query_request = bigquery_service.jobs()
        query_response = query_request.query(projectId=project_id, body=query_data).execute()
        return query_response
    except HttpError as error:
        print ('Error :{}'.format(error.content))
        raise error

但是有些查询没有返回数据,因为查询需要一些时间,并返回以下字符串:

{u'kind': u'bigquery#queryResponse', u'jobComplete': False, u'jobReference': {u'projectId': u'od', u'jobId': u'job_5wAuC'}}

我怎样才能等到作业完成(真)?或者我应该以不同的调用请求结果?

【问题讨论】:

    标签: python python-2.7 google-bigquery


    【解决方案1】:

    尝试在 body 中指定更大的 timeoutMs,例如:

    query_response = query_request.query(projectId=project_id, body={'query': your_query, 'timeoutMs': 180000}).execute()

    默认情况下,timeoutMs 为 10000,即 10 秒。

    参考:documentation

    【讨论】:

      【解决方案2】:

      试试这个:

      response = bigquery_service.jobs().getQueryResults(projectId=my_project_id, jobId=my_job_id).execute()
      while not response['jobComplete']:
          print "waiting for response..."
          time.sleep(1)
          response = bigquery_service.jobs().getQueryResults(projectId=my_project_id, jobId=my_job_id).execute()
      return response
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-27
        • 2021-09-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-05
        相关资源
        最近更新 更多