Closed4

BigQuery Data TransferをTerraformで作成する

marushomarusho

BigQuery Data TransferをTerraformで作成する

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

marushomarusho

google_bigquery_data_transfer_config has no documented way of loading data from Cloud Storage · Issue #6978 · hashicorp/terraform-provider-google

どうやらみんな悩んでいる様子。
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"
  }
}
marushomarusho

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にクローズされました