小编典典

如何在App Engine和python上使用Bigquery Streaming Insertall

python

我想开发一个直接将数据流式传输到BigQuery表中的App Engine应用程序。

根据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,但没有找到上述Google示例中引用的“ bigquery”模块/对象的任何引用。

bigquery对象(来自摘录)应位于哪里?

谁能展示出使用此代码段的更完整方法(正确的导入方式)?

我一直在搜索很多东西,发现文档令人困惑和不完整。


阅读 219

收藏
2021-01-20

共1个答案

小编典典

最少的工作(只要您为项目填写正确的ID)例如:

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

正如Jordan所说:“请注意,它使用Appengine机器人对BigQuery进行身份验证,因此您需要将机器人帐户添加到数据集的ACL中。请注意,如果您还想使用机器人来运行查询,而不仅仅是流,则您需要使该机器人成为项目“团队”的成员,以便其有权运行作业。”

2021-01-20