Я ранее создал таблицу в bigquery, используя следующий скрипт в terraform
resource "google_bigquery_dataset" "my-dataset" {
dataset_id = "datasetname"
description = "description"
}
resource "google_bigquery_table" "mytable" {
dataset_id = google_bigquery_dataset.my-dataset.dataset_id
table_id = "mytable"
time_partitioning {
type = "DAY"
}
schema = <<EOF
[
{
"name": "field_one",
"type": "STRING",
"mode": "NULLABLE"
},
{
"name": "field_two",
"type": "RECORD",
"mode": "NULLABLE",
"fields": [
{
"name": "sub_field_one",
"type": "FLOAT",
"mode": "NULLABLE"
},
{
"name": "sub_field_two",
"type": "FLOAT",
"mode": "NULLABLE"
}
]
},
{
"name": "field_three",
"type": "STRING",
"mode": "NULLABLE"
}
]
EOF
}
Это работало нормально, и я смог создать mytable
в bigquery. Теперь мне нужно изменить эту таблицу и добавить к ней новое значение (field_four
. Поэтому сделал этот скрипт
resource "google_bigquery_dataset" "my-dataset" {
dataset_id = "datasetname"
description = "description"
}
resource "google_bigquery_table" "mytable" {
dataset_id = google_bigquery_dataset.my-dataset.dataset_id
table_id = "mytable"
time_partitioning {
type = "DAY"
}
schema = <<EOF
[
{
"name": "field_one",
"type": "STRING",
"mode": "NULLABLE"
},
{
"name": "field_two",
"type": "RECORD",
"mode": "NULLABLE",
"fields": [
{
"name": "sub_field_one",
"type": "FLOAT",
"mode": "NULLABLE"
},
{
"name": "sub_field_two",
"type": "FLOAT",
"mode": "NULLABLE"
}
]
},
{
"name": "field_three",
"type": "STRING",
"mode": "NULLABLE"
},
{
"name": "field_four",
"type": "RECORD",
"mode": "NULLABLE",
"fields": [
{
"name": "sub_field_three",
"type": "STRING",
"mode": "NULLABLE"
}
]
}
]
EOF
}
Когда я запускаю его, используя terraform plan
, он показывает, что новое поле будет быть добавленным. Но когда я делаю terraform apply
, я получаю следующую ошибку
Error: googleapi: Error 400: Cannot convert non partitioned/clustered table to partitioned/clustered table., invalid
on filename.tf line 10, in resource "google_bigquery_table" "mytable":
10: resource "google_bigquery_table" "mytable" {
Я не изменяю раздел таблицы. Что здесь происходит. Как изменить схему на
- Добавить новое поле?
- Изменить тип поля (который имеет только
null
значения на данный момент) на что-то новое?
Детали Terraform
Terraform v0.12.24
+ provider.google v3.1.0
+ provider.google-beta v3.1.0
+ provider.random v2.2.1