EXECUTE DBT PROJECT

Exécute l’objet de projet dbt spécifié ou le projet dbt dans un espace de travail Snowflake en utilisant la commande dbt et les options de ligne de commande spécifiées.

Voir aussi :

CREATE DBT PROJECT, ALTER DBT PROJECT, DESCRIBE DBT PROJECT, DROP DBT PROJECT, SHOW DBT PROJECTS

Syntaxe

Exécute l’objet de projet dbt avec le nom spécifié.

EXECUTE DBT PROJECT [ IF EXISTS ] <name>
  [ ARGS = '[ <dbt_command> ] [ --<dbt_cli_option> <option_value_1> [ ... ] ] [ ... ]' ]
  [ PROJECT_ROOT = '<subdirectory_path>' ]
Copy

Syntaxe des variantes

Exécute le projet dbt qui est enregistré dans un espace de travail avec le nom d’espace de travail spécifié. L’utilisateur qui possède l’espace de travail doit être l’utilisateur qui exécute cette variante de commande.

EXECUTE DBT PROJECT [ IF EXISTS ] [ FROM WORKSPACE <name> ]
  [ ARGS = '[ <dbt_command> ] [ --<dbt_cli_option> <option_value_1> [ ... ] [ ... ] ]' ]
  [ PROJECT_ROOT = '<subdirectory_path>' ]
Copy

Paramètres requis

name

Lors de l’exécution d’un objet de projet dbt, spécifie le nom de l’objet de projet dbt à exécuter.

Lors de l’exécution d’un projet dbt en utilisant l’option FROM WORKSPACE, spécifie le nom de l’espace de travail pour dbt Projects on Snowflake. Le nom de l’espace de travail est toujours spécifié en référence au schéma public de la base de données personnelle de l’utilisateur, indiqué par le signe user$.

Il est recommandé de mettre le nom de l’espace de travail entre guillemets doubles, car les noms d’espace de travail sont sensibles à la casse et peuvent contenir des caractères spéciaux.

L’exemple suivant montre une référence de nom d’espace de travail :

user$.public."My dbt Project Workspace"

Paramètres facultatifs

ARGS = '[ dbt_command ] [ --dbt_cli_option option_value_1 [ ... ] [ ... ] ]'

Spécifie la commande dbt et les options de ligne de commande prises en charge à exécuter lors de l’exécution du projet dbt. Il s’agit d’une chaîne littérale qui doit être conforme à la syntaxe et aux exigences des commandes CLI dbt.

Si aucune valeur n’est spécifiée, le projet dbt s’exécute avec la commande dbt et les options de ligne de commande spécifiées dans la définition de l’objet du projet dbt. Si vous spécifiez les options CLI dbt sans spécifier de commande dbt, la commande run dbt s’exécute par défaut.

Important

Les arguments que vous spécifiez explicitement dans une commande EXECUTE DBT PROJECT remplacent tous les DEFAULT_ARGS spécifiés dans la définition du PROJECT DBT.

Par défaut : aucune valeur

PROJECT_ROOT = 'subdirectory_path'

Spécifie le chemin de sous-répertoire vers le fichier:file:dbt_project.yml dans l’objet de projet dbt ou l’espace de travail.

Si aucune valeur n’est spécifiée, le projet dbt s’exécute avec le fichier dbt_project.yml dans le répertoire racine de l’objet de projet dbt.

Si aucun fichier dbt_project.yml n’existe dans le répertoire racine ou dans le sous-répertoire PROJECT_ROOT, une erreur se produit.

Par défaut : aucune valeur

Sortie

Colonne

Description

0|1 Success

TRUE si le projet dbt a été exécuté avec succès ; sinon, FALSE. Si le projet dbt ne s’exécute pas, un message d’exception est renvoyé.

EXCEPTION

Tout message d’exception renvoyé par l’exécution du projet dbt. Si le projet dbt s’exécute avec succès, la chaîne None est renvoyée.

STDOUT

La sortie standard renvoyée par l’exécution du projet dbt.

OUTPUT_ARCHIVE_URL

L’URL de l’archive de sortie qui contient les fichiers de sortie de l’exécution du projet dbt. Cela inclut les fichiers journaux et les artefacts que dbt écrit sur le répertoire /target. Pour plus d’informations, voir À propos des artefacts dbt dans la documentation dbt. La sélection de ce lien entraîne directement une erreur ; cependant, vous pouvez utiliser cette URL pour récupérer des fichiers de projet dbt et la sortie. Pour plus d’informations, voir Accéder aux artefacts et aux journaux dbt de manière programmatique.

Exigences en matière de contrôle d’accès

Un rôle utilisé pour exécuter cette commande SQL doit avoir au moins l’un des privilèges suivants définis au minimum ainsi :

Privilège

Objet

USAGE

projet dbt

Le privilège USAGE relatif à la base de données et au schéma parents est exigé pour effectuer des opérations sur tout objet d’un schéma.

Pour obtenir des instructions sur la création d’un rôle personnalisé avec un ensemble spécifique de privilèges, voir Création de rôles personnalisés.

Pour des informations générales sur les rôles et les privilèges accordés pour effectuer des actions SQL sur des objets sécurisables, voir Aperçu du contrôle d’accès.

Note

La commande dbt spécifiée dans EXECUTE DBT PROJECT s’exécute avec les privilèges du role spécifié dans le bloc outputs du fichier profiles.yml des projets. Les opérations sont en outre limitées aux seuls privilèges accordés à l’utilisateur Snowflake appelant EXECUTE DBT PROJECT. L’utilisateur et le rôle spécifiés doivent tous deux disposer des privilèges requis pour utiliser l”warehouse, effectuer des opérations sur les database et schema spécifiés dans le fichier profiles.yml du projet, et effectuer des opérations sur tous les autres objets Snowflake que le modèle dbt spécifie.

Exemples

Commande d’exécution par défaut avec cible et modèles spécifiés

Exécutez une run dbt ciblant le profile dev dans le fichier dbt_project.yml dans le répertoire racine de l’objet de projet dbt et sélectionnant trois modèles dans le DAG du projet. Aucune commande run n’est explicitement spécifiée et n’est exécutée par défaut.

EXECUTE DBT PROJECT my_database.my_schema.my_dbt_project
  ARGS = '--select simple_customers combined_bookings prepped_data --target dev';
Copy

Commande de test explicite avec cible et modèles spécifiés

Exécutez une commande test dbt ciblant le profil prod dans le fichier dbt_project.yml dans le répertoire racine de l’objet de projet dbt et sélectionnant trois modèles dans le DAG du projet.

EXECUTE DBT PROJECT my_database.my_schema.my_dbt_project
  ARGS = '--select simple_customers combined_bookings prepped_data --target prod';
Copy

Commande d’exécution explicite avec modèles en aval spécifiés

Exécutez une commande run dbt ciblant le profil dev dans le fichier dbt_project.yml et sélectionnant tous les modèles en aval du modèle simple_customers utilisant la notation + dbt.

EXECUTE DBT PROJECT my_database.my_schema.my_dbt_project
  ARGS = 'run --select simple_customers+ --target dev';
Copy

Commande d’exécution par défaut spécifiant un projet de sous-répertoire avec exécution par défaut et DEFAULT ARGS à partir de la définition de l’objet de projet dbt

Pour un objet de projet dbt contenant des sous-répertoires pour trois projets dbt, exécutez une commande run dbt pour le projet dbt dans le sous-répertoire project2. La commande d’exécution est supposée, et la commande cible le profil dev, qui a été spécifié à l’aide des DEFAULT ARGS dans la définition du PROJECT DBT.

EXECUTE DBT PROJECT my_database.my_schema.my_parent_dbt_project PROJECT_ROOT = 'project2';
Copy

Exécuter et tester des projets dbt à l’aide de tâches de production

Créez une tâche pour une cible de dbt de production qui exécute une commande run sur un intervalle de six heures. Créez ensuite une tâche qui exécute la commande test dbt après la fin de chaque tâche run dbt. La commande EXECUTE DBT PROJECT pour chaque tâche cible le profil prod dans le fichier dbt_project.yml dans le répertoire racine de l’objet de projet dbt.

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';


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