ALTER DBT PROJECT¶
Modifie les propriétés d’un objet de projet dbt existant :doc:` </user-guide/data-engineering/dbt-projects-on-snowflake>`.
- Voir aussi :
CREATE DBT PROJECT, EXECUTE DBT PROJECT, DESCRIBE DBT PROJECT, DROP DBT PROJECT, SHOW DBT PROJECTS
Syntaxe¶
ALTER DBT PROJECT [ IF EXISTS ] <name> RENAME TO <new_name>
ALTER DBT PROJECT [ IF EXISTS ] ADD VERSION [ <version_name_alias> ]
FROM '<source_location>'
ALTER DBT PROJECT [ IF EXISTS ] <name> SET
[ DEFAULT_VERSION = { FIRST | LAST | VERSION$<num> } ]
[ DEFAULT_ARGS = '<string_literal>' ]
[ COMMENT = '<string_literal>' ]
ALTER DBT PROJECT [ IF EXISTS ] <name> UNSET
[ DEFAULT_ARGS ]
[ COMMENT ]
Paramètres¶
name
Indique l’identificateur de l’objet de projet dbt à modifier.
Si l’identificateur contient des espaces ou des caractères spéciaux, toute la chaîne doit être délimitée par des guillemets doubles. Les identificateurs entre guillemets doubles sont également sensibles à la casse.
Pour plus d’informations, voir Exigences relatives à l’identificateur.
RENAME TO new_name
Remplace le nom de l’objet du projet dbt par
new_name
. Le nouvel identificateur doit être unique pour le schéma.Pour plus d’informations sur les identificateurs, voir Exigences relatives à l’identificateur.
Vous pouvez déplacer l’objet vers une autre base de données et/ou un autre schéma tout en renommant éventuellement l’objet. Pour ce faire, spécifiez une valeur
new_name
qualifiée qui inclut le nouveau nom de la base de données et/ou du schéma sous la formedb_name.schema_name.object_name
ouschema_name.object_name
, respectivement.Note
La base de données et/ou le schéma de destination doivent déjà exister. En outre, un objet portant le même nom ne peut pas déjà exister dans le nouvel emplacement ; sinon, l’instruction renvoie une erreur.
Le déplacement d’un objet vers un schéma d’accès géré est interdit sauf si le propriétaire de l’objet (c’est-à-dire le rôle qui a le privilège OWNERSHIP sur l’objet) est également propriétaire du schéma cible.
Lorsqu’un objet est renommé, les autres objets qui le référencent doivent être mis à jour avec le nouveau nom.
ADD VERSION [ version_name_alias ]
Crée une nouvelle version en augmentant de manière incrémentielle l’identificateur de la version actuelle de 1, par exemple, de
version$2
àversion$3
.L’
version name alias
est facultatif, il s’agit d’un identificateur personnalisé qui correspond à l’identificateur de la version nouvellement créée. L’version name alias
doit suivre les Exigences relatives à l’identificateur.FROM 'source_location'
Chaîne qui spécifie l’emplacement des fichiers sources et la version du projet dbt à partir duquel la version sera créée.
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.
SET ...
Définit les propriétés ou paramètres spécifiés pour l’objet de projet dbt :
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.
DEFAULT_ARGS = 'string_literal'
Une chaîne qui spécifie la commande dbt par défaut et les 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.
COMMENT = 'string_literal'
Ajoute un commentaire ou remplace un commentaire existant pour l’objet de projet dbt.
UNSET ...
Désactive les propriétés ou les paramètres spécifiés pour l’objet du projet dbt avec NULL ou en ne leur appliquant aucune valeur :
DEFAULT_VERSION
DEFAULT_ARGS
COMMENT
Pour désactiver plusieurs propriétés ou paramètres via une seule instruction ALTER, séparez chaque propriété ou paramètre par une virgule.
Lorsque vous désactivez une propriété ou un paramètre, spécifiez uniquement le nom de propriété ou de paramètre (sauf si la syntaxe ci-dessus indique que vous devez spécifier la valeur). La spécification de la valeur renvoie une erreur.
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 |
Remarques |
---|---|---|
OWNERSHIP |
projet dbt |
OWNERSHIP is a special privilege on an object that is automatically granted to the role that created the object, but can also be transferred using the GRANT OWNERSHIP command to a different role by the owning role (or any role with the MANAGE GRANTS privilege). |
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.
Notes sur l’utilisation¶
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¶
L’exemple suivant met à jour un objet de référentiel Git dans Snowflake pour récupérer le dernier code du référentiel Git, puis met à jour le contenu de l’objet de projet dbt en ajoutant une nouvelle version :
-- Update the Git repository object to fetch the latest code
ALTER GIT REPOSITORY sales_db.integrations_schema.sales_dbt_git_stage FETCH;
-- Add a new version to the dbt project object based on the updated Git repository object
ALTER DBT PROJECT sales_db.dbt_projects_schema.sales_model
ADD VERSION
FROM '@sales_db.integrations_schema.sales_dbt_git_stage/branches/main/sales_dbt_project';
L’exemple suivant définit les arguments par défaut d’un objet de projet dbt pour qu’il s’exécute sur la valeur prod
cible, qui remplace tous les arguments par défaut précédemment définis dans la définition du projet :
ALTER DBT PROJECT sales_db.dbt_projects_schema.sales_model
SET DEFAULT_ARGS = 'run --target prod';