Подтвердить что ты не робот

Bigquery добавить столбцы в схему таблицы

Я пытаюсь добавить новый столбец в существующую таблицу BigQuery. Я попробовал инструмент командной строки bq и API. При вызове Tables.update() я получаю следующую ошибку.

Я попытался предоставить полную схему с дополнительным полем, и это также дает мне такую ​​же ошибку, как показано ниже.

С API я получаю следующую ошибку:

{
"schema": {
"fields": [
{
"name": "added_column",
"type": "integer",
"mode": "nullable"
}
]
}
}

{
"error": {
"errors": [
{
"domain": "global",
"reason": "invalid",
"message": "Provided Schema does not match Table [blah]"
}
],
"code": 400,
"message": "Provided Schema does not match Table [blah]"
}
}

С инструментом BQ я получаю следующую ошибку: . /bq update -t ​​blah added_column: integer

Ошибка BigQuery в операции обновления: если схема не соответствует таблице [blah]

4b9b3361

Ответ 1

Попробуйте следующее:

bq --format=prettyjson show yourdataset.yourtable > table.json

Измените table.json и удалите все, кроме внутренних полей (например, сохраните [ { "name": "x" ... }, ... ]). Затем добавьте новое поле в схему.

Или через jq

bq --format=prettyjson show yourdataset.yourtable | jq .schema.fields > table.json

Затем запустите:

bq update yourdataset.yourtable table.json

Вы можете добавить --apilog=apilog.txt в начало командной строки, которая точно покажет, что отправлено/получено с сервера bigquery.

Ответ 2

В моем случае я пытался добавить поле REQUIRED в таблицу шаблонов и столкнулся с этой ошибкой. Изменив поле на NULLABLE, позвольте мне обновить таблицу.

Также более поздняя версия об обновлениях для любого, кто спотыкается от Google.

#To create table
bq mk --schema domain:string,pageType:string,source:string -t Project:Dataset.table
#Or using schema file
bq mk --schema SchemaFile.json -t Project:Dataset.table


#SchemaFile.json format
[{                                                                                                                                                                                                                                                
  "mode": "REQUIRED",
  "name": "utcTime",
  "type": "TIMESTAMP"
},    
{
  "mode": "REQUIRED",
  "name": "domain",
  "type": "STRING"
},  
{
  "mode": "NULLABLE",
  "name": "testBucket",
  "type": "STRING"
},  
{
  "mode": "REQUIRED",
  "name": "isMobile",
  "type": "BOOLEAN"                                                                                                                                                                                                                       
},
{
  "mode": "REQUIRED",
  "name": "Category",
  "type": "RECORD",
  "fields": [
    {
      "mode": "NULLABLE",
      "name": "Type",
      "type": "STRING"
     },
     {
       "mode": "REQUIRED",
       "name": "Published",
       "type": "BOOLEAN"
     }
    ]
}]

# TO update
bq update --schema UpdatedSchema.json -t Project:Dataset.table
# Updated Schema contains old and any newly added columns 

Некоторые документы для таблиц шаблонов