Programar execuções com o Workflows e o Cloud Scheduler

Neste documento, mostramos como executar execuções programadas de fluxos de trabalho SQL do Dataform usando o Workflows e o Cloud Scheduler.

Sobre as execuções de fluxo de trabalho programadas

É possível definir a frequência de execuções do fluxo de trabalho do Dataform SQL criando um job do Cloud Scheduler que aciona um fluxo de trabalho Workflows. O Workflows executa serviços em um fluxo de trabalho de orquestração que você define.

O Workflows executa seu fluxo de trabalho SQL do Dataform em um processo de duas etapas. Primeiro, ele extrai o código do repositório do Dataform do seu provedor Git e o compila em um resultado de compilação. Em seguida, ele usa o resultado da compilação para criar um fluxo de trabalho SQL do Dataform e o executa na frequência que você definiu.

Antes de começar

  1. No console do Google Cloud, acesse a página Dataform.

    Acessar a página do Dataform

  2. Selecione ou crie um repositório.

Funções exigidas

Para ter as permissões necessárias para programar execuções do Dataform com o Workflows, peça ao administrador para conceder a você o papel do IAM de Editor do Dataform (roles/dataform.editor) nos repositórios. Para mais informações sobre como conceder papéis, consulte Gerenciar acesso.

Talvez você também consiga receber as permissões necessárias por meio de papéis personalizados ou outros papéis predefinidos.

Criar um fluxo de trabalho de orquestração programado

Para executar execuções programadas do fluxo de trabalho SQL do Dataform, use Workflows para criar um fluxo de trabalho de orquestração e adicionar um job do Cloud Scheduler como gatilho.

  1. O Workflows usa contas de serviço para dar aos fluxos de trabalho acesso aos recursos do Google Cloud. Crie uma conta de serviço e conceda a ela o papel de Editor do Dataform, bem como as permissões mínimas necessárias para gerenciar o fluxo de trabalho de orquestração. Para mais informações, consulte Conceder permissão a um fluxo de trabalho para acessar os recursos do Google Cloud.

  2. Crie um fluxo de trabalho de orquestração e use o seguinte código-fonte YAML como definição do fluxo de trabalho:

    main:
        steps:
        - init:
            assign:
            - repository: projects/PROJECT_ID/locations/REPOSITORY_LOCATION/repositories/REPOSITORY_ID
        - createCompilationResult:
            call: http.post
            args:
                url: ${"https://dataform.googleapis.com/v1beta1/" + repository + "/compilationResults"}
                auth:
                    type: OAuth2
                body:
                    gitCommitish: GIT_COMMITISH
            result: compilationResult
        - createWorkflowInvocation:
            call: http.post
            args:
                url: ${"https://dataform.googleapis.com/v1beta1/" + repository + "/workflowInvocations"}
                auth:
                    type: OAuth2
                body:
                    compilationResult: ${compilationResult.body.name}
            result: workflowInvocation
        - complete:
            return: ${workflowInvocation.body.name}
    

    Substitua:

    • PROJECT_ID: o ID do seu projeto do Google Cloud;
    • REPOSITORY_LOCATION: o local do repositório do Dataform.
    • REPOSITORY_ID: o nome do repositório do Dataform
    • GIT_COMMITISH: a ramificação do Git em que você quer executar o código do Dataform. Para um repositório recém-criado, substitua por main.
  3. Programe o fluxo de trabalho de orquestração usando o Cloud Scheduler.

Personalizar a solicitação de resultado da compilação do fluxo de trabalho do Dataform SQL

É possível atualizar o fluxo de trabalho de orquestração atual e definir as configurações de solicitação de resultado da compilação do fluxo de trabalho SQL do Dataform SQL no formato YAML. Para mais informações sobre as configurações, consulte a referência do recurso REST projects.locations.repositories.compilationResults.

Por exemplo, para adicionar um _dev schemaSuffix a todas as ações durante a compilação, substitua o corpo da etapa createCompilationResult pelo seguinte snippet de código:

    - createCompilationResult:
        call: http.post
        args:
            url: ${"https://dataform.googleapis.com/v1beta1/" + repository + "/compilationResults"}
            auth:
                type: OAuth2
            body:
                gitCommitish: GIT_COMMITISH
                codeCompilationConfig:
                    schemaSuffix: dev

Também é possível transmitir outras configurações como argumentos de ambiente de execução em uma solicitação de execução do Workflows e acessar esses argumentos usando variáveis. Para mais informações, consulte Transmitir argumentos de ambiente de execução em uma solicitação de execução.

Personalize a solicitação de invocação do fluxo de trabalho do Dataform SQL

É possível atualizar o fluxo de trabalho de orquestração atual e definir as configurações de solicitação de invocação do fluxo de trabalho SQL do Dataform no formato YAML. Para mais informações sobre as configurações da solicitação de invocação, consulte a referência do recurso REST projects.locations.repositories.workflowInvocations.

Por exemplo, para executar apenas ações com a tag hourly com todas as dependências transitivas incluídas, substitua o corpo createWorkflowInvocation pelo seguinte snippet de código:

    - createWorkflowInvocation:
        call: http.post
        args:
            url: ${"https://dataform.googleapis.com/v1beta1/" + repository + "/workflowInvocations"}
            auth:
                type: OAuth2
            body:
                compilationResult: ${compilationResult.body.name}
                invocationConfig:
                    includedTags:
                    - hourly
                    transitiveDependenciesIncluded: true
                

Também é possível transmitir outras configurações como argumentos de ambiente de execução em uma solicitação de execução do Workflows e acessar esses argumentos usando variáveis. Para mais informações, consulte Transmitir argumentos de ambiente de execução em uma solicitação de execução.

A seguir