Projets dbt sur Snowflake¶
dbt Core est un outil et un framework open source de transformation de données que vous pouvez utiliser pour définir, tester et déployer des transformations SQL. Avec dbt Projects on Snowflake, vous pouvez utiliser les fonctionalités familières de Snowflake pour créer, modifier, tester, exécuter et gérer vos projets dbt Core. Un projet dbt est un répertoire qui contient un fichier dbt_project.yml
et un ensemble de fichiers qui définissent les actifs dbt, tels que les modèles et les sources.
Vous pouvez utiliser Espaces de travail dans Snowsight pour travailler avec des fichiers et des répertoires de projet dbt, puis déployer un projet en tant qu’objet DBT PROJECT de niveau schéma. Vous pouvez également utiliser SQL pour travailler avec des objets de projet dbt, utilisez les commandes Snowflake CLI pour intégrer le déploiement et l’exécution dans vos flux de travail CI/CD, utilisez Tâches pour planifier et orchestrer les exécutions de projets dbt, et utilisez Outils de surveillance Snowflake pour inspecter, gérer et ajuster les exécutions de projets.
Utilisation des espaces de travail pour dbt Projects on Snowflake¶
Les Eespaces de travail dans Snowsight offrent un environnement de développement intégré basé sur le Web (IDE) pour les projets dbt qui peuvent se connecter et se synchroniser à un référentiel Git. Chaque espace de travail pour dbt Projects on Snowflake peut représenter un seul projet dbt ou plusieurs projets dbt, selon la façon dont vous organisez vos fichiers et dossiers.
Vous pouvez utiliser un espace de travail pour dbt Projects on Snowflake pour visualiser, tester et exécuter des projets dbt directement dans Snowflake. Vous pouvez également connecter l’espace de travail à un objet de projet dbt dans Snowflake, afin de pouvoir créer et mettre à jour des objets à partir de l’espace de travail. Les espaces de travail fournissent également un moyen rapide d’initialiser (ou de concevoir) un nouveau projet dbt, ce qui crée les fichiers et répertoires nécessaires pour un projet dbt, y compris le fichier dbt_project.yml
.
Outre la prise en charge des projets dbt, les espaces de travail fournissent un éditeur unifié qui vous permet de créer, d’organiser et de gérer du code sur plusieurs types de fichiers et de projets au sein de Snowflake. Pour plus d’informations, voir Espaces de travail.
Comprendre les objets du projet dbt¶
Un DBT PROJECT est un objet de niveau schéma qui contient des fichiers sources versionnés pour votre projet dbt dans Snowflake. Vous pouvez connecter un objet de projet dbt à un espace de travail, ou vous pouvez créer et gérer l’objet indépendamment d’un espace de travail.
Vous pouvez CREATE, ALTER, et DROP Les objets de projet dbt comme les autres objets de niveau schéma dans Snowflake. Les objets de projet dbt prennent également en charge le contrôle d’accès basé sur les rôles (RBAC). Vous pouvez utiliser la commande EXECUTE DBT PROJECT à partir d’un entrepôt Snowflake pour exécuter des commandes dbt comme test
et run
. Vous pouvez également utiliser tâches pour planifier l’exécution de ces commandes.
Un objet de projet dbt est généralement basé sur un répertoire de projet dbt qui contient un fichier dbt-project.yml
. C’est le modèle que Snowflake utilise lorsque vous déployez (créez) un objet de projet dbt à partir d’un espace de travail.
Vous pouvez également choisir de créer un projet dbt à partir d’un répertoire parent qui contient plusieurs projets dbt dans des sous-répertoires. Lorsque vous créez un objet de projet dbt de cette manière, vous devez utiliser le paramètre PROJECT_ROOT dans n’importe quelle commande EXECUTE DBT PROJECT que vous utilisez avec le projet. Ce paramètre indique le chemin d’accès au sous-répertoire qui contient le fichier dbt_project.yml
du projet.
Flux de travail CI/CD pour les objets de projet dbt¶
Les objets de projet dbt prennent en charge les commandes CLI Snowflake que vous pouvez utiliser pour créer et gérer des projets dbt à partir de la ligne de commande. Cela est utile pour intégrer des projets dbt dans vos flux de travail d’ingénierie des données et pipelines CI/CD. Pour plus d’informations, voir Snowflake CLI, Intégration de CI/CD à Snowflake CLI, et Commandes snow dbt.
Gestion des versions pour les objets et fichiers de projet dbt¶
Snowflake conserve les versions des objets de projet dbt et des fichiers de projet correspondants. Vous pouvez utiliser cette gestion des versions pour suivre et gérer les modifications tout au long de votre cycle de vie du développement des données et du déploiement. Snowflake identifie les versions des objets de projet dbt dans la zone de préparation du projet dbt comme indiqué dans l’exemple suivant :
snow://dbt/my_db.my_schema.my_dbt_project_object/versions/version_id
version_id
peut être l’un des identificateurs suivants :
VERSION$<num>
– spécifie un identificateur de version sous la formeVERSION$<num>
, où<num>
is a positive integer, for example,VERSION$1
.Le numéro de version commence à
1
lorsque vous créez un objet de projet dbt et augmente de un à chaque nouvelle version de l’objet de projet dbt.Snowflake incrémente l’identificateur de version lorsque vous effectuez les tâches suivantes :
Redeploy dbt project à partir d’un espace de travail (exécute la commande ALTER).
Mettre à jour le projet en utilisant la commande ALTER DBT PROJECT.
Exécuter la commande CLI
snow dbt deploy
Snow sans l’option--force
.Snowflake réinitialise l’identificateur de version sur
1
et suppriment tous les alias de version lorsque vous exécutez les commandes suivantes :
La commande CREATE DBT PROJECT dans SQL avec l’option
OR REPLACE
.La commande
snow dbt deploy
avec l’option--force
dans le Snowflake CLI.
LAST
– Indique la version la plus récente de l’objet du projet dbt.
FIRST
– Indique la version la plus ancienne de l’objet de projet dbt.
version_name_alias
– Indique un alias de nom de version personnalisée que vous avez créé pour une version spécifique de l’objet de projet dbt en utilisant la commande ALTER DBT PROJECT avec l’option ADD VERSION. Un alias de nom de version correspond toujours à un identificateur de version spécifique, tel queVERSION$3
.
Les fichiers de projet stockés dans la zone de préparation de projet dbt sont organisés par version, chaque version ayant son propre sous-répertoire. Par exemple, un objet de projet dbt nommé my_dbt_project_object
avec un identificateur de version de VERSION$3
et un fichier de projet dbt nommé dbt_project.yml
peut être référencé comme indiqué dans l’exemple suivant :
snow://dbt/my_db.my_schema/my_dbt_project_object/versions/VERSION$3/dbt_project.yml
Exigences, considérations et limites¶
Avant d’utiliser dbt Projects on Snowflake, examinez les exigences, les considérations et les limites de cette section.
projets dbt¶
Les exigences, considérations et limitations suivantes s’appliquent aux configurations de projet dbt prises en charge par dbt Projects on Snowflake :
Seuls les projets dbt Core sont pris en charge. Les projets dbt Cloud ne sont pas pris en charge. dbt Projects on Snowflake exécute la version 1.9.4 de dbt-core et la version 1.9.2 de dbt-snowflake. Lorsque vous migrez un projet dbt existant vers Snowflake, vos versions dbt n’ont pas besoin de s’aligner sur les versions de Snowflake.
Chaque dossier de projet dbt dans votre espace de travail Snowflake doit contenir un fichier
profiles.yml
qui spécifie une ciblewarehouse
,database
,schema
etrole
dans Snowflake pour le projet. Letype
doit être défini sursnowflake
. dbt nécessite unaccount
et unuser
, mais ceux-ci peuvent être laissés avec une chaîne vide ou arbitraire, car le projet dbt s’exécute dans Snowflake sous le compte actuel et le contexte utilisateur.Un projet dbt dans un espace de travail ne peut pas avoir plus de 20 000 fichiers dans sa structure de dossiers. Cette limite inclut tous les fichiers dans le répertoire et les sous-répertoires du projet dbt, y compris les répertoires
target/dbt_packages/logs
, qui sont l’endroit où les fichiers journaux sont enregistrés lorsqu’un projet dbt est exécuté à partir de l’espace de travail.
Procédures stockées¶
Lorsque vous utilisez une procédure stockée pour appeler EXECUTE DBT PROJECT, utilisez une procédure stockée avec droits de l’appelant. Pour plus d’informations, voir CREATE PROCEDURE et Création d’une procédure stockée.
Espaces de travail pour dbt Projects on Snowflake¶
Les exigences, considérations et limites suivantes s’appliquent aux espaces de travail pour dbt Projects on Snowflake :
Exigence en matière de base de données personnelle¶
Les espaces de travail sont créés dans une base de données personnelle et ne peuvent pas être partagés avec d’autres utilisateurs. Les bases de données personnelles doivent être activées au niveau du compte, ce qui nécessite des autorisations ACCOUNTADMIN. Pour plus d’informations, voir Gestion de Workspaces.
Les rôles secondaires sont requis par projet, par session¶
Pour exécuter des commandes dbt à partir d’un espace de travail pour dbt Projects on Snowflake, vous devez activer les rôles secondaires. Si les rôles secondaires ne sont pas activés pour un projet et une session, vous êtes invité à activer les rôles secondaires à partir de la liste Profile lorsque vous exécutez une commande pour la première fois. Cette sélection doit être effectuée pour chaque projet et la sélection ne persiste pas au-delà de la session en cours du navigateur.
Si vous avez un compte Enterprise Edition, les politiques de session peuvent être configurées pour interdire les rôles secondaires pour le compte ou pour des utilisateurs spécifiques. Ces utilisateurs ne pourront pas exécuter de commandes dbt à partir d’un espace de travail pour dbt Projects on Snowflake. Pour plus d’informations sur les politiques de session, voir Spécification des rôles secondaires dans une politique de session.
Référentiels git¶
Les exigences, considérations et limitations suivantes s’appliquent lorsque vous connectez un espace de travail pour dbt Projects on Snowflake vers un référentiel Git :
La configuration d’une intégration API sur Snowflake est nécessaire pour configurer un objet de référentiel Git dans Snowflake. Pour plus d’informations, voir Configuration de Snowflake pour utiliser Git.
Les référentiels Git accessibles uniquement via PrivateLink ne sont pas pris en charge.
Les référentiels Git de plus de 2GB ne sont pas pris en charge.
Vous ne pouvez pas vous connecter à un référentiel Git vide. Vous devez avoir au moins un commit.
Dépendances dbt¶
Les exigences, considérations et limitations suivantes s’appliquent aux dépendances dbt pour les projets dbt dans dbt Projects on Snowflake :
Vous devez exécuter la commande dbt
deps
à partir d’un espace de travail pour dbt Projects on Snowflake ou utiliser la commandesnow dbt execute
de Snowflake CLI pour construire et remplir le dossierdbt_packages
du projet. Vous ne pouvez pas exécuter la commandedeps
en utilisant la commande EXECUTE DBT PROJECT SQL. Vous pouvez également exécuterdeps
sur votre projet dbt local avant de le déployer dans Snowflake en tant qu’objet de projet dbt.La spécification des paquets Git dans le fichier
packages.yml
n’est pas pris en charge.Une règle réseau et une intégration d’accès externe sont nécessaires pour permettre à Snowflake d’accéder aux référentiels des dépendances. Pour plus d’informations, voir Créer une intégration d’accès externe dans Snowflake pour les dépendances dbt. Pour plus d’informations sur les limitations de l’accès au réseau externe, voir Limitations de l’accès au réseau externe.
Télémétrie, journalisation et traçage¶
Les exigences, considérations et limitations suivantes s’appliquent à la télémétrie, à la journalisation et au traçage pour dbt sur Snowflake :
Les espaces de travail pour dbt Projects on Snowflake ne diffusent pas stdout de manière dynamique, et stdout n’est visible qu’à l’issue de la commande.
L’affichage des journaux et du traçage nécessite que vous définissiez le LOG_LEVEL et le TRACE_LEVEL sur l’objet du projet dbt. Pour plus d’informations, voir Contrôle d’accès pour les projets dbt sur Snowflake et Surveiller des projets dbt sur Snowflake.
Par défaut, Snowflake collecte la télémétrie dans le tableau SNOWFLAKE.TELEMETRY.EVENTS par défaut. Si vous avez un tableau des événements personnalisé qui est défini comme tableau des événements pour votre compte, les données de télémétrie y sont collectées. Si vous utilisez un compte Enterprise Edition, vous pouvez créer un tableau des événements pour collecter des données de télémétrie et les associer à la base de données dans laquelle l’objet de projet dbt est déployé. Pour plus d’informations, voir Aperçu de la table d’événements.
Commandes dbt prises en charge¶
Le tableau suivant présente les commandes dbt prises en charge dans dbt Projects on Snowflake. Toute commande dbt qui n’est pas répertoriée ici n’est pas prise en charge.
dbt Projects on Snowflake, commandes dbt prises en charge par méthode d’exécution¶ commande dbt
Espaces de travail
EXECUTE DBT PROJECT
snow dbt execute
(CLI)✔
✔
✔
✔
✔
✔
✔
❌
✔
✔
✔
✔
❌
✔
✔
✔
✔
✔
✔
✔
✔
✔
✔
✔
✔
✔
✔
✔
✔
✔
✔
✔
✔