Snowflake pour débutants : architecture, SQL, entrepôts virtuels et Snowflake Cortex
- Thématique
- Data & business intelligence
- Mis à jour
- Lecture
- 12 min
- Formation
- Cours pour apprendre Snowflake : le guide complet du data warehouse
L'essentiel en 30 secondes
- Snowflake est une plateforme de données cloud, proposée en SaaS, qui sert principalement de data warehouse : on y stocke les données et on les interroge en SQL.
- Son architecture sépare trois couches : le stockage, le calcul assuré par des entrepôts virtuels (virtual warehouses) et les services cloud (sécurité, métadonnées, optimisation).
- Les entrepôts virtuels sont facturés en crédits, à la seconde avec un minimum de 60 secondes, et chaque taille supérieure double la puissance et la consommation.
- Time Travel permet d'interroger ou de restaurer des données telles qu'elles étaient dans le passé, et le clonage Zero-Copy duplique une table ou une base sans recopier les données.
- Snowflake Cortex donne accès, directement en SQL, à des fonctions d'IA comme la synthèse, la traduction, l'analyse de sentiment ou l'appel à des grands modèles de langage.
Sommaire de l'article
- Qu’est-ce que Snowflake ?
- L’architecture de Snowflake en trois couches
- Comment démarrer avec Snowflake : les étapes
- Entrepôts virtuels et maîtrise des coûts
- Sécurité et protection des données : rôles, Time Travel et clonage
- Snowflake Cortex : l’IA directement en SQL
- Les erreurs fréquentes sur Snowflake
- Snowflake face aux autres plateformes de données
- Comment apprendre Snowflake ?
- En résumé
Snowflake est une plateforme de données cloud qui sert avant tout de data warehouse : elle centralise les données d’une organisation et permet de les interroger en SQL, avec une puissance de calcul ajustable à la demande. Entièrement gérée, elle ne demande ni serveur à installer, ni index à maintenir, ni sauvegarde à programmer.
Ce guide s’adresse aux analystes, développeurs, profils BI et IT qui découvrent Snowflake. Vous y verrez son architecture, la prise en main de l’interface Snowsight, la hiérarchie des objets, l’écriture de requêtes SQL, la gestion des entrepôts virtuels et des coûts, la sécurité par les rôles, Time Travel, le clonage et les fonctions d’IA de Snowflake Cortex.
Qu’est-ce que Snowflake ?
Snowflake est un data warehouse proposé en mode SaaS, qui fonctionne sur les clouds AWS, Microsoft Azure et Google Cloud. Il stocke les données dans un format colonnaire compressé et les interroge en SQL grâce à des ressources de calcul indépendantes, les entrepôts virtuels. L’utilisateur paie séparément le stockage et le calcul réellement consommés.
Un data warehouse (entrepôt de données) est une base conçue pour l’analyse : il rassemble les données de plusieurs systèmes (ERP, CRM, e-commerce, fichiers) sous une forme cohérente, afin d’alimenter les tableaux de bord, les analyses et les modèles. Snowflake y ajoute la gestion des données semi-structurées (JSON, Parquet), le partage de données entre organisations et des fonctions d’IA.
L’architecture de Snowflake en trois couches
C’est la notion à comprendre avant toute chose, car elle explique à la fois les performances et la facturation.
| Couche | Rôle | Ce qu’il faut retenir |
|---|---|---|
| Stockage | Conserve les données en micro-partitions colonnaires compressées | Facturé au volume ; partagé par tous les entrepôts |
| Calcul | Exécute les requêtes via des entrepôts virtuels | Facturé en crédits, à la seconde ; indépendant du stockage |
| Services cloud | Authentification, métadonnées, optimisation des requêtes, sécurité | Géré par Snowflake, invisible pour l’utilisateur |
Conséquence directe : plusieurs équipes peuvent interroger les mêmes données en même temps avec des entrepôts différents, sans se ralentir mutuellement. Le chargement nocturne tourne sur un entrepôt, les tableaux de bord sur un autre, les data scientists sur un troisième.
La couche de stockage découpe automatiquement les tables en micro-partitions et conserve des métadonnées (valeurs minimales et maximales de chaque colonne) qui permettent au moteur d’ignorer les partitions inutiles lors d’une requête filtrée. Il n’y a pas d’index à créer.
Pourquoi choisir Snowflake ? Les usages courants
- Centraliser les données de l’entreprise dans un entrepôt unique, source des rapports.
- Alimenter la BI : Power BI, Tableau, Looker Studio et la plupart des outils de visualisation disposent d’un connecteur Snowflake.
- Absorber des pics de charge en agrandissant un entrepôt quelques minutes, puis en le réduisant.
- Travailler sur du JSON sans schéma figé grâce au type VARIANT.
- Partager des données avec des partenaires sans copier de fichiers.
- Exploiter l’IA sur ses données avec Snowflake Cortex, sans les sortir de la plateforme.
Comment démarrer avec Snowflake : les étapes
Étape 1 — Créer un compte d’essai
Rendez-vous sur le site de Snowflake et créez un compte d’essai gratuit. Vous choisissez l’édition, le fournisseur cloud (AWS, Azure ou Google Cloud) et la région. Pour vous former, prenez la région la plus proche de vous : c’est elle qui hébergera vos données. Un e-mail d’activation vous permet ensuite de définir votre identifiant et votre mot de passe.
Étape 2 — Découvrir l’interface Snowsight
Snowsight est l’interface web de Snowflake. Le menu de gauche donne accès aux feuilles de calcul SQL (worksheets) et aux notebooks, à l’explorateur des bases de données, à la surveillance de l’activité (historique des requêtes) et à l’administration (entrepôts, utilisateurs, rôles, coûts). Les libellés exacts évoluent au fil des versions, mais ces grandes zones restent les mêmes.
En haut d’une feuille de calcul, deux sélecteurs sont essentiels : le rôle actif et l’entrepôt utilisé. Une requête qui échoue « sans raison » vient très souvent d’un mauvais rôle ou d’un entrepôt non sélectionné.
Pour vous entraîner immédiatement, les comptes d’essai proposent généralement la base partagée SNOWFLAKE_SAMPLE_DATA, qui contient des jeux de données de démonstration comme le schéma TPCH_SF1 :
SELECT c_mktsegment, COUNT(*) AS nb_clients
FROM snowflake_sample_data.tpch_sf1.customer
GROUP BY c_mktsegment
ORDER BY nb_clients DESC;
Étape 3 — Comprendre la hiérarchie des objets
Les objets Snowflake s’emboîtent ainsi :
- Organisation > Compte : le conteneur de plus haut niveau ;
- Base de données (database) > Schéma (schema) : l’organisation logique des données ;
- Tables, vues, stages, formats de fichiers, procédures : les objets à l’intérieur d’un schéma.
Les entrepôts virtuels, les utilisateurs et les rôles sont des objets de niveau compte. Le nom complet d’une table s’écrit base.schema.table.
Étape 4 — Créer un entrepôt, une base, un schéma et une table
Dans une feuille de calcul, avec un rôle disposant des droits nécessaires (SYSADMIN, par exemple) :
CREATE WAREHOUSE IF NOT EXISTS wh_formation
WAREHOUSE_SIZE = 'XSMALL'
AUTO_SUSPEND = 60
AUTO_RESUME = TRUE
INITIALLY_SUSPENDED = TRUE;
CREATE DATABASE IF NOT EXISTS formation_db;
CREATE SCHEMA IF NOT EXISTS formation_db.ventes;
USE WAREHOUSE wh_formation;
USE SCHEMA formation_db.ventes;
CREATE OR REPLACE TABLE commandes (
id_commande INTEGER,
date_commande DATE,
client VARCHAR(100),
pays VARCHAR(50),
montant NUMBER(10, 2)
);
INSERT INTO commandes VALUES
(1, '2026-01-15', 'Atelier Nord', 'France', 1250.00),
(2, '2026-01-18', 'Bureau Sud', 'Belgique', 830.50),
(3, '2026-02-02', 'Atelier Nord', 'France', 420.00);
CREATE OR REPLACE VIEW v_ca_par_pays AS
SELECT pays, SUM(montant) AS chiffre_affaires, COUNT(*) AS nb_commandes
FROM commandes
GROUP BY pays;
SELECT * FROM v_ca_par_pays ORDER BY chiffre_affaires DESC;
AUTO_SUSPEND = 60 suspend l’entrepôt après 60 secondes d’inactivité, et AUTO_RESUME = TRUE le redémarre automatiquement à la requête suivante. Ces deux paramètres sont la première protection contre une facture inattendue.
Étape 5 — Charger des fichiers
Pour de petits fichiers, Snowsight propose un assistant de chargement depuis l’interface. En SQL, le chargement passe par un stage (zone de dépôt) puis la commande COPY INTO :
CREATE OR REPLACE FILE FORMAT ff_csv
TYPE = CSV
SKIP_HEADER = 1
FIELD_OPTIONALLY_ENCLOSED_BY = '"';
CREATE OR REPLACE STAGE stg_commandes FILE_FORMAT = ff_csv;
-- Après avoir déposé le fichier dans le stage (interface ou commande PUT) :
COPY INTO commandes
FROM @stg_commandes
ON_ERROR = 'CONTINUE';
La commande PUT, qui envoie un fichier local vers un stage interne, s’exécute depuis un client en ligne de commande et non depuis une feuille de calcul Snowsight.
Étape 6 — Intégrer Snowflake avec AWS
En production, les fichiers arrivent souvent dans un bucket Amazon S3. On crée alors un stage externe qui pointe vers ce bucket, sécurisé par une intégration de stockage reliée à un rôle IAM côté AWS :
CREATE STORAGE INTEGRATION int_s3
TYPE = EXTERNAL_STAGE
STORAGE_PROVIDER = 'S3'
ENABLED = TRUE
STORAGE_AWS_ROLE_ARN = 'arn:aws:iam::123456789012:role/snowflake-acces'
STORAGE_ALLOWED_LOCATIONS = ('s3://mon-bucket/exports/');
CREATE STAGE stg_s3
URL = 's3://mon-bucket/exports/'
STORAGE_INTEGRATION = int_s3
FILE_FORMAT = ff_csv;
La commande DESC INTEGRATION int_s3; fournit ensuite les informations à renseigner dans la relation d’approbation du rôle IAM. Pour un chargement continu, dès l’arrivée d’un fichier, Snowflake propose Snowpipe.
Étape 7 — Interroger des données JSON
Snowflake stocke les données semi-structurées dans une colonne de type VARIANT, sans imposer de schéma préalable. On accède ensuite aux champs avec la notation : et on les convertit avec :: :
CREATE OR REPLACE TABLE evenements (donnees VARIANT);
INSERT INTO evenements
SELECT PARSE_JSON('{"client": "Atelier Nord", "pays": "France", "articles": [{"ref": "A12", "qte": 3}, {"ref": "B07", "qte": 1}]}');
SELECT
donnees:client::STRING AS client,
a.value:ref::STRING AS reference,
a.value:qte::INTEGER AS quantite
FROM evenements,
LATERAL FLATTEN(input => donnees:articles) a;
La fonction FLATTEN transforme un tableau JSON en lignes : chaque article de la commande devient une ligne exploitable en SQL classique. C’est très pratique pour analyser des exports d’API ou des journaux d’application sans passer par un traitement préalable.
Entrepôts virtuels et maîtrise des coûts
Choisir la bonne taille
Les entrepôts virtuels existent en tailles X-Small, Small, Medium, Large, X-Large et au-delà. Chaque taille double les ressources, et donc les crédits consommés par heure : un entrepôt X-Small consomme 1 crédit par heure de fonctionnement, un Small 2, un Medium 4. La facturation se fait à la seconde, avec un minimum de 60 secondes à chaque démarrage.
Un entrepôt plus grand accélère les requêtes lourdes, souvent sans augmenter le coût total si la requête se termine proportionnellement plus vite. En revanche, il n’accélère pas une requête mal écrite. Pour absorber de nombreux utilisateurs simultanés plutôt que des requêtes lourdes, l’édition Enterprise propose des entrepôts multi-clusters, qui ajoutent des clusters à la demande.
Surveiller la consommation
SELECT warehouse_name,
SUM(credits_used) AS credits_30_jours
FROM snowflake.account_usage.warehouse_metering_history
WHERE start_time >= DATEADD(day, -30, CURRENT_TIMESTAMP())
GROUP BY warehouse_name
ORDER BY credits_30_jours DESC;
Pour plafonner les dépenses, un moniteur de ressources (créé avec le rôle ACCOUNTADMIN) notifie puis suspend les entrepôts au-delà d’un quota :
CREATE RESOURCE MONITOR rm_formation
WITH CREDIT_QUOTA = 10
FREQUENCY = MONTHLY
START_TIMESTAMP = IMMEDIATELY
TRIGGERS ON 80 PERCENT DO NOTIFY
ON 100 PERCENT DO SUSPEND;
ALTER WAREHOUSE wh_formation SET RESOURCE_MONITOR = rm_formation;
Autres leviers d’économie : un entrepôt par usage pour savoir qui consomme quoi, une suspension automatique courte, et la mise à profit du cache de résultats, qui renvoie sans calcul le résultat d’une requête identique déjà exécutée récemment si les données n’ont pas changé.
Sécurité et protection des données : rôles, Time Travel et clonage
Les rôles et les droits d’accès
Snowflake applique un contrôle d’accès basé sur les rôles : les droits sont accordés à des rôles, et les rôles aux utilisateurs. Les rôles système principaux sont ACCOUNTADMIN (administration complète, à réserver à très peu de personnes), SECURITYADMIN (gestion des droits), USERADMIN (utilisateurs et rôles), SYSADMIN (création des bases et des entrepôts) et PUBLIC (attribué à tous).
Exemple : donner à des analystes un accès en lecture seule au schéma des ventes.
USE ROLE SECURITYADMIN;
CREATE ROLE IF NOT EXISTS analyste;
GRANT USAGE ON WAREHOUSE wh_formation TO ROLE analyste;
GRANT USAGE ON DATABASE formation_db TO ROLE analyste;
GRANT USAGE ON SCHEMA formation_db.ventes TO ROLE analyste;
GRANT SELECT ON ALL TABLES IN SCHEMA formation_db.ventes TO ROLE analyste;
GRANT SELECT ON FUTURE TABLES IN SCHEMA formation_db.ventes TO ROLE analyste;
GRANT ROLE analyste TO USER jdupont;
GRANT ROLE analyste TO ROLE SYSADMIN;
Rattacher les rôles personnalisés à SYSADMIN est une bonne pratique recommandée : les administrateurs gardent ainsi la visibilité sur les objets créés. Et n’utilisez pas ACCOUNTADMIN pour le travail quotidien.
Revenir dans le passé avec Time Travel
Time Travel conserve l’historique des modifications pendant une période de rétention : un jour par défaut, et jusqu’à 90 jours sur les éditions supérieures. Vous pouvez alors interroger une table telle qu’elle était, ou restaurer un objet supprimé :
-- La table telle qu'elle était il y a 10 minutes
SELECT * FROM commandes AT (OFFSET => -60 * 10);
-- Restaurer une table supprimée par erreur
DROP TABLE commandes;
UNDROP TABLE commandes;
Au-delà de Time Travel, une période de Fail-safe de sept jours permet à Snowflake, et à lui seul, de récupérer des données en cas d’incident grave.
Dupliquer instantanément avec le clonage Zero-Copy
CREATE TABLE commandes_test CLONE commandes;
CREATE DATABASE formation_dev CLONE formation_db;
Le clone est créé en quelques secondes, quelle que soit la taille, car il partage les micro-partitions de l’original. Seules les modifications ultérieures occupent un nouvel espace. C’est l’outil idéal pour créer un environnement de test à partir de la production, ou pour figer une copie avant une opération risquée.
Snowflake Cortex : l’IA directement en SQL
Snowflake Cortex regroupe des fonctions d’intelligence artificielle appelables depuis une requête SQL, sans déplacer les données hors de la plateforme :
SELECT
avis_client,
SNOWFLAKE.CORTEX.SENTIMENT(avis_client) AS score_sentiment,
SNOWFLAKE.CORTEX.TRANSLATE(avis_client, 'fr', 'en') AS avis_en,
SNOWFLAKE.CORTEX.SUMMARIZE(avis_client) AS resume
FROM avis;
SELECT SNOWFLAKE.CORTEX.COMPLETE(
'mistral-large2',
'Propose trois axes d''analyse pour une table de commandes clients.'
);
La fonction COMPLETE interroge un grand modèle de langage choisi parmi ceux proposés par Snowflake. La liste des modèles et des fonctions disponibles dépend de la région de votre compte et évolue régulièrement : vérifiez-la dans la documentation officielle, ainsi que la consommation de crédits associée. Cortex comprend aussi des services plus complets, comme la recherche sur des documents ou l’interrogation de données en langage naturel.
Les erreurs fréquentes sur Snowflake
| Erreur | Cause | Solution |
|---|---|---|
| « No active warehouse selected » | Aucun entrepôt dans la session | USE WAREHOUSE ... ou sélecteur de la feuille de calcul |
| « Object does not exist or not authorized » | Rôle actif sans droits, ou nom incomplet | Changer de rôle, utiliser le nom complet base.schema.table |
| Facture plus élevée que prévu | Entrepôt surdimensionné ou jamais suspendu | AUTO_SUSPEND court, moniteur de ressources |
| Tout le monde travaille en ACCOUNTADMIN | Facilité au démarrage | Rôles personnalisés et moindre privilège |
| Les nouvelles tables ne sont pas visibles | Droits accordés seulement sur les tables existantes | GRANT ... ON FUTURE TABLES |
| COPY INTO rejette des lignes | Format de fichier inadapté (séparateur, guillemets, en-tête) | Ajuster le FILE FORMAT, tester avec VALIDATION_MODE |
| Requête lente malgré un gros entrepôt | Requête peu sélective, SELECT * sur des tables larges | Sélectionner les colonnes utiles, filtrer tôt, lire le profil de requête |
Snowflake face aux autres plateformes de données
| Critère | Snowflake | Databricks | Microsoft Fabric |
|---|---|---|---|
| Origine | Data warehouse SQL cloud | Lakehouse autour d’Apache Spark | Plateforme unifiée Microsoft intégrant Power BI |
| Langage principal | SQL (Python possible via Snowpark) | Python, SQL, Scala | SQL, Python, Power Query |
| Administration | Très simple, entièrement gérée | Plus technique | Intégrée à l’environnement Microsoft 365 |
| Point fort | Simplicité, séparation stockage/calcul, partage | Ingénierie de données et machine learning | Intégration Power BI et Microsoft |
| Clouds | AWS, Azure, Google Cloud | AWS, Azure, Google Cloud | Azure |
Pour comparer en détail, consultez nos guides Databricks pour débutants et Microsoft Fabric.
Comment apprendre Snowflake ?
Le parcours le plus efficace :
- Le SQL d’abord : SELECT, filtres, agrégations, jointures. Si ce n’est pas encore acquis, suivez notre feuille de route pour apprendre SQL et entraînez-vous avec notre recueil de requêtes SQL commentées.
- L’architecture et Snowsight (1 heure) : trois couches, hiérarchie des objets, feuilles de calcul.
- La pratique SQL dans Snowflake : bases, schémas, tables, vues, chargement de fichiers.
- Le calcul et les coûts : tailles d’entrepôts, suspension, moniteurs de ressources.
- La sécurité et les fonctions avancées : rôles, Time Travel, clonage, intégration cloud, Cortex.
Pour suivre ce parcours avec un fichier ressource et des démonstrations, la formation vidéo Snowflake d’EspritAcadémique dure 1 h 50, sans prérequis sur Snowflake, et couvre notamment :
- les atouts de la plateforme, la couche de stockage et l’intégration avec AWS ;
- la première connexion, l’interface Snowsight et la hiérarchie des objets ;
- la création de bases, schémas, tables et vues, et l’écriture de requêtes SQL ;
- les entrepôts virtuels, le suivi et l’optimisation des coûts ;
- la sécurité par les rôles, Time Travel, le clonage Zero-Copy et la découverte de Snowflake Cortex.
Une fois vos données en place, il reste à les restituer : le connecteur Snowflake de Power BI est un choix fréquent, présenté dans notre feuille de route pour apprendre Power BI.
En résumé
Snowflake est un data warehouse cloud qui sépare le stockage, le calcul et les services : on paie ce que l’on stocke et ce que l’on calcule, avec des entrepôts virtuels que l’on dimensionne et suspend à volonté. Maîtrisez la hiérarchie des objets et le SQL, protégez-vous des dépenses inutiles avec la suspension automatique et les moniteurs de ressources, organisez les droits par rôles, puis tirez parti de Time Travel, du clonage et de Cortex.
Questions fréquentes
Snowflake est-il une base de données ?
Oui, mais une base de données analytique pensée pour le cloud, que l'on classe dans la catégorie des data warehouses. Elle est optimisée pour lire et agréger de grands volumes de données, et non pour gérer des milliers de petites transactions par seconde comme une base applicative. Snowflake s'est depuis étendu au data lake, au partage de données et à l'IA.
Combien coûte Snowflake ?
Snowflake facture séparément le stockage, au volume mensuel, et le calcul, en crédits consommés par les entrepôts virtuels et certains services. Le prix du crédit dépend de l'édition, du fournisseur cloud et de la région. Un essai gratuit avec des crédits offerts permet de tester la plateforme ; consultez la page tarifs officielle pour les montants à jour.
Faut-il connaître le SQL pour utiliser Snowflake ?
Oui, le SQL est le langage principal de Snowflake : création des bases et des tables, chargement, requêtes, gestion des droits. Les bases (SELECT, WHERE, GROUP BY, jointures) suffisent pour démarrer. Snowflake accepte un SQL standard, enrichi de commandes propres comme COPY INTO, CLONE, UNDROP ou les fonctions Cortex.
Quelle est la différence entre Snowflake et Databricks ?
Snowflake est né comme un data warehouse SQL entièrement géré, très simple à administrer, orienté analyse et BI. Databricks est né autour d'Apache Spark et du lakehouse, avec une forte orientation ingénierie de données et machine learning en Python. Les deux plateformes se rapprochent aujourd'hui, mais leurs points forts historiques restent différents.
Qu'est-ce qu'un entrepôt virtuel dans Snowflake ?
Un entrepôt virtuel (virtual warehouse) est un groupe de ressources de calcul qui exécute les requêtes. Il ne contient aucune donnée : il lit le stockage partagé. On le dimensionne de X-Small à des tailles très élevées, on le suspend automatiquement quand il ne sert pas, et on peut en créer plusieurs pour isoler les charges de travail, par exemple le chargement et la BI.
Combien de temps faut-il pour apprendre Snowflake ?
Si vous connaissez déjà le SQL, deux heures suffisent pour comprendre l'architecture, créer une base, charger un fichier et interroger des tables. Comptez quelques semaines de pratique pour maîtriser les rôles, l'optimisation des coûts, le chargement depuis un stockage cloud et les fonctions avancées. Sans base SQL, commencez par ce langage.