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