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 Cloud Scheduler e o Workflows.

Sobre execuções programadas de fluxos de trabalho

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

Os fluxos de trabalho executam o fluxo de trabalho SQL do Dataform em um processo de duas etapas. Primeiro, ele extrai o código do repositório do Dataform do provedor do 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 definida.

Antes de começar

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

    Acesse a página do Dataform

  2. Selecione ou crie um repositório.

Funções exigidas

Para receber as permissões necessárias para programar execuções do Dataform com fluxos de trabalho, peça ao administrador que conceda a você o Papel do IAM de editor do Dataform (roles/dataform.editor) nos repositórios. Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.

Também é possível conseguir as permissões necessárias por meio de papéis personalizados ou de outros papéis predefinidos.

Criar um fluxo de trabalho de orquestração programado

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

  1. O Workflows usa contas de serviço para dar acesso a recursosGoogle 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 Google Cloud recursos.

  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 projeto 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 criação de resultado da compilação do fluxo de trabalho SQL do Dataform

É possível atualizar o fluxo de trabalho de orquestração atual e definir as configurações de solicitação de resultado de compilação de criação do fluxo de trabalho SQL do Dataform 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 schemaSuffix _dev 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 de fluxos de trabalho 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.

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

É 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 do Dataform SQL no formato YAML. Para mais informações sobre as configurações de 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 sequência de comandos abaixo:

    - 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 de fluxos de trabalho 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