2014-02-26 27 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中。

请注意,如果您还想使用机器人运行查询,而不仅仅是流,则需要机器人成为项目“团队”的成员,以便它有权运行作业。

相关问题