Déployer et gérer DCM Projects¶
Cette rubrique décrit comment créer et déployer DCM Projects pour gérer les environnements Snowflake, y compris en tant que comptes.
La gestion d’un DCM project comprend les étapes suivantes :
Préparer votre compte Snowflake pour un DCM project.
Définir la configuration du projet et les objets dans les fichiers de projet.
Créer un objet DCM Projects.
Planifier pour prévisualiser les modifications proposées avant le déploiement.
Déployer le projet.
Maintenir le projet en suivant, en mettant à jour et en répétant le processus, si nécessaire.
Vous pouvez déployer en continu des modifications incrémentielles dans votre projet, ainsi que des modifications d’infrastructure de compte à grande échelle.
Il est recommandé de déployer en continu des modifications incrémentielles et des ajouts à votre projet, plutôt que de passer de 0 à 100 modifications d’infrastructure de compte à grande échelle dans un seul déploiement.
Préparer un DCM project¶
Pour commencer avec DCM Projects, votre compte Snowflake doit remplir les conditions préalables suivantes :
Une base de données et un schéma dans lesquels vous pouvez créer votre objet DCM Projects
Un rôle disposant des privilèges nécessaires pour créer un objet DCM Projects et exécuter des requêtes sur un entrepôt
Pour la Snowflake CLI, un rôle disposant des privilèges nécessaires pour créer une zone de préparation temporaire
Cette section décrit les tâches que vous devez effectuer pour préparer l’installation de DCM Projects :
Installer les interfaces à utiliser avec les projets DCM si vous souhaitez utiliser la Snowflake CLI ou la CLI Cortex.
Configurer l’intégration Git (recommandé mais non obligatoire)
Note
Le référentiel DCM snowflake-labs est mis à jour en continu avec des ressources pour vous aider à démarrer.
Démarrages rapides et projets de démonstration : Un référentiel que vous pouvez cloner dans un espace de travail Snowflake ou un dossier local pour tester les commandes DCM Projects et explorer les capacités DCM Projects.
Exemples d’actions et de workflows GitHub : modèles de pipeline CI/CD utilisant la CLI Snowflake pour tester et déployer des projets DCM.
Outils d’interface¶
Vous disposez des options d’interface suivantes pour DCM Projects.
Outil d’interface |
Mieux adapté à |
|---|---|
Snowsight Un espace de travail dans Snowsight est un IDE Cloud natif Snowflake disponible dans votre compte. |
|
IDE local avec la CLI Snowflake L’interface la plus familière et la plus personnalisée pour les ingénieurs logiciels. |
|
Cortex Code Un outil AI agentique pour Snowflake. Pour plus d’informations, voir Cortex Code pour DCM Projects. |
|
Commandes SQL |
|
Cortex Code pour DCM Projects¶
Cortex Code est un outil AI agentique pour Snowflake. Lorsque la fonctionnalité DCM est activée, Cortex Code peut créer, migrer, déboguer et déployer DCM Projects de manière autonome. Il peut également travailler à vos côtés étape par étape.
Note
Cortex Code avec la fonctionnalité DCM est actuellement disponible via la CLI Cortex Code uniquement. Il n’est pas disponible dans Snowsight Workspaces.
La fonctionnalité DCM Cortex Code permet d’effectuer les opérations suivantes :
Échelonner un nouveau DCM project de zéro, y compris le fichier manifeste, la structure des dossiers et les fichiers de définition.
Créer et modifier des instructions DEFINE, des modèles Jinja et des macros.
Exécuter des commandes PLAN, DEPLOY, REFRESH, TEST et PREVIEW.
Interpréter la sortie du plan, diagnostiquer les défaillances et suggérer des correctifs.
Télécharger et inspecter les artefacts de déploiement.
Naviguer et expliquer un DCM project existant.
Pour commencer avec la fonctionnalité DCM Cortex Code, procédez comme suit :
Installez la CLI Cortex Code comme décrit dans Installation de Cortex Code.
Démarrez Cortex Code sur votre terminal.
Utilisez la référence de la compétence
$dcmou mentionnezDCMdans votre invite en langage naturel pour interagir avec votre DCM Projects de manière conversationnelle.
Par exemple :
« Créer un nouveau projet DCM pour notre pipeline d’analyses »
« Planifier mon projet par rapport à la cible PROD »
« Pourquoi mon dernier plan a-t-il échoué ? »
« Ajouter une nouvelle définition de table dynamique pour les dépenses des clients »
Snowflake CLI pour DCM Projects¶
Snowflake CLI est une interface de ligne de commande pour Snowflake. Il s’agit d’un outil que vous pouvez utiliser pour interagir avec votre compte Snowflake depuis votre IDE local.
Les projets DCM nécessitent la version 3.16 ou supérieure de Snowflake CLI. Installez ou mettez à niveau la Snowflake CLI comme décrit dans Installation de Snowflake CLI.
Configurez votre connexion à votre compte Snowflake, comme décrit dans Configuration de la CLI Snowflake et connexion à Snowflake. Confirmez que vous disposez d’une connexion fonctionnelle :
Accédez au répertoire local de votre clone de référentiel Git. Par exemple :
Consultez les commandes DCM Snowflake CLI disponibles :
Intégration Git¶
Connectez-vous au référentiel Git dans lequel vos fichiers de définition DCM project sont stockés.
Créez un nouvel espace de travail à partir d’un référentiel Git.
Créez ou sélectionnez une branche Git pour les modifications que vous prévoyez d’apporter.
Snowflake clone les fichiers de cette branche dans votre éditeur d’espace de travail.
Accédez au dossier dans lequel se trouvent vos fichiers de définition DCM project ou dans lequel vous souhaitez les créer.
-
L’extension Snowflake pour VSCode n’est pas nécessaire ici, mais peut être utile.
Connectez-vous à votre référentiel Git.
Connectez votre IDE local à votre référentiel Git distant.
Créez ou sélectionnez une branche pour vos modifications planifiées.
Clonez cette branche sur votre disque local.
Accédez au dossier dans lequel se trouvent vos fichiers de définition DCM Projects ou dans lequel vous souhaitez les créer.
Créer une DCM project¶
Rôles et privilèges requis¶
Le rôle de l’utilisateur qui crée un objet DCM project doit disposer des rôles et privilèges suivants :
Le privilège CREATE DCM PROJECT ON SCHEMA :
Créer une DCM project¶
Créez un objet DCM project à l’aide de l’une des options suivantes.
Pour créer un projet pour une cible autre que celle par défaut, utilisez l’une des commandes suivantes :
Dans le menu de navigation, sélectionnez Projects » Workspaces.
Sur la page Workspaces, sélectionnez « +Ajouter nouveau » -> « Projet DCM » pour créer un nouveau dossier DCM project
Sélectionnez « Définir l’environnement cible par défaut » pour sélectionner ou créer un nouvel objet DCM project pour la cible par défaut dans le manifeste
Lors de l’exécution DCM PLAN par rapport à une cible qui a un objet DCM project défini dans le manifeste, mais qui n’existe pas encore, l’UI vous demandera de confirmer la création de cet objet DCM project en fonction du nom défini et du rôle de propriétaire avant d’exécuter le plan.
La Target indique si l’objet DCM project spécifié existe déjà et peut être utilisé ou non.
Vert : L’objet DCM project existe et peut être utilisé pour exécuter PLAN ou DEPLOY.
Rouge : L’objet DCM project n’existe pas et doit d’abord être créé.
Contrôle d’accès et privilèges de rôle¶
Vous pouvez définir le contrôle d’accès basé sur les rôles (RBAC) de l’objet DCM project au niveau du schéma sur les privilèges READ, MONITOR ou OWNERSHIP.
Ces privilèges sont indépendants du contrôle d’accès aux fichiers de définitions stockés dans un espace de travail, une zone de préparation ou un référentiel.
Privilège |
Description |
Opérations autorisées |
|---|---|---|
READ |
|
|
MONITOR |
|
|
OWNERSHIP |
|
|
Note
Comme les autres commandes Snowflake, EXECUTE DCM PROJECT tient compte du fait que les privilèges des rôles secondaires sont activés pour l’utilisateur qui exécute la commande. Exécutez USE SECONDARY ROLES NONE; afin de ne pas tirer parti des privilèges d’autres rôles que celui de propriétaire du projet. Cela garantit que le comportement du déploiement est cohérent entre les différents environnements lorsqu’il est exécuté par différents utilisateurs de service dotés du même rôle principal.
Propriété sur les objets gérés par DCM¶
Le rôle qui déploie un DCM project, dispose, par défaut, du privilège OWNERSHIP associé à tous les objets déployés.
Les définitions de projets peuvent inclure les instructions GRANT OWNERSHIP vers d’autres rôles. Snowflake recommande que le rôle de propriétaire DCM project n’accorde la propriété des objets gérés par DCM qu’à un autre rôle de niveau inférieur dont il dispose également. Le projet peut alors continuer à gérer cet objet, car le rôle de propriétaire du projet « hérite » des privilèges du nouveau rôle de propriétaire de l’objet.
Si le rôle de propriétaire DCM project accorde la propriété sur les objets gérés par DCM à un autre rôle dont il ne dispose pas, le projet ne peut plus gérer cet objet déployé, car le rôle de propriétaire du projet n’en est plus propriétaire. Les déploiements suivants échoueront. La définition de l’objet doit être supprimée du projet ou la propriété doit être restituée au rôle de propriétaire du projet.
Si vous souhaitez migrer des objets existants pour qu’ils soient gérés par un DCM project, le rôle propriétaire de l’objet DCM project doit également disposer de privilèges de propriété (directs ou hérités par d’autres rôles) sur l’objet à gérer par DCM project.
Note
S’il s’agit d’un objet migré, nous vous recommandons d’ajouter l’instruction GRANT OWNERSHIP correspondante aux définitions du projet pour s’assurer que l’état actuel et les définitions DCM project sont synchronisés.
Définir un DCM project¶
Un DCM project repose sur un fichier manifeste et un ou plusieurs fichiers de définition d’objets SQL. Ces fichiers sont généralement stockés et gérés dans un référentiel Git ou dans votre espace de travail local.
Le fichier manifeste
Spécifie un ou plusieurs environnements cibles avec des identificateurs de compte correspondants, des objets DCM project, des rôles propriétaires pour ces objets et des configurations de modélisation facultatives
En option, spécifie les valeurs par défaut de modélisation et une ou plusieurs configurations avec des valeurs pour les variables de modèle.
Les fichiers de définition d’objet
Définissez un ensemble d’objets Snowflake, d’autorisations et d’attentes que vous souhaitez gérer ensemble dans cet DCM project.
Consultez Créer un dossier DCM project pour stocker vos fichiers de définition pour savoir comment configurer un dossier DCM project et les fichiers de définition et comment utiliser les modèles pour définir votre DCM project.
Planifier un DCM project¶
La planification d’un DCM project permet d’effectuer un test pour prévisualiser les modifications avant le déploiement. Snowflake compare vos fichiers de définition de projet avec des objets existants et indique quels objets seront créés, modifiés ou supprimés. Aucun changement n’est apporté à votre compte.
Utilisez la planification pour examiner et valider les modifications avant de déployer un projet DCM. Vous pouvez spécifier des options telles qu’une configuration ou un chemin de sortie pour les résultats du plan.
Le PLAN imite la commande DEPLOY autant que possible, sauf qu’il n’exécute pas réellement les instructions DDL.
Important
Exécutez toujours la commande PLAN sur vos projets avant le déploiement pour vous assurer qu’il n’y a pas d’erreurs liées à la syntaxe, aux modèles, aux dépendances entre objets, aux privilèges d’accès, etc. Examinez la sortie du plan pour corriger les éventuelles erreurs, prévisualisez le Jinja généré avec les variables fournies et prévisualisez les modifications qui seront apportées une fois le déploiement effectué.
Le plan effectue les étapes suivantes :
Affiche toutes les modèles Jinja avec le profil de configuration sélectionné ou les valeurs fournies au moment de l’exécution.
Compare toutes les définitions à l’état actuel des entités qui ont été définies dans le cadre du dernier déploiement.
Convertit toutes les instructions définies en instructions CREATE, ALTER, DROP, GRANT et REVOKE.
Trie toutes les instructions en fonction de leurs interdépendances.
Compile toutes les instructions.
Note
Bien que le PLAN détecte presque toutes les erreurs possibles qui peuvent se produire pendant le déploiement, il ne garantit pas un déploiement réussi.
Exécutez la commande PLAN¶
La commande PLAN prend les informations suivantes en entrée :
Chemin d’accès au fichier manifeste
La CLI lit la cible du manifeste (indicateur
default_targetou--target). Pour les commandes SQL, le chemin d’accès au fichier manifeste et le nom du projet doivent être indiqués.Valeurs définies pour les variables Jinja (facultatif).
La
templating_configde la cible sélectionne automatiquement le profil de configuration. Pour les commandes SQL, utilisez la clause USING CONFIGURATION pour spécifier le profil.Une ou plusieurs valeurs du profil de configuration à remplacer (facultatif).
Les exemples suivants montrent comment exécuter la commande PLAN.
Exécutez la commande snow dcm plan dans votre terminal IDE local ou dans le cadre d’un workflow Git.
Un exemple de commande CLI permettant de planifier un projet DCM à partir d’un répertoire local :
Un exemple de commande CLI permettant de planifier un projet DCM à partir d’une zone de préparation Snowflake ou d’un clone de référentiel Git :
Un exemple de commande CLI permettant de planifier un projet DCM avec des arguments facultatifs :
Les variables doivent être placées entre guillemets doubles, avec des guillemets simples supplémentaires pour les valeurs de type chaîne. Les listes de valeurs doivent être placées entre crochets.
Dans le panneau de commande DCM, en haut :
Sélectionnez votre dossier de projet dans votre espace de travail actuel.
Sélectionnez votre cible (si vous avez plusieurs cibles).
(facultatif) Remplacez certains paramètres.
Cliquez sur Plan.
L’UI Snowsight utilise automatiquement l’objet DCM project défini dans la cible du manifeste. Si l’objet de projet n’existe pas encore, vous pouvez le créer à partir de l’UI.
Lorsque le PLAN est terminé, la sortie s’ouvre dans un nouvel onglet. Si vous ne la voyez pas, cliquez sur Plan à nouveau pour ouvrir l’onglet.
Si un plan existe déjà, vous pouvez choisir de replanifier si vous avez modifié vos définitions.
La sortie du plan est toujours générée automatiquement sous le sous-dossier du projet out/.
Vous pouvez exécuter un PLAN DCM dans SQL depuis n’importe quel endroit où vous pouvez exécuter des commandes SQL, dans Snowflake ou connecté à Snowflake. Utilisez la commande EXECUTE DCM PROJECT avec le mode PLAN.
Un exemple de commande SQL permettant de planifier un projet DCM à partir d’un chemin d’accès de l’espace de travail :
Un exemple de commande SQL permettant de planifier un projet DCM lors de l’utilisation de Jinja avec des profils de configuration, mais en remplaçant wh_size et teams :
Un exemple de commande SQL permettant de planifier un DCM project lorsque vous utilisez des modèles Jinja sans profils de configuration :
Chemin du fichier de définition¶
Vous disposez des options suivantes pour indiquer l’emplacement des fichiers de manifeste et de définition.
À partir d’un chemin d’accès à l’espace de travail
L’interface utilisateur de Snowsight liste automatiquement toutes les définitions DCM project dans l’espace de travail actuel. Vous pouvez sélectionner l’un de ces chemins et les espaces de travail l’utiliseront pour exécuter des commandes DCM.
Si vous voulez exécuter manuellement des commandes SQL dans les espaces de travail, vous pouvez également indiquer ce même chemin dans l’un de vos espaces de travail.
Conseil : le menu à trois points situé derrière chaque fichier de votre espace de travail vous permet de copier le chemin d’accès complet de ce fichier dans votre code SQL.
Un exemple de commande SQL permettant de planifier un projet DCM à partir d’un chemin d’espace de travail :
À partir d’un clone de référentiel Git local sur votre disque
Sélectionnez le répertoire qui contient voter fichier
manifest.ymlavant d’exécuter la commande CLI dans votre IDE local. Vous pouvez également spécifier un autre répertoire local contenant le manifeste et les définitions que vous souhaitez utiliser.Un exemple de commande CLI permettant de planifier un DCM project à partir du répertoire actuel d’un référentiel Git local :
Un exemple de commande CLI permettant de planifier un DCM project à partir d’un répertoire différent dans un clone de référentiel Git local :
Depuis votre référentiel distant dans un workflow
La même syntaxe CLI peut être utilisée lorsque les commandes DCM sont exécutées dans un workflow CI/CD.
Un exemple de workflow CI/CD permettant de planifier un DCM project à partir d’un clone de référentiel Git local :
À partir d’un clone de référentiel Stage ou Git dans Snowflake
Si vous souhaitez exécuter une procédure ou une tâche dans Snowflake qui exécute des commandes DCM, cette commande SQL peut indiquer un chemin absolu vers une zone de préparation Snowflake ou un clone de référentiel Git au sein du compte.
Pour les clones du référentiel Git, envisagez d’abord d’exécuter ALTER GIT REPOSITORY FETCH pour disposer de la dernière version.
Les chemins
'@...'ne peuvent être utilisés que lors de l’exécution de commandes DCM SQL.Un exemple de commande SQL permettant de planifier un projet DCM à partir d’une zone de préparation ou d’un clone de référentiel Git dans Snowflake :
Sortie du plan¶
Note
Au cours de la phase de prévisualisation, le format de sortie exact peut être sujet à changement.
La sortie du plan standard contient les informations suivantes sur l’exécution du plan au format JSON :
Propriété |
Description |
|---|---|
|
Version du schéma du format de sortie. La version 2 est la dernière version et la seule version prise en charge. |
|
Informations contextuelles sur l’exécution. |
|
Horodatage ISO 8601 du moment où la commande a été exécutée. |
|
Identificateur unique de la requête qui a produit ce plan. |
|
Nom complet de l’objet de projet DCM. |
|
Nom de l’utilisateur qui a exécuté la commande. |
|
Rôle actif utilisé pour exécuter la commande. |
|
La commande qui a été exécutée. |
|
Un tableau d’entrées de modifications. Chaque entrée représente un objet qui serait ou a été créé, modifié ou supprimé. Un tableau vide indique que les définitions du projet sont déjà synchronisées avec le compte. |
|
L’action planifiée pour l’objet. Valeurs possibles : |
|
Identifie l’objet cible. |
|
Le type d’objet Snowflake. |
|
Nom de l’objet. |
|
Nom complet de l’objet. |
|
Base de données contenant l’objet. Omis pour les objets au niveau du compte. |
|
Schéma contenant l’objet. Omis pour les objets au niveau de la base de données et au niveau du compte. |
|
Un tableau de descripteurs de changements détaillant les modifications d’attributs spécifiques. |
|
Le type de modification. Valeurs possibles : |
|
Nom de l’attribut en cours de définition ou de modification. Présent lorsque |
|
La nouvelle valeur de l’attribut. Présent lorsque |
|
Valeur précédente de l’attribut avant la modification. Présente uniquement lorsque |
|
Nom de la collection en cours de modification (par exemple, |
|
Étiquette utilisée pour identifier les éléments de la collection (par exemple, |
|
Un tableau imbriqué de descripteurs d’éléments de collection. Présente uniquement lorsque |
|
Type de modification apportée à l’élément de la collection. Valeurs possibles : |
|
Identifie l’élément dans la collection. Peut être une chaîne ou un objet, selon le type de collection. |
|
Un tableau de descripteurs de modifications supplémentaires pour cet élément. Présent pour les éléments |
Exemple de sortie de plan :
Déployer un DCM project¶
Lorsque vous déployez un DCM project, les actions suivantes sont effectuées :
Les objets qui sont définis mais qui n’existent pas encore sont créés.
Les objets qui existent déjà mais qui diffèrent de la définition actuelle sont modifiés.
Les objets qui existent déjà tels que définis sont ignorés.
Les objets qui existent déjà mais qui ne sont plus définis sont supprimés.
Le même comportement s’applique aux autorisations et aux attentes en matière de qualité des données définies dans le projet.
Important
Pour éviter toute perte de données involontaire, exécutez toujours PLAN et examinez la sortie avant l’exécution de DEPLOY.
Chaque DCM project ne peut avoir qu’une seule instance déployée à tout moment. Plusieurs profils de configuration ne peuvent pas coexister. Le déploiement de la configuration B avec le même DCM project supprimera tous les objets des autres configurations précédentes qui ne sont pas définis dans B.
Créez un DCM project pour chaque environnement cible. Le DCM project pour chaque environnement peut alors pointer vers les mêmes fichiers de définition, mais se déployer indépendamment avec des valeurs différentes pour chaque variable, comme suffix => 'DEV_JS', afin qu’ils puissent exister indépendamment côte à côte sur le même compte Snowflake.
Vous pouvez remplacer les valeurs des variables sélectionnées lors de l’exécution si vous souhaitez utiliser un profil prédéfini avec une légère variation.
Par exemple :
Chaque tentative de déploiement (réussie, échouée ou annulée) dispose d’un numéro de déploiement, par exemple DEPLOYMENT$1. Vous pouvez éventuellement spécifier une chaîne unique en tant qu’alias de déploiement afin de nommer des déploiements individuels pour une meilleure observabilité dans l’historique de déploiement. Considérez l’alias de déploiement comme un message de validation pour votre changement de code.
Chaque commande DEPLOY exécute d’abord un PRE-PLAN interne dans le cadre du déploiement. Si lePRE-PLAN réussit, alors DEPLOY est exécuté directement après. Il n’existe aucune option permettant d’intercepter ou d’examiner cette étape interne du plan. Le PRE-PLAN est exécuté pour réduire davantage le risque de défaillance lors du déploiement. Si un DEPLOY échoue, vous pouvez voir dans le message d’erreur s’il a échoué lors due l’étape PRE-PLAN ou DEPLOY. L’échec lors de l’étape PRE-PLAN est similaire à PLAN ; aucune modification DDL n’est exécutée.
Important
L’échec lors de l’étape DEPLOY peut entraîner une exécution partielle des modifications définies. Cela peut potentiellement entraîner un état indéfini pour certains des objets gérés. Dans la plupart des cas, il suffit de remédier à la cause profonde et de relancer DEPLOY pour restaurer l’état cible défini.
Le chemin cible du fichier de sortie DEPLOY ne peut pas être personnalisé. Les artefacts de déploiement sont toujours stockés dans l’DCM project.
Exécutez la commande DEPLOY¶
Pour exécuter la commande DEPLOY, fournissez les entrées suivantes :
Chemin d’accès au fichier manifeste.
Un profil de configuration doit être nommé si les profils de configuration sont définis dans le manifeste.
De manière facultative, les valeurs du profil de configuration qui remplacent les valeurs par défaut.
De manière facultative, un alias de déploiement.
Les exemples suivants montrent comment exécuter la commande DEPLOY.
Un exemple de commande SQL pour déployer un DCM project lors de l’utilisation de Jinja avec des profils de configuration, mais en remplaçant wh_size et teams :
Vous pouvez exécuter snow dcm deploy soit dans votre terminal IDE local ou dans le cadre d’un workflow Git.
Un exemple de commande CLI permettant de déployer un DCM project à partir d’un répertoire local :
Un exemple de commande CLI permettant de déployer un|dcm-object| ciblant un environnement autre que ceux par défaut :
Un exemple de commande CLI permettant de déployer un DCM project avec des arguments facultatifs :
Dans le menu de navigation, sélectionnez Projects » Workspaces.
Sélectionnez votre dossier de projet dans l’espace de travail actuel.
Sélectionnez votre cible (si vous avez plusieurs cibles).
Cliquez sur Plan.
L’UI utilisera automatiquement l’objet DCM project défini dans la cible du manifeste. Si l’objet de projet n’existe pas encore, vous pouvez le créer à partir de l’UI.
Une fois que le PLAN est terminé, la sortie s’ouvre dans un nouvel onglet. Si vous ne la voyez pas, cliquez sur Plan à nouveau pour ouvrir l’onglet.
Si un plan existe déjà, vous pouvez choisir de replanifier si vous avez modifié vos définitions.
Examinez votre sortie de PLAN pour vous assurer qu’elle ne contient pas de modifications involontaires.
Cliquez sur Deploy pour exécuter le déploiement en utilisant la même cible et les mêmes valeurs que celles du PLAN.
Consultez Sortie du plan pour la structure de sortie du plan standard.
Gérer un DCM project¶
Afficher tous les objets gérés par un DCM project¶
La commande SHOW ENTITIES IN DCM PROJECT vous permet de voir une liste de tous les objets Snowflake qui sont actuellement gérés par un DCM project spécifique. Elle fournit une liste de noms complets pour tous les objets. Pour voir les résultats, vous devez disposer du privilège READ sur l’DCM project et des privilèges pour voir l’objet géré lui-même.
Note
Le résultat ne correspond pas nécessairement aux objets du déploiement le plus récent. Les objets qui ont été supprimés manuellement ou détachés du projet n’apparaissent pas dans les résultats.
Vous pouvez utiliser LIKE pour effectuer une recherche par nom ou utiliser un opérateur de flux pour poursuivre le traitement ou filtrer le jeu de résultats.
De même, vous pouvez SHOW GRANTS et SHOW FUTURE GRANTS qui sont définis et déployés avec ce projet.
Exemples pour voir tous les objets qui sont actuellement gérés par un DCM project :
Dans le menu de navigation, sélectionnez Catalog » Database Explorer.
Accédez au schéma contenant l’objet DCM project.
Sélectionnez l’objet DCM project pour en voir les détails.
Sélectionnez l’onglet Objects pour voir une liste de tous les objets Snowflake actuellement gérés par cet objet de projet.
Cliquez sur le nom d’un objet pour ouvrir la page de détails de cet objet dans un nouvel onglet.
Détacher des objets d’un DCM project¶
À l’aide de la commande ALTER <objet> avec la clause UNSET DCM PROJECT, vous pouvez détacher un objet qui a été déployé et qui est maintenant géré par un DCM project. La commande supprime l’association entre l’objet et l’DCM project sans supprimer l’objet. Vous pouvez utiliser cette commande lorsque vous souhaitez commencer à gérer un objet via un DCM project différent.
Assurez-vous de supprimer l’instruction DEFINE correspondante de vos fichiers de définition de projet avant de le déployer à nouveau. Dans le cas contraire, l’objet sera réintégré dans le DCM project.
Un exemple de commande SQL pour détacher un objet d’un DCM project :
Vous ne pouvez pas détacher des autorisations ou des exécutions déployées d’un projet DCM.
Supprimer un DCM project¶
Lorsqu’un objet DCM project est supprimé, l’ensemble des entités gérées, des autorisations et des attentes restent en place comme « non gérés ».
Important
La suppression ou le remplacement d’un objet DCM project vous fait perdre tous les artefacts de l’historique de déploiement que l’objet contient.
Dans le menu de navigation, sélectionnez Catalog » Database Explorer.
Accédez au schéma contenant l’DCM project.
Sélectionnez l’DCM project pour voir sa page de détails.
Cliquez sur le menu à trois points en haut à droite et sélectionnez Drop.
Automatiser un déploiement DCM project¶
Bonnes pratiques CI/CD¶
Suivez ces pratiques lorsque vous automatisez des déploiements à l’aide de pipelines CI/CD :
Un DCM project ciblant un environnement de non-production doit appartenir à un rôle différent de son homologue de production afin d’éviter des déploiements accidentels vers la production.
Un DCM project ciblant un environnement de production doit appartenir à un rôle dédié aux déploiements de production avec des privilèges d’accès spécifiquement adaptés qui sont juste suffisants pour déployer tous les objets du projet.
Évitez d’utiliser les rôles d’administrateur général pour la propriété DCM project. Accordez de tels rôles uniquement aux utilisateurs des services, et non aux développeurs individuels.
Accordez le rôle de déploiement de production dédié uniquement aux utilisateurs du service, et non aux développeurs individuels.
Limitez la propriété au rôle de déploiement de production pour garantir l’immuabilité de l’infrastructure ou des produits de données critiques.
Si le rôle de déploiement de production dédié accorde la propriété des objets de production à d’autres rôles, les utilisateurs qui se voient attribuer ces rôles peuvent toujours modifier ou supprimer les objets de production.
Exemples GitHub Actions¶
Cette section fournit des exemples de workflows GitHub Actions illustrant des modèles CI/CD typiques pour DCM Projects. Les mêmes concepts s’appliquent à d’autres plateformes basées sur Git, comme Azure DevOps, GitLab CI/CD ou Bitbucket Pipelines. Seule la syntaxe du workflow diffère.
Chaque exemple fournit des éléments de base que vous pouvez personnaliser et combiner en fonction de la configuration de votre pipeline, de la topologie de votre environnement et des exigences organisationnelles.
Les exemples de workflows illustrent les modèles suivants, applicables à toute configuration DCM CI/CD :
Configuration pilotée par manifeste Chaque workflow lit
account_identifier,project_owneret``project_name`` à partir des cibles du manifeste. Ceci conserve la configuration de l’environnement à un seul endroit et évite de la dupliquer à travers les secrets GitHub.Protection contre la suppression des données Le workflow de déploiement analyse
plan_result.jsonpour les opérations DROP destructrices sur les objets contenant des données, tels que les bases de données, les schémas, les tables et les zones de préparation, et bloque le déploiement s’il en détecte.Promotion séquentielle de la zone de préparation vers la production Le déploiement en production ne commence qu’une fois que le déploiement de la zone de préparation a abouti, que les tables dynamiques ont été actualisées et que les tests de qualité des données ont été validés.
Analyse de la sortie du plan structuré Les workflows utilisent
jqpour extraire les nombres d’opérations et les domaines d’objets deplan_result.json, ce qui facilite la création de résumés et de contrôles personnalisés.Résumés alimentés par AI
snow cortex completegénère des résumés en langage naturel des résultats du script post-hook et de la sortie de l’actualisation de la table dynamique pour le résumé de la tâche GitHub Actions.
Avant d’exécuter ces exemples de workflows, remplissez les conditions préalables suivantes :
Stocker les fichiers DCM project dans un référentiel Git.
Accorder à un utilisateur des privilèges pour créer et exécuter GitHub Actions.
Configurer les secrets GitHub pour les identifiants de connexion de l’utilisateur du service Snowflake (
SNOWFLAKE_USER,SNOWFLAKE_PASSWORDou un jeton d’accès personnel).Configurer les variables GitHub pour le chemin vers le dossier DCM project (
DCM_PROJECT_PATH).Configurer les environnements GitHub pour chaque cible de manifeste (par exemple,
DCM_STAGE,DCM_PROD_US).
Pour la configuration d’une connexion Snowflake dans GitHub Actions, consultez la première moitié de l’article de blog, Guide pratique sur GitHub Actions CI/CD.
Consultez le référentiel DCM snowflake-labs pour un ensemble de workflows GitHub Actions qui couvrent la totalité du cycle de vie CI/CD pour DCM Projects.
Tous les exemples de workflows lisent le rôle account_identifier et project_owner Snowflake directement à partir des cibles du manifeste à l’aide de yq, de sorte que la configuration spécifique à l’environnement existe dans le manifest.yml contrôlé par la version plutôt que dans des secrets GitHub dupliqués. Seules les identifiants de connexion de l’utilisateur du service sont stockés en tant que secrets.
Exemple de workflow : Valider les connexions et les privilèges¶
Fichier de configuration de workflow : DCM_0_Test_Connections.yml
Déclencheur : Manuel avec l’événement
workflow_dispatch
Ce workflow valide le fait que l’utilisateur du service GitHub Actions peut se connecter à chaque environnement cible défini dans le manifeste. Utilisez-le lorsque vous configurez un nouveau référentiel, l’onboarding d’un nouveau compte ou le débogage de problèmes d’authentification. Le workflow comprend les étapes suivantes :
Analyse tous les noms cibles de
manifest.ymlde manière dynamique.Utilise une stratégie matricielle GitHub Actions pour tester chaque cible en parallèle.
Pour chaque cible, vérifie la connexion Snowflake, signale le compte, l’utilisateur et le rôle connectés, et vérifie si le rôle connecté correspond au propriétaire DCM project.
Indique si l’objet DCM project existe déjà et si l’utilisateur du service dispose des privilèges de déploiement.
Exemple de workflow : Prévisualisation des modifications de la demande d’extraction¶
Fichier de configuration de workflow : DCM_1_Test_PR_to_main.yml
Déclencheur : Demande d’extraction ouverte, synchronisée ou rouverte par rapport à la branche
main
Ce workflow exécute un PLAN par rapport aux objectifs de mise en zone de préparation et de production en tant que test d’intégration pour chaque demande d’extraction. Il fournit aux réviseurs un résumé des modifications planifiées directement sur la demande d’extraction. Le workflow comprend les étapes suivantes :
Exécute
snow dcm planen parallèle sur le cibles STAGE et PROD.Analyse
plan_result.jsonpour résumer les opérations CREATE, ALTER et DROP regroupées par domaine d’objets.Importe les artefacts de plan pour une inspection ultérieure.
Publie un commentaire consolidé sur la demande d’extraction avec le résumé du plan pour les deux environnements.
La vérification échoue si PLAN échoue, ce qui bloque la fusion.
Exemple de workflow : Déployer des modifications sur la zone de préparation et l’environnement de production¶
Fichier de configuration de workflow : DCM_2_Deploy_to_Stage_and_Prod.yml
Déclencheur : Pousser vers la branche
main(généralement une demande d’extraction fusionnée)
Ce workflow met en œuvre un pipeline de promotion séquentielle. Les modifications sont d’abord déployées dans la zone de préparation, validées de bout en bout, puis promues en production. Si l’une des zones de préparation échoue, le pipeline s’arrête et la production n’est pas affectée.
Séquence de déploiement de la zone de préparation :
Plan : Exécute
snow dcm planet résume l’ensemble des modifications.Détection des pertes de données : Analyse la sortie du plan et bloque le pipeline s’il contient des opérations DROP pour les bases de données, les schémas, les tables ou les zones de préparation.
Déployer : Exécute
snow dcm deploy.Publier des scripts : Exécute des scripts post-hook SQL facultatifs avec injection de variables Jinja à l’aide de
snow sql.Actualiser les tables dynamiques : Exécute
snow dcm refreshpour appliquer toute nouvelle logique de transformation.Tester les attentes : Exécute
snow dcm testpour valider les attentes en matière de qualité des données.
Séquence de déploiement de la production :
Les six mêmes étapes sont répétées pour la cible de production, mais uniquement une fois que toutes les tâches de mise en zone de préparation ont été exécutées avec succès.
Une fois toutes les tâches terminées, le workflow publie un résumé d’état final dans la demande d’extraction d’origine.
Note
Le workflow de déploiement utilise snow cortex complete pour générer des résumés lisibles par l’homme pour les résultats du script post-hook et la sortie de l’actualisation de la table dynamique dans les résumés de tâches GitHub Actions.
Exemple de workflow : Tester les attentes sur la zone de préparation¶
Fichier de configuration de workflow : DCM_3_Test_STAGE_Expectations.yml
Déclencheur : Manuel avec l’événement
workflow_dispatch
Ce workflow fournit un moyen à la demande de valider la qualité des données sur l’environnement de mise en zone de préparation sans déclencher un déploiement complet. Utilisez-le pour vérifier les attentes après les modifications manuelles des données ou les actualisations des données en amont, ou en tant que contrôle qualité périodique. Le workflow comprend les étapes suivantes :
Actualise toutes les tables dynamiques gérées par la mise en zone de préparation DCM project.
Exécute tous les tests d’attente de qualité des données associés aux tables, aux tables dynamiques et aux vues du projet.
Indique si le test a réussi ou échoué, avec des détails sur les critères non respectés.
Questions fréquemment posées (FAQ)¶
- Comment renommer un objet existant ?
Exécutez une commande ALTER en dehors du projet DCM.
Modifiez la définition.
Exécutez PLAN pour vérifier que la nouvelle définition correspond au nouvel état (aucune modification dans PLAN).
Exécutez DEPLOY pour enregistrer le nouvel état.
- Comment déployer des objets qui ne sont pas encore pris en charge par des instructions DEFINE ?
Vous pouvez exécuter des instructions CREATE IF NOT EXISTS ou CREATE OR REPLACE dans un script SQL distinct après l’exécution de votre plan de projet ou déploiement DCM.
Ces deux options prennent en charge les modèles Jinja2 et l’exécution à blanc (l’exécution à blanc effectue le rendu des modèles Jinja sans vérifier que la compilation SQL s’est bien déroulée).
Par exemple :