Отредактировано:
Федерико Бертола является правильным в решении и временной таблице, в которую записывает BigQuery , см. Эту ссылку .
В прошлый раз я не получил ошибку при запросе моего образца кода из общедоступной таблицы, но я могу воспроизвести ошибку сегодня, поэтому возможно, что этот симптом может показаться прерывистым.Я могу подтвердить, что ошибка устранена по предложению Федерико.
Вы можете получить ошибку «super (QueryJob, self) .result (timeout = timeout)», когда в строке запроса отсутствуют кавычки вокруг параметров взапрос.Кажется, вы допустили аналогичную ошибку с параметром format_strings в вашем запросе.Вы можете решить эту проблему, убедившись, что вокруг параметра экранированы кавычки:
(" + myparam + ")
, должен быть записан как
(\"" + myparam + "\")
. Вы должны проверить строку запроса, где вы используете параметры, иначните с более простого запроса, такого как
select productId, eventType, count(*) as count from `xyz:xyz.abc`
, и увеличивайте свой запрос по мере продвижения.
Для справки, вот что сработало для меня:
from google.cloud import bigquery
client = bigquery.Client()
job_config = bigquery.QueryJobConfig()
def get_data_from_bq(myparam):
query = "SELECT word, SUM(word_count) as count FROM `publicdata.samples.shakespeare` WHERE word IN (\""+myparam+"\") GROUP BY word;"
query_job = client.query(query, job_config=job_config)
return query_job.result()
mypar = "raisin"
x = 1
while (x<9):
iterator = get_data_from_bq(mypar)
print "==%d iteration==" % x
x += 1