Programa ejecuciones con Workflows y Cloud Scheduler

En este documento, se muestra cómo ejecutar ejecuciones programadas de flujos de trabajo de SQL de Dataform con Workflows y Cloud Scheduler.

Información acerca de las ejecuciones de flujos de trabajo programadas

Para establecer la frecuencia de las ejecuciones de tu flujo de trabajo de SQL de Dataform, crea un trabajo de Cloud Scheduler que active un flujo de trabajo de Workflows. Workflows ejecuta servicios en un flujo de trabajo de organización que tú defines.

Los flujos de trabajo ejecutan tu flujo de trabajo de SQL de Dataform en un proceso de dos pasos. Primero, extrae el código del repositorio de Dataform de tu proveedor de Git y lo compila en un resultado de compilación. Luego, usa el resultado de la compilación para crear un flujo de trabajo de SQL de Dataform y lo ejecuta con la frecuencia que establezcas.

Antes de comenzar

  1. En la consola de Google Cloud, ve a la página Dataform.

    Ve a la página Dataform

  2. Selecciona o crea un repositorio.

Roles obligatorios

Para obtener los permisos que necesitas para programar ejecuciones de Dataform con Workflows, pídele a tu administrador que te otorgue el rol de IAM Editor de Dataform (roles/dataform.editor) en los repositorios. Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.

También puedes obtener los permisos necesarios mediante roles personalizados o cualquier otro rol predefinido.

Crea un flujo de trabajo de orquestación programado

Para ejecutar ejecuciones programadas de tu flujo de trabajo de Dataform SQL, usa flujos de trabajo para crear un flujo de trabajo de orquestación y agregar un trabajo de Cloud Scheduler como activador.

  1. Workflows usa cuentas de servicio para otorgarles acceso a los recursos deGoogle Cloud . Crea una cuenta de servicio y bríndale el rol de Editor de Dataform, así como los permisos mínimos necesarios para administrar tu flujo de trabajo de orquestación. Para obtener más información, consulta Otorga permiso a un flujo de trabajo para acceder a Google Cloud recursos.

  2. Crea un flujo de trabajo de orquestación y usa el siguiente código fuente de YAML como definición de flujo de trabajo:

    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}
    

    Reemplaza lo siguiente:

    • PROJECT_ID: Es el ID de tu proyecto Google Cloud.
    • REPOSITORY_LOCATION: Es la ubicación de tu repositorio de Dataform.
    • REPOSITORY_ID: Es el nombre de tu repositorio de Dataform.
    • GIT_COMMITISH: Es la rama de Git desde la que deseas ejecutar el código de Dataform. Para un repositorio recién creado, reemplázalo por main.
  3. Programa el flujo de trabajo de orquestación con Cloud Scheduler.

Cómo personalizar la solicitud de resultado de compilación de creación del flujo de trabajo de SQL de Dataform

Puedes actualizar el flujo de trabajo de orquestación existente y definir la configuración de la solicitud de resultado de compilación de la creación de flujo de trabajo de SQL de Dataform en formato YAML. Para obtener más información sobre la configuración, consulta la referencia del recurso REST de projects.locations.repositories.compilationResults.

Por ejemplo, para agregar un schemaSuffix _dev a todas las acciones durante la compilación, reemplaza el cuerpo del paso createCompilationResult por el siguiente fragmento 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

También puedes pasar parámetros de configuración adicionales como argumentos del entorno de ejecución en una solicitud de ejecución de Workflows y acceder a esos argumentos con variadas. Para obtener más información, consulta Cómo pasar argumentos del entorno de ejecución en una solicitud de ejecución.

Cómo personalizar la solicitud de invocación del flujo de trabajo de SQL de Dataform

Puedes actualizar el flujo de trabajo de orquestación existente y definir la configuración de la solicitud de invocación del flujo de trabajo de SQL de Dataform en formato YAML. Para obtener más información sobre la configuración de la solicitud de invocación, consulta la referencia del recurso REST de projects.locations.repositories.workflowInvocations.

Por ejemplo, para ejecutar solo acciones con la etiqueta hourly con todas las dependencias transitivas incluidas, reemplaza el cuerpo de createWorkflowInvocation por el siguiente fragmento 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
                

También puedes pasar parámetros de configuración adicionales como argumentos del entorno de ejecución en una solicitud de ejecución de Workflows y acceder a esos argumentos con variadas. Para obtener más información, consulta Cómo pasar argumentos del entorno de ejecución en una solicitud de ejecución.

¿Qué sigue?