Google Bigquery API:如何将结果查询添加到表中?
Posted
技术标签:
【中文标题】Google Bigquery API:如何将结果查询添加到表中?【英文标题】:Google Bigquery API: How to add result query to Table? 【发布时间】:2016-06-21 09:04:38 【问题描述】:我已经阅读了一些关于这个主题的介绍,但是这段代码没有运行。 我在项目中创建了表“product_flat_index”,这个函数将查询结果添加到该表中。但它没有运行。
def insertValues(service):
project_id = "598330041668"
dataset_id = 'recommendation_001'
table_id = 'product_flat_index'
# [START run_query]
query = ('SELECT sku, SUM(sales) AS sales, COUNT(sales) AS sales_frequency, SUM(views) AS views,'
'SUM(carts) AS carts, SUM(sales) / SUM(carts) AS sales_effective_rate,AVG(rating) AS rating,'
'SUM(comments) AS comments '
'FROM recommendation_001.user_input_product '
'GROUP BY sku '
)
configuration =
"query": query,
body =
"configuration":
"query": configuration,
"destinationTable":
"projectId": project_id,
"datasetId": dataset_id,
"tableId": table_id
,
"createDisposition": "CREATE_IF_NEEDED",
"writeDisposition": "WRITE_APPEND",
,
return service.jobs().insert(
projectId=project_id,
body=body
).execute()
# [END run_query]
【问题讨论】:
【参考方案1】:您应该在查询配置对象中指定destinationTable
、createDisposition,
和writeDisposition
属性,而不是***配置。它们是 configuration.query 的属性,而不是***配置。例如,here's the destinationTable
property in our docs: note how it is configuration.query.destinationTable
,而不是 configuration.destinationTable
。您指定的其他字段的结构类似。
我认为这应该可行:
configuration =
"query": query,
"destinationTable":
"projectId": project_id,
"datasetId": dataset_id,
"tableId": table_id
,
"createDisposition": "CREATE_IF_NEEDED",
"writeDisposition": "WRITE_APPEND"
body =
"configuration":
"query": configuration
如果您想自行调试,我建议您使用 jobs.list 或 jobs.get 查找作业详细信息,以查看您的配置详细信息是否已通过服务器。我怀疑你过去没有工作的工作也不会有destinationTable
等的附加属性。
【讨论】:
以上是关于Google Bigquery API:如何将结果查询添加到表中?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Google Bigquery 的 Java API 以 Json 形式获取查询结果
如何使用 Google BigQuery python API 获得超过 100,000 个响应结果?
通过 Google BigQuery API 将查询结果导出为 JSON
如何使用 BigQuery Python API 附加查询结果