GoogleApp Engineを使用していますが、JSON APIを介してBigQueryにクエリを送信すると、誤った結果が返されることがあります。通常、BigQuery内の単一のテーブルに限定されます(作成されるバッチジョブごとに新しいテーブルを作成します)。本番環境でこの問題が発生した場合、送信したクエリをログに記録し、BigQueryダッシュボードを介して実行してみます。BigQueryダッシュボードは予想よりも長く実行されますが、予想される結果が返されます。
問題を示す応答には何もありません。jobComplete
として戻ってきますが、、、、、だけが 表示されTrue
ません。rows
jobReference
schema
totalRows = 0
このような状況では、現在の呼び出しで結果が返されることを期待する必要がある場合でも、呼び出しを行ってジョブの結果を取得するのが適切ですか?
関連コード:
http = httplib2.Http(memcache)
self.credentials = AppAssertionCredentials(scope='https://www.googleapis.com/auth/bigquery')
self.http = self.credentials.authorize(http=http)
self.service = build('bigquery','v2',http=self.http)
jobs = self.service.jobs()
result = jobs.query(projectId=settings.GOOGLE_APIS_PROJECT_ID,
body={'query': query}).execute()
応答:
{u'totalRows': u'0', u'kind': u'bigquery#queryResponse', u'jobComplete': True, u'jobReference': {u'projectId': u'<REMOVED>', u'jobId': u'<REMOVED>'}, u'schema': {u'fields': [<REMOVED>]}}
本番環境でクエリを何度再実行しようとしても、同じ結果が返されます(これは、memcacheを介してキャッシュが実行され、誤った結果が応答としてキャッシュされたことが原因である可能性がありますか?)