如何在我的terraform文件中为BigQuery创建INTEGER的类型RECORD

问题描述 投票:0回答:1

我正在尝试为BigQuery表创建terraform模式,我需要一列RECORD类型的列,该列将由INTEGER填充。有问题的字段的格式应为方括号,内部整数可以是一个或多个,用逗号分隔:[1]

我尝试这样写:

resource "google_bigquery_table" "categories" {
  project = "abcd-data-ods-${terraform.workspace}"
  dataset_id = google_bigquery_dataset.bq_dataset_op.dataset_id
  table_id = "categories"

schema = <<EOF
    [
        {"type":"STRING","name":"a","mode":"NULLABLE"},
        {"type":"RECORD[INTEGER]","name":"b","mode":"NULLABLE"}
    ]
EOF

}

并且像这样:

resource "google_bigquery_table" "categories" {
  project = "abcd-data-ods-${terraform.workspace}"
  dataset_id = google_bigquery_dataset.bq_dataset_op.dataset_id
  table_id = "categories"

schema = <<EOF
    [
        {"type":"STRING","name":"a","mode":"NULLABLE"},
        {"type":"RECORD","name":"b","mode":"NULLABLE"}
    ]
EOF

}

但是它不起作用,因为我在gitlab上的CI / CD中不断出现错误第一次尝试的错误:

Error: googleapi: Error 400: Invalid value for type: RECORD[INTEGER] is not a valid value, invalid

第二次尝试的错误:

Error: googleapi: Error 400: Field b is type RECORD but has no schema, invalid

我认为第二个实现是给定错误的解决方案的壁橱,但它仍然缺少某些内容是否有人知道正确的声明方式]

google-bigquery schema terraform record terraform-provider-gcp
1个回答
2
投票
Error: googleapi: Error 400: Field b is type RECORD but has no schema, invalid

您必须提供RECORD类型(you can read more on the docs)的架构。例如,有效的示例可能是:

resource "google_bigquery_table" "categories" {
  project    = "abcd-data-ods-${terraform.workspace}"
  dataset_id = google_bigquery_dataset.bq_dataset_op.dataset_id
  table_id   = "categories"

  schema = <<EOF
      [
          {
            "type":"STRING",
            "name":"a",
            "mode":"NULLABLE"
          },
          {
            "type":"RECORD",
            "name":"b",
            "mode":"NULLABLE",
            "fields": [{
                "name": "c",
                "type": "INTEGER",
                "mode": "NULLABLE"
            }]
          }
      ]
  EOF
}

希望可以提供帮助。

© www.soinside.com 2019 - 2024. All rights reserved.