Planification des exécutions de projets dbt sur Snowflake

Vous pouvez utiliser Snowflake tâches pour planifier des exécutions de dbt Projects on Snowflake avec la commande EXECUTE DBT PROJECT. Vous pouvez utiliser un espace de travail pour dbt Projects on Snowflake afin de créer et planifier rapidement une tâche gérée par l’utilisateur. Vous pouvez également utiliser les commandes SQL pour créer une tâche. Si un espace de travail est connecté à un objet de projet dbt, à partir de l’espace de travail, vous pouvez voir toutes les tâches qui exécutent la commande EXECUTE DBT PROJECT pour ce projet.

Vous devez créer une tâche qui exécute la commande EXECUTE DBT PROJECT dans la même base de données et le même schéma que l’objet de projet dbt.

Créer une tâche à partir d’un espace de travail

Lorsque vous créez une planification à partir d’un espace de travail pour dbt Projects on Snowflake, Snowflake crée la planification en créant une tâche gérée par l’utilisateur qui est enregistrée dans la même base de données et le même schéma que l’objet de projet dbt. La tâche est exécutée avec les privilèges du propriétaire, mais les tâches exécutées ne sont pas associées à un utilisateur.

Pour créer une tâche qui planifie l’exécution d’un objet de projet dbt à partir d’un espace de travail :

  1. Dans le menu du projet dbt en haut à droite de l’éditeur d’espace de travail, sous Scheduled runs, choisissez Create schedule.

  2. Dans la boîte de dialogue Schedule a dbt run, procédez comme suit :

    • Pour le Schedule name, saisissez un nom pour la tâche.

    • Pour la Frequency, choisissez une fréquence comprise entre Hourly et Monthly avec un qualificatif at, ou choisissez Custom et saisissez une expression Cron. Pour plus d’informations sur la planification des tâches, voir SCHEDULE = ... dans la référence de commande CREATE TASK.

    • Sous dbt properties :

      • Pour Operation, sélectionnez la commande dbt que vous souhaitez exécuter sur une planification. Pour une liste des commandes prises en charge, voir Commandes dbt prises en charge.

      • Pour Profile, sélectionnez un des profils définis dans le fichier profiles.yml de votre projet dbt.

      • Pour Additional flags, saisissez tout autre options de ligne de commande pour la commande dbt.

  3. Choisissez Create.

    Snowflake crée une tâche qui exécute une commande EXECUTE DBT PROJECT en utilisant les paramètres que vous spécifiez.

Visualisation d’une tâche à partir d’un espace de travail

Depuis l’espace de travail pour dbt Projects on Snowflake, vous pouvez visualiser toutes les tâches de la base de données et du schéma qui EXECUTE DBT PROJECT sur l’objet du projet dbt connecté à un espace de travail. Vous pouvez sélectionner une tâche pour afficher ses détails dans l’explorateur d’objets, y compris la définition de la tâche, l’historique de son exécution et le graphique de la tâche.

Pour visualiser les tâches associées à un objet de projet dbt à partir d’un espace de travail :

  • Dans le menu du projet dbt, sélectionnez View schedules puis choisissez votre planification (tâche) dans la liste.

    Les Task Details pour la tâche s’ouvrent dans l’explorateur d’objets. Détails de la tâche, l’instruction SQL qui comprend la définition de la tâche et les privilèges accordés sur l’objet de tâche sont affichés.

    Choisissez l’onglet Run History pour voir l’historique de l’exécution de la tâche, ou sélectionnez l’onglet Task Graph pour voir la relation de cette tâche avec d’autres tâches dans un graphique des tâches, le cas échéant.

    Pour plus d’informations, consultez Affichage des tâches et des graphiques de tâches dans Snowsight.

Créer une tâche en utilisant SQL

Vous pouvez utiliser la commande CREATE TASK pour créer des tâches qui exécutent la commande EXECUTE DBT PROJECT. L’utilisation de SQL pour créer des tâches qui exécutent différentes commandes dbt avec différentes options d’CLI dbt fournit un moyen puissant d’orchestrer des déploiements dbt dans Snowflake.

La requête SQL suivante crée une tâche pour une cible de dbt de production qui exécute une commande dbt run sur un intervalle de six heures.

CREATE OR ALTER TASK my_database.my_schema.run_dbt_project
  WAREHOUSE = my_warehouse
  SCHEDULE = '6 hours'
AS
  EXECUTE DBT PROJECT my_database.my_schema.my_dbt_project args='run --target prod';
Copy

Ensuite, la requête SQL suivante crée une tâche qui exécute la commande dbt test après chaque achèvement de la tâche run_dbt_project précédente.

CREATE OR ALTER TASK change_this.public.test_dbt_project
        WAREHOUSE = my_warehouse
        AFTER run_dbt_project
AS
  EXECUTE DBT PROJECT my_database.my_schema.my_dbt_project args='test --target prod';
Copy