Come utilizzare BigQuery Streaming Inserell On App Engine & Python
-
21-12-2019 - |
Domanda
Vorrei sviluppare un'applicazione Motore App che trasmette direttamente i dati in una tabella BigQuery.
Secondo la documentazione di Google c'è un modo semplice per trasmettere i dati in bigQuery:
- .
-
https://developers.google.com/bigquery / streaming-data-in-bigquery # Streaminginsertexamples (Nota: nel link sopra è necessario selezionare la scheda Python e non Java)
Ecco lo snippet del codice di esempio su come deve essere codificato l'inserto in streaming:
body = {"rows":[
{"json": {"column_name":7.7,}}
]}
response = bigquery.tabledata().insertAll(
projectId=PROJECT_ID,
datasetId=DATASET_ID,
tableId=TABLE_ID,
body=body).execute()
.
Sebbene abbia scaricato l'API del client non ho trovato alcun riferimento a un modulo / oggetto "bigquery" referenziato nell'esempio di Google sopra.
Dove si dovrebbe trovare l'oggetto BigQuery (da Snippet)?
Qualcuno può mostrare un modo più completo per utilizzare questo snippet (con le giuste importazioni)?
Ho cercato di cercare una documentazione molto e trovata confusa e parziale.
Soluzione
Minimo funzionante (finché si compili gli ID giusti per il tuo progetto) Esempio:
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
.
AS Jordan dice: "Si noti che questo utilizza il robot Appengine per autenticare con BigQuery, quindi dovrai aggiungere l'account Robot all'ACL del set di dati. Nota che se si desidera utilizzare il robot per eseguire query,Non solo il flusso, hai bisogno del robot per essere un membro del "team" del progetto in modo che sia autorizzato a eseguire posti di lavoro. "
Altri suggerimenti
Ecco un esempio di codice funzionante da un'app Appengine che trasmette record in una tabella bigquery.È open source su code.google.com:
http://code.google.com/p/bigquery-e2e/source/browse/sensor/cloud/src/main.py#124
Per scoprire dove viene l'oggetto BigQuery, vedi http://code.google.com/p/bigquery-e2e/source/browse/sensor/cloud/src/config.py
Si noti che questo utilizza il robot Appengine per autenticare con BigQuery, quindi aggiungerà l'account Robot all'ACL del set di dati.
Nota che se si desidera utilizzare anche il robot per eseguire query, non solo il flusso, è necessario robot per essere un membro del "team" del progetto in modo che sia autorizzato a eseguire posti di lavoro.