# #google-cloud-platform #google-bigquery #terraform #google-cloud-storage
Вопрос:
У меня есть ведро gcs с несколькими вложенными паркетными файлами. Я хочу просмотреть файл parquet как внешние таблицы в BQ.
Например:
path1 >> path2 >> path3 >> path4 >> *.parquet
path11 >> path22 >> path33 >> *.parquet
Есть ли способ, которым я могу перечислить uri gcs, используя terraform? Затем используйте gcs_uri
в терраформе, написанной как таковая:
variable my_table_config {
default = {
first_table = { gcs_path = "path11/path22/path33/*.parquet"}
second_table = { gcs_path = "path1/path2/path3/path3/path4/*.parquet"}
}
}
resource "google_bigquery_dataset" "my_dataset" {
# create table
}
resource "google_bigquery_table" "my_dataset_external_tables" {
dataset_id = google_bigquery_dataset.my_dataset.dataset_id
for_each = var.my_table_config # start loop here
table_id = each.key
external_data_configuration {
autodetect = true
source_format = "PARQUET"
ignore_unknown_values = true
source_uris = [
"gs://my-gcs-bucket/${(each.value).gcs_path}" # get path of parquet files
]
}
project = var.project
}
Приведенная выше терраформа будет работать, если у меня будет небольшое количество gcs_uri
(я могу добавить my_table_config
). Но у меня еще более тысячи gcs_uri
дел. Я ищу что-то, что можно автоматизировать для извлечения gcs_uri. Пожалуйста, помогите. Спасибо.
Комментарии:
1. Рассматривали ли вы возможность использования подстановочных знаков, например, gsutil ls gs://bucket_name/*/**.parquet в облачной оболочке, а затем, возможно, вы сможете использовать цикл в terraform, чтобы использовать их все по одному?
2. О да. Я только подумал
*.parquet
, я попробую3. Если проблема решена, я бы предложил опубликовать ее в качестве ответа, чтобы помочь другим пользователям, которые могут столкнуться с этим сценарием. Спасибо!