https://cloud.google.com/bigquery/docs/managing-table-schemas
Если прокрутить вниз, это объясняет, как делать то, что вы хотите!
Выполните команду обновления bq и предоставьте файл схемы JSON, который добавляет
вложенное поле для определения схемы существующего столбца RECORD. Если
таблица, которую вы обновляете, находится в проекте, отличном от вашего по умолчанию
проект, добавьте идентификатор проекта к имени набора данных в следующем
формат: [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`
Этого также можно добиться с помощью API Python google.cloud, взяв ссылку на таблицу и обновив схему с добавлением новых столбцов. Это та же методология, что и выше, но в основном это делается на python.