sql - 如何完全在 BigQuery 中创建具有嵌套架构的新表

标签 sql json nested google-bigquery

我在 BigQuery 中有一个嵌套表 A,其架构如下:

    {
    "name": "page_event",
    "mode": "repeated",
    "type": "RECORD",
    "fields": [
        {
            "name": "id",
            "type": "STRING"
        }
    ]
    }

我想用其他表中的数据丰富表 A 并将结果保存为新的嵌套表。假设我想将“描述”字段添加到表 A(创建表 B),所以我的架构如下:
    {
    "name": "page_event",
    "mode": "repeated",
    "type": "RECORD",
    "fields": [
        {
            "name": "id",
            "type": "STRING"
        },
        {
            "name": "description",
            "type": "STRING"
        }
    ]
    }

如何在 BigQuery 中执行此操作?似乎在 BigQuery SQL 中没有用于创建嵌套结构的函数(除了生成列表的 NEST 函数 - 但该函数似乎不起作用,因意外错误而失败)

我能想到的唯一方法是:
  • 使用字符串连接函数生成带有名为“json”的单个字段的表 B,其内容是来自 A 的丰富数据,转换为 json 字符串
  • 将 B 作为一组文件 F 导出到 GCS
  • 将 F 加载为表 C

  • 有没有更简单的方法来做到这一点?

    最佳答案

    要丰富现有表的模式,可以使用表补丁 API
    https://cloud.google.com/bigquery/docs/reference/v2/tables/patch

    请求将如下所示

    PATCH https://www.googleapis.com/bigquery/v2/projects/{project_id}/datasets/{dataset_id}/tables/{table_id}?key={YOUR_API_KEY}
    
    {
     "schema": {
      "fields": [
       {
        "name": "page_event",
        "mode": "repeated",
        "type": "RECORD",
        "fields": [
         {
          "name": "id",
          "type": "STRING"
         },
         {
          "name": "description",
          "type": "STRING"
         }
        ]
       }
      ]
     }
    }
    

    补丁前

    enter image description here

    补丁后

    enter image description here

    关于sql - 如何完全在 BigQuery 中创建具有嵌套架构的新表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27548490/

    相关文章:

    php - 配置mysql表或查询来满足这些需求

    mysql - SQL - 将行从一个表复制到另一个表并同时更新目标表中的列

    json - 如何处理 JSON_VALUE 路径中的美元 ($) 符号

    c - C中嵌套strtok函数问题

    jsf - 使用 insertChildren 并获取子属性

    json - 在 VBA 中访问 JSON-Object 中的嵌套值

    sql - 使用动态列创建表

    sql - PostgreSQL 从具有指定条件的表中选择行

    json - 如何获取响应数据并将其解析为 JMeter 中的 HTTP header 管理器

    wordpress - 以 JSON 格式从 Woocommerce 导出订单