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】:

您应该在查询配置对象中指定destinationTablecreateDisposition,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 附加查询结果

如何在第三方 API 中发出请求并在 google BigQuery 上定期加载结果?我应该使用哪些谷歌服务?

Google Bigquery:如何从 Web UI 查询界面以编程方式创建表(保存结果)?