Как использовать потоковое вещание Bigquery insertall в приложении engine & python
Я хотел бы разработать приложение для приложения, которое напрямую передает данные в таблицу BigQuery.
Согласно документации Google есть простой способ потоковой передачи данных в bigquery:
Вот пример фрагмента кода о том, как должна быть закодирована вставка потоковой передачи:
body = {"rows":[
{"json": {"column_name":7.7,}}
]}
response = bigquery.tabledata().insertAll(
projectId=PROJECT_ID,
datasetId=DATASET_ID,
tableId=TABLE_ID,
body=body).execute()
Хотя я загрузил клиент api, я не нашел ссылки на модуль или объект "bigquery", упомянутый в примере выше Google.
Где находится объект bigquery (из фрагмента)?
Может ли кто-нибудь показать более полный способ использования этого фрагмента (с правильным импортом)?
Я много искал и нашел документацию запутанной и частичной.
Ответы
Ответ 1
Минимальная работа (пока вы заполните правильные идентификаторы для своего проекта):
import httplib2
from apiclient import discovery
from oauth2client import appengine
_SCOPE = 'https://www.googleapis.com/auth/bigquery'
# Change the following 3 values:
PROJECT_ID = 'your_project'
DATASET_ID = 'your_dataset'
TABLE_ID = 'TestTable'
body = {"rows":[
{"json": {"Col1":7,}}
]}
credentials = appengine.AppAssertionCredentials(scope=_SCOPE)
http = credentials.authorize(httplib2.Http())
bigquery = discovery.build('bigquery', 'v2', http=http)
response = bigquery.tabledata().insertAll(
projectId=PROJECT_ID,
datasetId=DATASET_ID,
tableId=TABLE_ID,
body=body).execute()
print response
Как говорит Иордания: "Обратите внимание, что это использует робот appengine для аутентификации с помощью BigQuery, поэтому вы должны добавить учетную запись робота в ACL набора данных. Обратите внимание, что если вы также хотите использовать робота для запуска запросов, вам нужно, чтобы робот был членом команды проекта, чтобы иметь возможность запускать задания".
Ответ 2
Вот пример рабочего кода приложения appengine, который передает записи в таблицу BigQuery. Это open source на code.google.com:
http://code.google.com/p/bigquery-e2e/source/browse/sensors/cloud/src/main.py#124
Чтобы узнать, откуда возникает объект bigquery, см.
http://code.google.com/p/bigquery-e2e/source/browse/sensors/cloud/src/config.py
Обратите внимание, что это использует робот appengine для аутентификации с помощью BigQuery, поэтому вы должны добавить учетную запись робота в ACL набора данных.
Обратите внимание, что если вы также хотите использовать робота для запуска запросов, а не только для потока, вам нужно, чтобы робот был членом команды проекта, чтобы иметь возможность запускать задания.