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 ]
Copy

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 forme db_name.schema_name.object_name ou schema_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 forme version$<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 forme version$<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';
Copy

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