在BigQuery中将列添加到嵌套表

时间:2018-05-15 16:13:21

标签: google-bigquery

我试图弄清楚如何将列添加到BigQuery的嵌套表中。我并不特别关注这个阶段的方法(CLI,Web UI,Python API,任何东西),所以我只是想知道这是否可行。

1 个答案:

答案 0 :(得分:-1)

https://cloud.google.com/bigquery/docs/managing-table-schemas

如果向下滚动,这说明了如何做自己想做的事!

  

发出bq update命令并提供一个JSON模式文件,该文件将添加   现有RECORD列的架构定义的嵌套字段。如果   您要更新的表不在默认项目中   项目,将项目ID添加到以下数据集名称中   格式:[PROJECT_ID]:[DATASET]。

     

bq update [PROJECT_ID]:[DATASET].[TABLE] [SCHEMA]

     

For Example: bq update mydataset.mytable /tmp/myschema.json

  [
    {
      "mode": "REQUIRED",
      "name": "column1",
      "type": "STRING"
    },
    {
      "mode": "REQUIRED",
      "name": "column2",
      "type": "FLOAT"
    },
    {
      "fields": [
        {
          "mode": "NULLABLE",
          "name": "nested1",
          "type": "STRING"
        },
        {
          "mode": "NULLABLE",
          "name": "nested2",
          "type": "STRING"
        },
        {
          "mode": "NULLABLE",
          "name": "nested3",
          "type": "STRING"
        }
      ],
      "mode": "REPEATED",
      "name": "column3",
      "type": "RECORD"
    }
  ]

您可以在上面看到数据库是否没有nested3字段,然后将该命令与上述JSON结合使用,即可将其添加到现有的嵌套列集中。

要获取表的原始架构,请执行以下操作:

`bq show --schema --format=prettyjson mydataset.mytable > /tmp/myschema.json`

您还可以通过获取表引用并使用添加的新列更新架构,从而通过python google.cloud API实现此目的。与上面的方法相同,但是几乎是在python中完成的。