Добавить столбец во вложенную таблицу в BigQuery - PullRequest
0 голосов
/ 15 мая 2018

Я пытаюсь выяснить, как добавить столбец во вложенную таблицу BigQuery.На данном этапе я не особо привязан к методу (CLI, Web UI, Python API и т. Д.), Поэтому мне просто интересно, возможно ли это вообще.

1 Ответ

0 голосов
/ 14 мая 2019

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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...