2017-01-05 5 views
2

を返していません:BigQueryのAPIを介して照会の2種類がありますBigQueryの同期クエリは<a href="https://cloud.google.com/bigquery/querying-data#asynchronous-queries" rel="nofollow noreferrer">https://cloud.google.com/bigquery/querying-data#asynchronous-queries</a>に掲載されているBigQueryのドキュメントによると、任意の結果

。同期と非同期Asyncは、提供されたサンプルコードを使用して私にとって完璧に動作しますが、同期はありません。

上記のリンクをクリックすると、私が参照しているサンプルコードが表示されます。私が気づいたのは、実際に結果が得られるまで待たないということです。 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コマンドがクエリが完了するまで待つということですか?

プライベートデータソースであるため、私が使用したクエリは提供できません。生成するには、実行するのに数秒かかるクエリが必要です。

答えて

3

クエリ自体ではなく、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].. 
+0

おかげで、私はこの方法では、タイムアウト設定を持っていたことを実現didntの。常に他の方法を使用するのが最良と思われます。 – user3734725

+0

@ user3734725 - クール。あなたは私の答えを受け入れてください。 –

関連する問題