BigQuery同步查询不返回任何结果

时间:2017-01-05 20:25:54

标签: google-bigquery

根据https://cloud.google.com/bigquery/querying-data#asynchronous-queries列出的BigQuery文档:

通过BigQuery API有两种类型的查询。同步和异步。 Async使用提供的示例代码完美地为我工作,但是同步没有。

如果您点击上面的链接,则会显示我所指的示例代码。我注意到它实际上并没有等到结果可用。如果我在time.sleep(15)之前插入while True,我的结果会按预期返回。如果没有,则返回空结果集。

官方文档示例使用查询:

    """SELECT word, word_count
    FROM `bigquery-public-data.samples.shakespeare`
    WHERE corpus = @corpus
    AND word_count >= @min_word_count
    ORDER BY word_count DESC;
    """

此查询返回非常快,但我的查询需要几秒钟才能返回结果。

我的问题是,为什么文档声明run_sync_query命令在查询完成之前等待,如果结果实际上无法访问且没有返回结果?

我无法提供我使用的查询,因为它是私有数据源。要生成,您只需要一个需要几秒钟才能运行的查询。

1 个答案:

答案 0 :(得分:4)

看起来像request/call is timing out,而不是查询本身。默认时间是10秒。尝试在代码中设置timeout_ms

enter image description here

例如(我假设您使用的是Python):

..[auth/client setup stuff]..

query = client.run_sync_query('<your_query>')
query.timeout_ms = 60000 #set the request timeout
query.use_legacy_sql = False
query.use_query_cache = True
query.run()

..[do something with the results]..