繁体   English   中英

如何使用 Terraform 在 Cloud Workflow 中传递 BigQuery 插入作业的查询参数

[英]How to pass query parameter of BigQuery insert job in Cloud Workflow using Terraform

我在运行应该执行参数化查询的 Cloud Workflow 时遇到错误。 Cloud Workflow 错误如下:

“消息”:“在 [1:544] 未找到查询参数 'run_dt'”,“原因”:“invalidQuery”

包含工作流的Terraform代码是这样的:

resource "google_workflows_workflow" "workflow_name" {
  name            = "workflow"
  region          = "location"
  description     = "description"
  source_contents = <<-EOF

main:
  params: [input]
  steps:
    - init:
        assign:
          - project_id: ${var.project}
          - location: ${var.region}
          - run_dt: $${map.get(input, "run_dt")}
          
    - runQuery: 
        steps:
          - insert_query:
              call: googleapis.bigquery.v2.jobs.insert
              args:
                projectId: ${var.project}
                body:
                  configuration:
                    query:
                      query: ${replace(templatefile("../../bq-queries/query.sql", { "run_dt" = "input.run_dt" } ), "\n", " ")}
                      destinationTable:
                        projectId: ${var.project}
                        datasetId: "dataset-name"
                        tableId: "table-name"
                      create_disposition: "CREATE_IF_NEEDED"  
                      write_disposition: "WRITE_APPEND"  
                      allowLargeResults: true
                      useLegacySql: false
                      partitioning_field: "dt"
    - the_end:
            return: "SUCCESS"
EOF
}

query.sql 文件中的查询如下所示:

SELECT * FROM `project.dataset.table-name`
WHERE sv.dt=@run_dt

使用上面的代码 Terraform 部署成功,但工作流失败。

如果我写的“input.run_dt”没有双引号,我会遇到 Terraform 错误:

未在根模块中声明托管资源“输入”“run_dt”。

如果我把它写成 $${input.run_dt},我会遇到 Terraform 错误:

该字符未在该语言中使用。

如果我把它写成 ${input.run_dt},我会遇到 Terraform 错误:

应为表达式的开头,但发现无效的表达式标记。

如何使用 Terraform 在 Cloud Workflow 中传递此 BigQuery 作业的查询参数?

找到解决方案:在子工作流中添加 queryParameters 字段:

queryParameters: 
 parameterType: {"type": "DATE"}
 parameterValue: {"value": '$${run_dt}'}
 name: "run_dt"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM