簡體   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