Pianificare le esecuzioni con Workflows e Cloud Scheduler

Questo documento mostra come eseguire esecuzioni pianificate dei flussi di lavoro SQL Dataform utilizzando Workflows e Cloud Scheduler.

Informazioni sulle esecuzioni pianificate dei workflow

Puoi impostare la frequenza di esecuzione del flusso di lavoro SQL Dataform creando un job Cloud Scheduler che attivi un flusso di lavoro Workflows. Workflows esegue i servizi in un flusso di lavoro di orchestrazione definito da te.

I flussi di lavoro eseguono il flusso di lavoro SQL Dataform in un procedura in due fasi. Innanzitutto, estrae il codice del repository Dataform dal provider Git e lo compila in un risultato di compilazione. Quindi, utilizza il risultato della compilazione per creare un flusso di lavoro SQL Dataform e lo esegue con la frequenza impostata.

Prima di iniziare

  1. Nella console Google Cloud, vai alla pagina Dataform.

    Vai alla pagina Dataform

  2. Seleziona o crea un repository.

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per pianificare le esecuzioni di Dataform con i flussi di lavoro, chiedi all'amministratore di concederti il ruolo IAM Editor di Dataform (roles/dataform.editor) nei repository. Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso a progetti, cartelle e organizzazioni.

Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.

Creare un flusso di lavoro di orchestrazione pianificato

Per eseguire esecuzioni pianificate del flusso di lavoro SQL Dataform, utilizza Workflows per creare un flusso di lavoro di orchestrazione e aggiungi un job Cloud Scheduler come attivatore.

  1. Workflows utilizza gli account di servizio per concedere ai flussi di lavoro l'accesso alle risorseGoogle Cloud . Crea un account di servizio e assegnagli il ruolo Editor di Dataform, nonché le autorizzazioni minime necessarie per gestire il workflow di orchestrazione. Per ulteriori informazioni, consulta Concedere un'autorizzazione dei flussi di lavoro per l'accesso alle risorse. Google Cloud

  2. Crea un flusso di lavoro di orchestrazione e utilizza il seguente codice sorgente YAML come definizione del flusso di lavoro:

    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}
    

    Sostituisci quanto segue:

    • PROJECT_ID: l'ID del Google Cloud progetto
    • REPOSITORY_LOCATION: la posizione del repository Dataform
    • REPOSITORY_ID: il nome del tuo repository Dataform
    • GIT_COMMITISH: il ramo Git da cui vuoi eseguire il codice Dataform. Per un repository appena creato, sostituire con main.
  3. Pianifica il flusso di lavoro di orchestrazione utilizzando Cloud Scheduler.

Personalizzare la richiesta di risultato di compilazione della creazione del flusso di lavoro SQL di Dataform

Puoi aggiornare il flusso di lavoro di orchestrazione esistente e definire le impostazioni della richiesta di creazione del risultato della compilazione del flusso di lavoro SQL Dataform in formato YAML. Per ulteriori informazioni sulle impostazioni, consulta la documentazione di riferimento della risorsa REST projects.locations.repositories.compilationResults.

Ad esempio, per aggiungere un _dev schemaSuffix a tutte le azioni durante la compilazione, sostituire il corpo del passaggio createCompilationResult con il seguente snippet di codice:

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

Puoi anche passare impostazioni aggiuntive come argomenti di runtime in una richiesta di esecuzione di Workflows e accedere a questi argomenti utilizzando le variabili. Per ulteriori informazioni, consulta Passare gli argomenti di runtime in una richiesta di esecuzione.

Personalizzare la richiesta di chiamata del flusso di lavoro SQL di Dataform

Puoi aggiornare il flusso di lavoro di orchestrazione esistente e definire le impostazioni della richiesta di chiamata del flusso di lavoro SQL Dataform in formato YAML. Per ulteriori informazioni sulle impostazioni della richiesta di chiamata, consulta la guida di riferimento della projects.locations.repositories.workflowInvocations risorsa REST.

Ad esempio, per eseguire solo azioni con il tag hourly con tutte le dipendenze transitive incluse, sostituisci il corpo createWorkflowInvocation con il seguente snippet di codice:

    - 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
                

Puoi anche passare impostazioni aggiuntive come argomenti di runtime in una richiesta di esecuzione di Workflows e accedere a questi argomenti utilizzando le variabili. Per ulteriori informazioni, consulta Passare gli argomenti di runtime in una richiesta di esecuzione.

Passaggi successivi