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]
Ответы
Ответ 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
Некоторые документы для таблиц шаблонов