【问题标题】:BigQuery synchronous query is not returning any resultsBigQuery 同步查询未返回任何结果
【发布时间】:2017-05-20 12:41:49
【问题描述】:

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

通过 BigQuery API 进行的查询有两种类型。同步和异步。使用提供的示例代码,异步对我来说非常适合,但同步不能。

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

官方文档示例使用查询:

    """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 命令要等到查询完成?

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

【问题讨论】:

    标签: google-bigquery


    【解决方案1】:

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

    例如(我假设您使用的是 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]..
    

    【讨论】:

    • 谢谢,我没有意识到这个方法有超时设置。似乎最好总是使用其他方法。
    猜你喜欢
    • 2011-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-11
    • 2014-12-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多