2014-02-26 32 views
13

我想開發一個應用引擎應用程序,直接將數據流傳輸到BigQuery表中。如何在應用引擎上使用Bigquery streaming insertall&python

根據谷歌的文檔存在將數據傳送至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對象(來自代碼段)應該位於何處?

任何人都可以顯示更完整的方式來使用此代碼段(與正確的導入)?

我一直在尋找那麼多,發現文件混淆和部分。

回答

10

最小工作(只要你在正確的IDS填寫您的項目),例如:

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中請注意,如果您還想使用機器人運行查詢,而不僅僅是流,則需要機器人成爲項目「團隊」的成員,以便它被授權運行工作。「

+0

謝謝。和@Jordan的快速幫助 – James

+0

'appengine'似乎不存在於'oauth2client'的當前版本(2.0.1)中,但'from oauth2client.contrib import appengine'完成了這個任務。 – tx802

3

這是來自appengine應用程序的一個工作代碼示例,它將記錄傳輸到BigQuery表。它是開源的,在code.google.com:

http://code.google.com/p/bigquery-e2e/source/browse/sensors/cloud/src/main.py#124

找出大量查詢對象來自,看到 http://code.google.com/p/bigquery-e2e/source/browse/sensors/cloud/src/config.py

注意,這裏使用了機器人的AppEngine與BigQuery進行身份驗證,所以您需要將機械手帳戶添加到數據集的ACL中。

請注意,如果您還想使用機器人運行查詢,而不僅僅是流,則需要機器人成爲項目「團隊」的成員,以便它有權運行作業。

相關問題