Planifier des exécutions avec Workflows et Cloud Scheduler

Ce document explique comment exécuter des exécutions planifiées de workflows Dataform SQL à l'aide de Workflows et de Cloud Scheduler.

À propos des exécutions de workflow planifiées

Vous pouvez définir la fréquence d'exécution de votre workflow SQL Dataform en créant une tâche Cloud Scheduler qui déclenche un workflow Workflows. Workflows exécute les services dans un workflow d'orchestration que vous définissez.

Workflows exécute votre workflow SQL Dataform en deux étapes. Tout d'abord, il extrait le code de votre dépôt Dataform de votre fournisseur Git et le compile dans un résultat de compilation. Ensuite, il utilise le résultat de la compilation pour créer un workflow SQL Dataform et l'exécute à la fréquence que vous avez définie.

Avant de commencer

  1. Dans la console Google Cloud, accédez à la page Dataform.

    Accéder à la page Dataform

  2. Sélectionnez ou créez un dépôt.

Rôles requis

Pour obtenir les autorisations dont vous avez besoin pour planifier des exécutions Dataform avec Workflows, demandez à votre administrateur de vous attribuer le rôle IAM Éditeur de données de données (roles/dataform.editor) sur les dépôts. Pour en savoir plus sur l'attribution de rôles, consultez la section Gérer les accès.

Vous pouvez également obtenir les autorisations requises via des rôles personnalisés ou d'autres rôles prédéfinis.

Créer un workflow d'orchestration planifié

Pour exécuter des exécutions planifiées de votre workflow SQL Dataform, utilisez Workflows pour créer un workflow d'orchestration et ajouter une tâche Cloud Scheduler en tant que déclencheur.

  1. Workflows utilise des comptes de service pour permettre aux workflows d'accéder aux ressources Google Cloud. Créez un compte de service et accordez-lui le rôle Éditeur Dataform, ainsi que les autorisations minimales requises pour gérer votre workflow d'orchestration. Pour en savoir plus, consultez Autoriser un workflow à accéder aux ressources Google Cloud.

  2. Créez un workflow d'orchestration et utilisez le code source YAML suivant comme définition de workflow:

    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}
    

    Remplacez les éléments suivants :

    • PROJECT_ID: ID de votre projet Google Cloud
    • REPOSITORY_LOCATION: emplacement de votre dépôt Dataform
    • REPOSITORY_ID: nom de votre dépôt Dataform
    • GIT_COMMITISH: branche Git à partir de laquelle vous souhaitez exécuter le code Dataform. Pour un dépôt nouvellement créé, remplacez-le par main.
  3. Planifiez le workflow d'orchestration à l'aide de Cloud Scheduler.

Personnaliser la requête de création de résultat de compilation du workflow Dataform SQL

Vous pouvez mettre à jour le workflow d'orchestration existant et définir les paramètres de requête de création de résultats de compilation du workflow Dataform SQL au format YAML. Pour en savoir plus sur les paramètres, consultez la documentation de référence sur la ressource REST projects.locations.repositories.compilationResults.

Par exemple, pour ajouter un schemaSuffix _dev à toutes les actions lors de la compilation, remplacez le corps de l'étape createCompilationResult par l'extrait de code suivant:

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

Vous pouvez également transmettre des paramètres supplémentaires en tant qu'arguments d'exécution dans une requête d'exécution de workflows et accéder à ces arguments à l'aide de variables. Pour en savoir plus, consultez la section Transmettre des arguments d'exécution dans une requête d'exécution.

Personnaliser la demande d'appel du workflow SQL Dataform

Vous pouvez mettre à jour le workflow d'orchestration existant et définir les paramètres de requête d'appel du workflow SQL Dataform au format YAML. Pour en savoir plus sur les paramètres de requête d'appel, consultez la documentation de référence sur la ressource REST projects.locations.repositories.workflowInvocations.

Par exemple, pour n'exécuter que les actions comportant la balise hourly en incluant toutes les dépendances transitives, remplacez le corps createWorkflowInvocation par l'extrait de code suivant:

    - 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
                

Vous pouvez également transmettre des paramètres supplémentaires en tant qu'arguments d'exécution dans une requête d'exécution de workflows et accéder à ces arguments à l'aide de variables. Pour en savoir plus, consultez la section Transmettre des arguments d'exécution dans une requête d'exécution.

Étapes suivantes