EXECUTE DCM PROJECT

Exécute l’une des actions suivantes sur un projet DCM :

  • EXECUTE DCM PROJECT <name> PLAN effectue une simulation de l’exécution de DCM project pour analyser les modifications qui seraient appliquées à la cible lors d’un déploiement, mais n’applique aucune modification.

  • EXECUTE DCM PROJECT <name> DEPLOY déploie les modifications définies dans les fichiers de définition du projet sur le compte.

  • EXECUTE DCM PROJECT <name> REFRESH ALL actualise les tables dynamiques gérées par DCM project.

  • EXECUTE DCM PROJECT <name> TEST ALL teste toutes les attentes des fonctions de métrique des données associées gérées par DCM project.

  • EXECUTE DCM PROJECT <name> PREVIEW renvoie un échantillon de données des définitions actuelles spécifiées dans le chemin source de la table, vue ou table dynamique spécifiée.

Voir aussi :

CREATE DCM PROJECT, ALTER DCM PROJECT, DESCRIBE DCM PROJECT, DROP DCM PROJECT, SHOW DCM PROJECTS, SHOW DEPLOYMENTS IN DCM PROJECT

Syntaxe

EXECUTE DCM PROJECT <name>
  PLAN
  [ USING [ CONFIGURATION <config_name> ] [ (<expr>, [, <expr>, ...]) ] ]
  FROM '<source-files_path>'

EXECUTE DCM PROJECT <name>
  DEPLOY [ AS '<deployment_name_alias>' ]
  [ USING [ CONFIGURATION <name> ] [ (<expr>, [, <expr>, ...]) ] ]
  FROM '<source-files_path>'

EXECUTE DCM PROJECT <name>
  REFRESH ALL

EXECUTE DCM PROJECT <name>
  TEST ALL

EXECUTE DCM PROJECT <name>
  PREVIEW <fully_qualified_table_object_name>
  USING CONFIGURATION <config_name>
  FROM '<source_files_path>'

Paramètres requis

name

Spécifie l’identificateur du projet DCM à exécuter.

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.

PLAN

Demande à Snowflake d’effectuer une simulation de l’exécution de|dcm-object|. En mode simulation, Snowflake analyse les modifications qui seraient appliquées à la cible lors d’un déploiement, mais n’applique aucune modification.

DEPLOY [ AS 'deployment_name_alias' ]

Déploie les modifications définies dans les fichiers de définition du projet sur le compte ; spécifie éventuellement un alias pour le déploiement.

FROM 'source_files_path'

Indique le répertoire qui contient les fichiers sources de DCM project. Le répertoire doit contenir un fichier manifeste et au moins un fichier de définition dans /sources/definitions/. Le fichier manifeste fournit les valeurs de modélisation au cas où une configuration a été spécifiée.

REFRESH ALL

Actualise toutes les tables dynamiques actuellement gérées par DCM project.

TEST ALL

Vérifie toutes les contraintes de qualité des données associées aux tables, aux tables dynamiques ou aux vues actuellement gérées par DCM project.

PREVIEW fully_qualified_table_object_name

Renvoie un échantillon de données des définitions actuelles spécifiées dans le chemin source pour la table, la vue ou la table dynamique spécifiée, indépendamment de tout état déployé.

Paramètres facultatifs

USING CONFIGURATION config_name

Spécifie la configuration à utiliser. Cela vous permet de personnaliser les déploiements pour différents environnements, tels que le développement, la mise en zone de préparation ou la production, sans utiliser différents fichiers de définition de projet.

Si le nom de la configuration n’est pas tout en majuscules, placez-le entre guillemets doubles.

USING ( expr [, expr , ... ] )

Spécifie éventuellement les valeurs des variables de modèle. L’utilisation de cette option remplace toutes les valeurs par défaut ou de configuration pour cette variable spécifique. L’expression unique doit se présenter sous la forme suivante : <variable_name> => <variable_value>. Pour les listes, utilisez le format suivant : <variable_name> => [<value1>, <value2>, ...]. Par exemple : wh_size => 'MEDIUM' or teams => ['TEAM_A', 'TEAM_B'].

Cela vous permet de personnaliser les déploiements pour différents environnements, tels que le développement, la mise en zone de préparation ou la production, sans utiliser différents fichiers de définition de projet.

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

Remarques

OWNERSHIP

Projet DCM

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).

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.

Sortie

Après l’exécution de DCM project, cette commande renvoie la sortie suivante en fonction de la variation :

  • PLAN et DEPLOY : Une seule ligne contenant un objet JSON avec le journal des modifications

  • PREVIEW : Un jeu de résultats

  • REFRESH ALL : Une seule ligne contenant un objet JSON qui contient la réponse complète.

  • TEST ALL : Une seule ligne contenant un objet JSON qui contient la réponse complète.

Notes sur l’utilisation

Lors de l’exécution d’un DCM project avec EXECUTE DCM PROJECT PLAN, la sortie de la commande est identique à celle du déploiement réel. La différence est qu’aucune modification n’est appliquée au compte concerné. Cette fonctionnalité vous permet de vérifier si les fichiers de définition générés respectent la syntaxe requise, quelles modifications seraient appliquées au compte, et si le rôle de propriétaire du projet dispose des privilèges nécessaires pour appliquer ces modifications.

Pour éviter les modifications involontaires et détecter les erreurs, exécutez toujours EXECUTE DCM PROJECT PLAN avant de déployer un DCM project.

Prise en charge des variables de modèle

Les variables de modèle permettent de choisir de manière dynamique le contenu des fichiers de définitions paramétrés pendant l’exécution DCM project. Vous pouvez utiliser les variables de modèle des manières suivantes :

Consultez la section Exemples de variables de modèle pour obtenir des exemples.

Exemples

Exemples de base

Exécutez un DCM project en mode PLAN pour valider les modifications apportées à un projet sans les appliquer :

EXECUTE DCM PROJECT my_project
  PLAN
  FROM '@my_database.my_schema.my_stage/my_project';

Exécutez un projet DCM en mode DEPLOY (pour appliquer les modifications) pour spécifier un alias de déploiement et une configuration nommée PROD :

EXECUTE DCM PROJECT my_project
  DEPLOY AS "my_update"
  USING CONFIGURATION PROD
  FROM '@my_database.my_schema.my_stage/my_project';

Exemples de variables de modèle

Les exemples suivants montrent comment vous pouvez spécifier la valeur des variables de modèle dans une instruction EXECUTE DCM PROJECT.

Remplacer la variable de modèle définie dans le fichier manifeste du projet DCM

  1. Définir une variable de modèle nommée desc dans le fichier manifeste :

    manifest_version: 2
    type: DCM_PROJECT
    default_target: DCM_DEV
    targets:
      DCM_DEV:
        desc: "created by hello world project"
    
  2. Créer un fichier de définition qui utilise la variable de modèle :

    DEFINE DATABASE NEW_DB;
    DEFINE TABLE NEW_DB.PUBLIC.TBL (ID INT) COMMENT = '{{desc}}';
    
  3. Appeler la commande EXECUTE DCM PROJECT en mode DEPLOY, et spécifier une valeur pour la variable desc pour remplacer sa valeur par défaut dans le manifeste :

    EXECUTE DCM PROJECT MY_PROJECT DEPLOY
      USING CONFIGURATION FIRST_CONFIG (desc => 'This object is mine')
      FROM '/my/project/source';
    

Indiquer une valeur pour une variable de modèle non définie dans le fichier manifeste

  1. Créer un fichier de définition avec les commandes souhaitées :

    DEFINE DATABASE NEW_DB;
    DEFINE TABLE NEW_DB.PUBLIC.TBL (ID INT) COMMENT = '{{desc_new}}';
    
  2. Appeler la commande EXECUTE DCM PROJECT, et spécifier une valeur pour la variable desc_new :

    EXECUTE DCM PROJECT MY_PROJECT (desc_new => 'This object is mine');