Planifier des exécutions avec Workflows et Cloud Scheduler

Ce document explique comment exécuter des exécutions planifiées de workflows SQL Dataform à 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.

Les workflows exécutent 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 en résultat de compilation. Il utilise ensuite le résultat de la compilation pour créer un workflow SQL Dataform et l'exécute à la fréquence que vous définissez.

Avant de commencer

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

    Accéder à la page Dataform

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

Rôles requis

Pour obtenir les autorisations nécessaires pour planifier des exécutions Dataform avec des workflows, demandez à votre administrateur de vous accorder le rôle IAM Éditeur Dataform (roles/dataform.editor) sur les dépôts. Pour en savoir plus sur l'attribution de rôles, consultez la page Gérer l'accès aux projets, aux dossiers et aux organisations.

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 comme déclencheur.

  1. Workflows utilise des comptes de service pour accorder aux workflows un accès aux ressourcesGoogle Cloud . Créez un compte de service et attribuez-lui le rôle Éditeur Dataform, ainsi que les autorisations minimales requises pour gérer votre workflow d'orchestration. Pour en savoir plus, consultez la section Accorder à un workflow l'autorisation d'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 Google Cloud projet
    • 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 SQL Dataform

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 SQL Dataform 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'environnement d'exécution dans une requête d'exécution de workflow et y accéder à l'aide de variables. Pour en savoir plus, consultez la section Transmettre des arguments d'environnement d'exécution dans une requête d'exécution.

Personnaliser la requête d'appel du workflow SQL Dataform

Vous pouvez mettre à jour le workflow d'orchestration existant et définir les paramètres de la requête d'appel du workflow SQL Dataform au format YAML. Pour en savoir plus sur les paramètres de la 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 des actions avec la balise hourly avec toutes les dépendances transitives incluses, 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'environnement d'exécution dans une requête d'exécution de workflow et y accéder à l'aide de variables. Pour en savoir plus, consultez la section Transmettre des arguments d'environnement d'exécution dans une requête d'exécution.

Étape suivante