Vue d’ensemble du chargement des données

Cette rubrique fournit une vue d’ensemble des principales options disponibles pour charger des données dans Snowflake.

Dans ce chapitre :

Emplacements de fichier pris en charge

Snowflake appelle l’emplacement des fichiers de données dans le stockage Cloud une zone de préparation. La commande COPY INTO <table> utilisée à la fois pour les chargements de données en masse et en continu (c’est-à-dire Snowpipe) prend en charge les comptes de stockage Cloud gérés par votre entité commerciale (c’est-à-dire les zones de préparation externes) ainsi que le stockage Cloud contenu dans votre compte Snowflake (c’est-à-dire les zones de préparation internes*).

Zones de préparation externes

Le chargement de données à partir de l’un des services de stockage Cloud suivants est pris en charge quelle que soit la plateforme Cloud qui héberge votre compte Snowflake :

  • Amazon S3

  • Google Cloud Storage

  • Microsoft Azure

Chargez (c’est-à-dire placez en zone de préparation) des fichiers sur votre compte de stockage Cloud à l’aide des outils fournis par le service de stockage Cloud.

Une zone de préparation externe nommée est un objet de base de données créé dans un schéma. Cet objet stocke les URL vers les fichiers du stockage Cloud, les paramètres utilisés pour accéder au compte de stockage Cloud et les paramètres de commodité tels que les options qui décrivent le format des fichiers en zone de préparation. Créez des zones de préparation à l’aide de la commande CREATE STAGE.

Note

Certains frais de facturation pour le transfert de données peuvent s’appliquer lors du chargement de données à partir de fichiers dans un service de stockage Cloud dans une région ou une plateforme Cloud différente de votre compte Snowflake. Pour plus d’informations, voir Présentation de la facturation du transfert de données dans Snowflake.

Zones de préparation internes

Snowflake gère les types de zone de préparation suivants dans votre compte :

Utilisateur

Une zone de préparation utilisateur est allouée à chaque utilisateur pour le stockage des fichiers. Ce type de zone de préparation est conçu pour stocker des fichiers qui sont en zone de préparation et gérés par un seul utilisateur, mais qui peuvent être chargés dans plusieurs tables. Les zones de préparation utilisateur ne peuvent être ni modifiées ni détruites.

Table

Une zone de préparation de table est disponible pour chaque table créée dans Snowflake. Ce type de zone de préparation est conçu pour stocker des fichiers qui sont en zone de préparation et gérés par un ou plusieurs utilisateurs, mais uniquement chargés dans une seule table. Les zones de préparation de table ne peuvent être ni modifiées ni détruites.

Notez qu’une zone de préparation de table n’est pas un objet de base de données distinct, mais plutôt une étape implicite liée à la table elle-même. Une zone de préparation de table n’a pas de privilèges qui lui sont propres. Pour préparer des fichiers dans une zone de préparation de table, les répertorier ou les interroger, ou même les détruire, vous devez être le propriétaire de la table (avoir le rôle doté du privilège OWNERSHIP sur la table).

Nommé

Une zone de préparation interne nommée est un objet de base de données créé dans un schéma. Ce type de zone de préparation peut stocker des fichiers qui sont en zone de préparation et gérés par un ou plusieurs utilisateurs et chargés dans une ou plusieurs tables. Les zones de préparation nommées étant des objets de base de données, la possibilité de les créer, de les modifier, de les utiliser ou de les détruire peut être contrôlée à l’aide des privilèges de contrôle d’accès de sécurité. Créez des zones de préparation à l’aide de la commande CREATE STAGE.

Chargez des fichiers vers l’un des types de zone de préparation interne à partir de votre système de fichiers local à l’aide de la commande PUT.

Chargement en lot ou en continu

Snowflake fournit les solutions principales suivantes pour le chargement de données. La meilleure solution peut dépendre du volume de données à charger et de la fréquence de chargement.

Chargement en lot à l’aide de la commande COPY

Cette option permet de charger des lots de données à partir de fichiers déjà disponibles dans le stockage Cloud ou de copier (c.-à-d. mettre en zone de préparation) des fichiers de données d’un ordinateur local vers un emplacement de stockage interne dans le Cloud (c.-à-d. Snowflake) avant de charger les données dans des tables à l’aide de la commande COPY.

Ressources de calcul

Le chargement en lot repose sur des entrepôts virtuels fournis par l’utilisateur, spécifiés dans l’instruction COPY. Les utilisateurs sont tenus de dimensionner l’entrepôt de manière appropriée pour s’adapter aux charges attendues.

Transformations simples pendant un chargement

Snowflake prend en charge la transformation des données tout en les chargeant dans une table à l’aide de la commande COPY. Les options comprennent :

  • Réorganisation des colonnes

  • Omission de colonnes

  • Conversions

  • Tronquer des chaînes de texte qui dépassent la longueur de colonne cible

Il n’est pas nécessaire que vos fichiers de données aient le même nombre et le même ordre de colonnes que votre table cible.

Chargement continu à l’aide de Snowpipe

Cette option est conçue pour charger de petits volumes de données (c.-à-d. des micro-lots) et les rendre progressivement disponibles pour analyse. Snowpipe charge les données dans les minutes qui suivent l’ajout de fichiers dans une zone de préparation et leur soumission en vue de leur intégration. Cela garantit aux utilisateurs les derniers résultats dès que les données brutes sont disponibles.

Ressources de calcul

Snowpipe utilise les ressources de calcul fournies par Snowflake (un modèle de calcul sans serveur). Ces ressources fournies par Snowflake sont automatiquement redimensionnées et mises à l’échelle, si nécessaire, et facturées et détaillées à l’aide d’une facturation à la seconde. L’ingestion de données est facturée en fonction des charges de travail réelles.

Transformations simples pendant un chargement

L’instruction COPY d’une définition de canal prend en charge les mêmes options de transformation COPY que lors du chargement en lot de données.

En outre, les pipelines de données peuvent tirer parti de Snowpipe pour charger en continu des micro-lots de données dans des tables de transfert pour la transformation et l’optimisation à l’aide de tâches automatisées et des informations de capture de données modifiées (CDC) contenues dans des flux.

Pipelines de données pour les transformations complexes

A data pipeline enables applying complex transformations to loaded data. This workflow generally leverages Snowpipe to load « raw » data into a staging table and then uses a series of table streams and tasks to transform and optimize the new data for analysis.

Chargement de données à partir de sujets Apache Kafka

Le Connecteur Snowflake pour Kafka permet aux utilisateurs de se connecter à un serveur Apache Kafka, de lire les données d’un ou plusieurs sujets et de charger ces données dans des tables Snowflake.

Alternatives au chargement de données

Il n’est pas toujours nécessaire de charger des données dans Snowflake avant d’exécuter des requêtes.

Tables externes (lac de données)

Les tables externes permettent d’interroger des données existantes stockées dans un stockage Cloud externe à des fins d’analyse sans avoir à d’abord les charger dans Snowflake. La source de vérité pour les données demeure dans le stockage Cloud externe. Les ensembles de données matérialisés dans Snowflake via des vues matérialisées sont en lecture seule.

Cette solution est particulièrement avantageuse pour les comptes qui ont une grande quantité de données stockées dans un stockage Cloud externe et qui ne souhaitent interroger qu’une partie des données, par exemple, les données les plus récentes. Les utilisateurs peuvent créer des vues matérialisées sur des sous-ensembles de ces données pour améliorer les performances des requêtes.