[英]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.