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