Closed4
BigQuery Data TransferをTerraformで作成する

BigQuery Data TransferをTerraformで作成する
ドキュメントを読んでも、CloudStorageにあるcsvファイルをBigQueryのテーブルに入れるケースの書き方が分からなかったのでメモ

どうやらみんな悩んでいる様子。
APIは存在するようで、JSONの場合は以下のように書ける。
resource "google_bigquery_data_transfer_config" "template" {
display_name = "My GCS Transfer"
location = var.location
data_source_id = "google_cloud_storage"
destination_dataset_id = "my_dataset"
project = var.project_id
schedule = var.schedule_interval
params = {
data_path_template = "gs://${local.bucket_name}/*.json"
destination_table_name_template = "my_table"
file_format = "JSON"
max_bad_records = 0
ignore_unknown_values = "true"
allow_quoted_newlines = "true"
delete_source_files = "true"
}
}

params
の中身のプロパティがドキュメントに明確に書かれていないが、基本的にはbq
コマンドで指定するパラメータを参考にすれば良さそう。

CSVの場合は以下のように書いたら無事作成されました。
resource "google_bigquery_data_transfer_config" "sample" {
display_name = "sample"
location = "asia-northeast1"
data_source_id = "google_cloud_storage"
schedule = "every day 10:00"
destination_dataset_id = "target_dataset"
params = {
data_path_template = "gs://target_bucket/*"
destination_table_name_template = "target_table"
file_format = "CSV"
write_disposition = "MIRROR"
max_bad_records = 0
ignore_unknown_values = "false"
field_delimiter = ","
skip_leading_rows = "1"
allow_quoted_newlines = "false"
allow_jagged_rows = "false"
delete_source_files = "false"
}
}
このスクラップは2021/11/26にクローズされました