CREATE DBT PROJECT¶
Crée un nouvel objet de projet dbt ou remplace un projet dbt existant. L’exécution de CREATE DBT PROJECT avec l’option OR REPLACE réinitialise l’identificateur de version à version$1
et supprime tous les alias de nom de version. Pour plus d’informations, voir Gestion des versions pour les objets et fichiers de projet dbt.
- Voir aussi :
ALTER DBT PROJECT, DESCRIBE DBT PROJECT, EXECUTE DBT PROJECT, SHOW DBT PROJECTS, DROP DBT PROJECT
Syntaxe¶
CREATE [ OR REPLACE ] DBT PROJECT [ IF NOT EXISTS ] <name>
[ FROM '<source_location>' ]
[ DEFAULT_ARGS = '<string_literal>' ]
[ DEFAULT_VERSION = { FIRST | LAST | VERSION$<num> } ]
[ COMMENT = '<string_literal>' ]
Paramètres requis¶
name
Chaîne qui spécifie l’identificateur (c’est-à-dire le nom) de l’objet de projet dbt dans Snowflake ; doit être unique pour le schéma dans lequel le projet dbt est créé.
De plus, l’identificateur doit commencer par un caractère alphabétique et ne peut pas contenir d’espaces ou de caractères spéciaux à moins que toute la chaîne d’identificateur soit délimitée par des guillemets doubles (par exemple,
"My object"
). Les identificateurs entre guillemets doubles sont également sensibles à la casse.Pour plus d’informations, voir Exigences relatives à l’identificateur.
Paramètres facultatifs¶
FROM 'source_location'
Chaîne qui spécifie l’emplacement dans Snowflake des fichiers sources de l’objet de projet dbt. Il peut s’agir d’un répertoire parent contenant plusieurs projets dbt, ou d’un sous-répertoire spécifique contenant un projet dbt et un fichier:file:
dbt_project.yml
.Si l’emplacement spécifié ne contient pas de fichier
dbt_project.yml
, la commande EXECUTE DBT PROJECT doit utiliser le paramètre PROJECT_ROOT pour spécifier le chemin du sous-répertoire vers un fichierdbt_project.yml
.Si aucune valeur n’est spécifiée, Snowflake crée un projet dbt vide.
Les fichiers sources du projet dbt peuvent se trouver à l’un des emplacements suivants :
Une zone de préparation de référentiel Git, par exemple :
'@my_db.my_schema.my_git_repository_stage/branches/my_branch/path/to/dbt_project_or_projects_parent'
Pour plus d’informations sur la création d’un objet de référentiel Git dans Snowflake qui connecte un référentiel Git à un espace de travail pour dbt Projects on Snowflake, voir Créer un espace de travail connecté à votre dépôt Git. Pour plus d’informations sur la création et la gestion d’un objet de référentiel Git et d’une zone de préparation sans utiliser d’espace de travail, voir Utilisation d’un référentiel Git dans Snowflake et CREATE GIT REPOSITORY.
Une zone de préparation de projet dbt existante, par exemple :
'snow://dbt/my_db.my_schema.my_existing_dbt_project_object/versions/last'
Le spécificateur de version est obligatoire et peut être
last
(comme dans l’exemple précédent),first
ou le spécificateur de toute version existante sous la formeversion$<nb>
. Pour plus d’informations, voir Gestion des versions pour les objets et fichiers de projet dbt.Une zone de préparation interne nommée, par exemple :
'@my_db.my_schema.my_internal_named_stage/path/to/dbt_projects_or_projects_parent'
Les zones de préparation d’utilisateur internes et les zones de préparation de table ne sont pas prises en charge.
Un espace de travail pour dbt sur Snowflake, par exemple :
'snow://workspace/user$.public."my_workspace_name"/versions/live/path/to/dbt_projects_or_projects_parent'
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.
Le spécificateur de version est obligatoire et peut être
last
,first
,live
ou le spécificateur de toute version existante sous la formeversion$<nb>
. Pour plus d’informations, voir Gestion des versions pour les objets et fichiers de projet dbt.
Par défaut : aucune valeur
DEFAULT_ARGS = 'string_literal'
Une chaîne qui spécifie la valeur par défaut commande dbt et options de ligne de commande à utiliser si EXECUTE DBT PROJECT ne spécifie aucune commande.
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
DEFAULT_VERSION = { FIRST | LAST | VERSION$num }
Spécifie la version par défaut de l’objet du projet dbt que EXECUTE DBT PROJECT utilisera. Pour plus d’informations, voir Gestion des versions pour les objets et fichiers de projet dbt. Si aucune valeur n’est spécifiée, EXECUTE DBT PROJECT utilise
LAST
. Pour plus d’informations, voir Gestion des versions pour les objets et fichiers de projet dbt.Par défaut : aucune valeur
COMMENT = 'string_literal'
Spécifie un commentaire pour l’objet de projet dbt.
Par défaut : aucune valeur
Exigences en matière de contrôle d’accès¶
Un rôle utilisé pour exécuter cette opération doit au minimum disposer des privilèges suivants :
Privilège |
Objet |
---|---|
CREATE DBT PROJECT |
Schéma |
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.
Notes sur l’utilisation¶
Les clauses
OR REPLACE
etIF NOT EXISTS
s’excluent mutuellement. Elles ne peuvent pas être utilisées dans la même instruction.Les instructions CREATE OR REPLACE <objet> sont atomiques. En d’autres termes, lorsqu’un objet est remplacé, l’ancien objet est supprimé et le nouvel objet est créé dans une seule transaction.
Concernant les métadonnées :
Attention
Les clients doivent s’assurer qu’aucune donnée personnelle (autre que pour un objet utilisateur), donnée sensible, donnée à exportation contrôlée ou autre donnée réglementée n’est saisie comme métadonnée lors de l’utilisation du service Snowflake. Pour plus d’informations, voir Champs de métadonnées dans Snowflake.
Exemples¶
Créer un objet de projet dbt à partir d’une zone de préparation du référentiel Git dans Snowflake
Créer un objet de projet dbt à partir d’une version spécifique d’un objet de projet dbt existant
Créer un objet de projet dbt à partir d’un espace de travail contenant plusieurs projets dbt
Créer un objet de projet dbt à partir d’une zone de préparation du référentiel Git dans Snowflake¶
Créer un objet de projet dbt nommé sales_dbt_model
depuis les fichiers de projet dbt dans une zone de préparation du référentiel Git. La commande spécifie la branche main
d’une zone de préparation de référentiel Git nommée sales_dbt_git_stage
dans Snowflake, où le dbt_project.yml
est enregistré à la racine du référentiel.
CREATE DBT PROJECT sales_db.dbt_projects_schema.sales_model
FROM '@sales_db.integrations_schema.sales_dbt_git_stage/branches/main'
COMMENT = 'generates sales data models';
Créer un objet de projet dbt à partir d’un sous-répertoire au sein d’une zone de préparation de référentiel Git dans Snowflake¶
Créer un objet de projet dbt nommé sw_region_dbt_project
depuis une zone de préparation de référentiel Git contenant plusieurs projets dbt. La commande spécifie la branche main
d’une zone de préparation de référentiel Git nommée sales_dbt_git_stage
dans Snowflake, où le dbt_project.yml
est enregistré dans le sous-répertoire sw_region_dbt_project
du répertoire sales_dbt_projects_parent
.
CREATE DBT PROJECT sales_db.dbt_projects_schema.sw_region_sales_model
FROM '@sales_db.integrations_schema.sales_dbt_git_stage/branches/main/sales_dbt_projects_parent/sw_region_dbt_project'
COMMENT = 'generates data models for sw sales region';
Créer un objet de projet dbt à partir d’une version spécifique d’un objet de projet dbt existant¶
Créer un nouvel objet de projet dbt nommé sales_nw_dbt_model_combined_bookings
depuis version$2
de la zone de préparation de l’objet dbt sales_dbt_projects
. Le paramètre DEFAULT_ARGS spécifie l’option de ligne de commande --select
pour que seuls les modèles avec la balise nw_region
s’exécutent avec EXECUTE DBT PROJECT.
CREATE DBT PROJECT sales_db.dbt_projects_schema.sales_model_nw_region
FROM 'snow://dbt/sales_db.dbt_projects_schema.sales_model/versions/version$2'
DEFAULT_ARGS = '--select "tag:nw_region"'
COMMENT = 'generates data models for the NW sales region';
Créer un objet de projet dbt à partir d’un espace de travail contenant plusieurs projets dbt¶
Créer un nouvel objet de projet dbt nommé sales_model_from_workspace
à partir de la version en direct d’un espace de travail pour dbt Projects on Snowflake. Ceci est particulièrement utile pour créer un objet de projet dbt à partir d’un espace de travail parent qui contient plusieurs sous-répertoires de projet dbt. 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.
-- Create a dbt project object from a workspace named "My dbt Project Workspace" in the user's personal database.
CREATE DBT PROJECT sales_db.dbt_projects_schema.sales_model_from_workspace
FROM 'snow://workspace/user$.public."My dbt Project Workspace"/versions/live'
-- Execute the dbt project, specifying a subdirectory path for a dbt project within the workspace
EXECUTE DBT PROJECT sales_db.dbt_projects_schema.sales_model_from_workspace
PROJECT_ROOT = 'project2'
ARGS = 'run --target prod';