Можно ли добавить новое поле к существующему полю типа ЗАПИСИ в bigquery из пользовательского интерфейса?

#google-bigquery

#google-bigquery

Вопрос:

Можно ли добавить новое поле к существующему полю типа ЗАПИСИ в bigquery? Так, например, если моя текущая схема :

 {u'fields': [{u'mode': u'NULLABLE', u'name': u'test1', u'type': u'STRING'},
             {u'fields': [{u'mode': u'NULLABLE',
                           u'name': u'field1',
                           u'type': u'STRING'}],
              u'mode': u'NULLABLE',
              u'name': u'recordtest',
              u'type': u'RECORD'}]}
  

Могу ли я изменить его, чтобы добавить поле «field2» в recordtest? Таким образом, новая схема будет выглядеть так:

 {u'fields': [{u'mode': u'NULLABLE', u'name': u'test1', u'type': u'STRING'},
             {u'fields': [{u'mode': u'NULLABLE',
                           u'name': u'field1',
                           u'type': u'STRING'},
                          {u'mode': u'NULLABLE',
                           u'name': u'field2',
                           u'type': u'STRING'}],
              u'mode': u'NULLABLE',
              u'name': u'recordtest',
              u'type': u'RECORD'}]}
  

Я не смог найти способ сделать это из пользовательского интерфейса. Но я смог сделать это с помощью API.

Ответ №1:

Это можно сделать полностью из пользовательского интерфейса, используя соответствующие средства поиска API

Во-первых, вам нужно получить схему вашей таблицы. Вы можете сделать это с помощью Tables.get API Explorer. Убедитесь, что вы выбрали / установите флажок схема в fields поле (лучше оставить остальное без флажков). Нажмите Authorize and Execute . Когда закончите — Скопируйте текст ответа — он будет выглядеть примерно так, как показано ниже

 {
 "schema": {
  "fields": [
   {
    "name": "id",
    "type": "STRING",
    "mode": "NULLABLE"
   },

... 

   {
    "name": "comment",
    "type": "STRING",
    "mode": "NULLABLE"
   }
  ]
 }
}
  

Затем используйте Tables.patch API Explorer
Добавьте необходимые поля в ранее полученную схему и вставьте ее как есть в Patch Body поле (выберите редактор произвольной формы в правом верхнем углу этого поля и просто замените все, что внутри, текстом вашей схемы). Снова нажмите Authorize and Execute

Теперь вы закончили.
Обратите внимание, что независимо от того, где вы разместили свое новое поле в записи — оно будет добавлено в конец полей этой записи

Кстати, в качестве альтернативы вы можете использовать автономные средства поиска
Сервисы> BigQuery API v2

Те, которые мы использовали здесь bigquery.jobs.get , и bigquery.tables.patch

Комментарии:

1. Спасибо! Я совершенно забыл о проводнике. Есть ли какой-либо способ сделать это из bigquery.cloud.google.com Пользовательский интерфейс?

2. похоже, что нет! у него есть Add New Fields кнопка внизу страницы схемы таблицы, но, похоже, она позволяет добавлять новое поле только в корень

Ответ №2:

Вы также можете использовать инструмент командной строки bigquery, который входит в состав инструмента командной строки gcloud. Я нашел этот маршрут проще, потому что в запросе меньше информации для добавления. Вам не нужен токен доступа или ключ API, поскольку ваш сеанс уже установлен. Здесь вы можете найти все, что вам нужно знать, но основы этого:

bq show --schema --format=prettyjson YOUR_PROJECT_ID:YOUR_DATASET.YOUR_TABLE_NAME > schema_file.json Затем измените файл схемы, чтобы добавить новое вложенное поле.

Затем запустите: bq update YOUR_PROJECT_ID:YOUR_DATASET.YOUR_TABLE_NAME schema_file.json

Комментарии:

1. это просто здорово … чище, приятнее и намного быстрее, чем описано выше. Спасибо, что поделились