Pianifica le esecuzioni con Workflows e Cloud Scheduler

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

Informazioni sulle esecuzioni pianificate dei flussi di lavoro

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

Workflows esegue il flusso di lavoro SQL di Dataform in un processo in due passaggi. Per prima cosa, 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 Dataform SQL e lo esegue alla 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 Workflows, chiedi all'amministratore di concederti il ruolo IAM Editor Dataform (roles/dataform.editor) per i repository. Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso.

Potresti anche essere in grado di ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.

Crea un flusso di lavoro di orchestrazione pianificato

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

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

  2. Crea un flusso di lavoro di orchestrazione e usa 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 progetto Google Cloud
    • REPOSITORY_LOCATION: la località 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, sostituiscilo con main.
  3. Pianifica il flusso di lavoro di orchestrazione utilizzando Cloud Scheduler.

Personalizza la richiesta di risultato per la creazione di una compilazione del flusso di lavoro SQL di Dataform

Puoi aggiornare il flusso di lavoro di orchestrazione esistente e definire il flusso di lavoro Dataform SQL per la creazione delle impostazioni delle richieste dei risultati di compilazione in formato YAML. Per ulteriori informazioni sulle impostazioni, consulta il riferimento alla risorsa REST projects.locations.repositories.compilationResults.

Ad esempio, per aggiungere un schemaSuffix _dev a tutte le azioni durante la compilazione, sostituisci 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 tali argomenti utilizzando le variabili. Per maggiori informazioni, consulta Trasmettere argomenti di runtime in una richiesta di esecuzione.

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

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

Ad esempio, per eseguire azioni solo con il tag hourly in cui sono incluse tutte le dipendenze transitive, 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 tali argomenti utilizzando le variabili. Per maggiori informazioni, consulta Trasmettere argomenti di runtime in una richiesta di esecuzione.

Passaggi successivi