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> [ ... ] ] [ ... ]' ]
  [ DBT_VERSION = 'version_number' ]

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> [ ... ] [ ... ] ]' ]
  [ DBT_VERSION = 'version_number' ]
  [ PROJECT_ROOT = '<subdirectory_path>' ]

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 [ ... ] [ ... ] ]'

Specifies the dbt command and supported command-line options to use when the dbt project object executes. This is a literal string that must conform to the syntax and requirements of dbt CLI commands.

If no value is specified, the dbt project object executes with the dbt command and command-line options specified in the dbt project object definition. If you specify dbt CLI options without specifying a dbt command, the dbt run command executes by default.

Par défaut : aucune valeur

DBT_VERSION = 'version_number'

Specifies a version for the dbt project object.

Default: When you execute a dbt project object, the system uses the default version you specified when creating the dbt project object. If none was specified, the system uses 1.9.4 by default.

Pour plus d’informations, voir Versions dbt Core prises en charge pour dbt Projects on Snowflake.

PROJECT_ROOT = 'subdirectory_path'

Spécifie le chemin de sous-répertoire vers le fichier dbt_project.yml dans l’objet de projet dbt ou l’espace de travail. Ce paramètre n’est pris en charge que lors de l’exécution d’un projet dbt en utilisant l’option FROM WORKSPACE.

If no value is specified, the dbt project object executes with the dbt_project.yml file in the root directory of the dbt project object.

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 if the dbt project object executed successfully; otherwise, FALSE. If the dbt project object fails to execute, an exception message is returned.

EXCEPTION

Any exception message returned by the dbt project execution. If the dbt project object executes successfully, the string None is returned.

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

Pour effectuer une opération sur un objet dans un schéma, il est nécessaire de disposer d’au moins un privilège sur la base de données parente et d’au moins un privilège sur le schéma parent.

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

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

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

Execute and test dbt project objects using production tasks

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

Remplacer la version épinglée du projet au moment de l’exécution à des fins de test ou de besoins temporaires

my_dbt_project is pinned to 1.9.4. This execution overrides the dbt project object’s default 1.9.4 version:

EXECUTE DBT PROJECT finance_analytics
  DBT_VERSION = '1.10.15'