У меня есть несколько таблиц в BQ, основанных на ресурсе google_bigquery_table в Terraform.Мне нужно создать представление для одной из этих таблиц, однако я не хочу создавать другой ресурс terraform, чтобы избежать дублирования кода.Вот как сейчас выглядит мой ресурс:
resource "google_bigquery_table" "default" {
dataset_id = "${var.dataset_id}"
table_id = "${var.table_id}"
time_partitioning {
type = "DAY" //Hardcoded because this is the only supported value
field = "${var.time_partitioning_field}"
}
view {
query = "${var.query}"
use_legacy_sql = "${var.use_legacy_sql}"
}
schema = "${file(var.schema)}"
}
Соответствующие переменные представления:
variable "query" {
type = "string"
default = ""
}
variable "use_legacy_sql" {
type = "string"
default = "false"
}
Я установил переменную запроса в пустую строку, потому что я не хочу никакойиз моих других таблиц, чтобы иметь представление.
Наконец, вот модуль таблицы, содержащий представление:
module "myTable-editedView-bigquery-table"{
source = "./../../modules/google-bigquery-table"
version = "0.1"
schema = "${var.myTable_schema}"
dataset_id = "${module.myDataset-bigquery-dataset.dataset_id[0]}"
table_id = "${var.myTable_editedView_table_id}"
query = <<SQL
SELECT col1 , col2, col3, col4, col5
FROM `myProject.myDataset.myTable`
SQL
time_partitioning_field = "${var.time_partitioning_field}"
is_ready = "${module.myDataset-bigquery-dataset.is_complete}"
is_ready = "${module.myTable-bigquery-table.is_complete}"
}
Мои другие таблицы отформатированы аналогично, за исключением того, что я не предоставил переменную / значение запроса, потому что я не хочу, чтобы ониесть мнение.
Планирование, казалось, прошло хорошо, но применение terraform привело к ошибке для каждой существующей таблицы, утверждающей, что для представления требуется запрос.Я полагаю, что это имеет смысл, поскольку я определяю переменную запроса для каждой таблицы, но я решил, что по умолчанию будет пустая строка и не будет создаваться представление.Какой подход я должен выбрать отсюда?