Google Bigquery返回null / no行

时间:2015-03-09 09:39:49

标签: python google-app-engine google-api google-bigquery

使用python api查询大查询有时会返回No响应或No rows。尽管重试相同的查询再次正常工作。这是什么原因?

def execute(self,bq_query,query_type,uid):
    self.cache = cache.Cache()

    cached_response = self.cache.get(bq_query)
    if(cached_response is not None):
        query_response = json.loads(zlib.decompress(cached_response))
        app.logger.info("cached")
    else:
        big_query=_BigQuery(uid)
        query_response = big_query.run_in_big_query(bq_query)
        if not query_response:
            logging.warning('**************************1.No reponse')
            abort(404)
        elif 'rows' not in query_response.keys():
            logging.warning('**************************2.No rows')
            abort(404)



def run_in_big_query(self, sql):
    start = time.time()
    queryData = {'query': sql}
    queryRequest = self.service.jobs()
    queryResponse = queryRequest.query(projectId=project_id, 
body=queryData).execute()
    app.logger.info('Query Time %f' % (time.time() - start))
    return queryResponse

1 个答案:

答案 0 :(得分:2)

查询方法将查询作业插入到BigQuery中。默认情况下,查询方法使用10s timeout运行。如果指定了非零超时值,则作业将等待结果,并在超时时抛出异常。

了解更多关于

的信息
  • 同步查询
  • 异步查询

https://cloud.google.com/bigquery/querying-data

你也有Python代码,如何轮询直到作业完成。