代码之家  ›  专栏  ›  技术社区  ›  KalanyuZ

Google工作流中的多行字符串插值

  •  0
  • KalanyuZ  · 技术社区  · 5 年前

    我正在尝试使用Google工作流来执行一些自动化的BigQuery调度任务。要求对多个数据集运行查询,如下所示:

        - execute_query_job:
            call: execute_query_job
            args:
              query_text: >-
                SELECT 
                * EXCEPT(row_number)
                FROM (
                SELECT *, ROW_NUMBER() OVER (PARTITION BY uuid) row_number
                FROM
                `project.${database_id}.table`)
                WHERE
                row_number = 1
    

    但是,这不起作用,因为字符串被解释为原样,并且没有发生插值。 这个 ${} 语法不会跨越多行,并且可解析语法 {{ var }} 也不起作用。

    0 回复  |  直到 5 年前
        1
  •  1
  •   Daniel Ocando    5 年前

    尝试以类似的方式将查询更改为单行,如下所示:

    - execute_query_job:
        call: execute_query_job
        args:
          query_text: ${"SELECT * EXCEPT(row_number) FROM (SELECT *, ROW_NUMBER() OVER (PARTITION BY uuid) row_number FROM `project."+database_id+".table`) WHERE row_number = 1"}
    

    注意,根据 the Workflow's docs :

    如果这不起作用,请注意向 BigQuery's API jobs.insert 方法将允许您指定 JobConfiguration ,您可以在其中更改 defaultDataset 字段,并在每次迭代时为每个不同的数据集更改此值。以下 sample 演示如何基于工作流中数组的值进行迭代。

    推荐文章