Gérer les chargements de données réguliers

Ce chapitre fournit des bonnes pratiques, des lignes directrices générales et des considérations importantes concernant la gestion des chargements de données réguliers.

Dans ce chapitre :

Partitionner des fichiers de données préparés

Lorsque vous planifiez des chargements de données réguliers tels que des processus ETL (Extraire, Transformer, Charger) ou des importations régulières de données générées par la machine, il est important de partitionner les données dans votre zone de préparation interne (c.-à-d. Snowflake) ou à des emplacements extérieurs (compartiments S3 ou conteneurs Azure) en utilisant des chemins logiques et granulaires. Créez une structure de partitionnement qui comprend des détails d’identification, tels que l’application ou l’emplacement, ainsi que la date à laquelle les données ont été écrites. Vous pouvez ensuite copier toute fraction des données partitionnées dans Snowflake à l’aide d’une seule commande. Vous pouvez copier les données dans Snowflake par heure, jour, mois ou même année lorsque vous remplissez initialement les tables.

Quelques exemples de compartiments S3 partitionnés utilisant des chemins :

s3://bucket_name/application_one/2016/07/01/11/

s3://bucket_name/application_two/location_one/2016/07/01/14/

Où :

application_one , application_two , location_one , etc.

Identifier les détails de la source de toutes les données dans le chemin. Les données peuvent être organisées en fonction de la date à laquelle elles ont été écrites. Un répertoire optionnel de 24 heures réduit la quantité de données dans chaque répertoire.

Note

S3 transmet une liste de répertoires avec chaque instruction COPY utilisée par Snowflake. Par conséquent, réduire le nombre de fichiers dans chaque répertoire améliore la performance de vos instructions COPY. Vous pouvez même envisager de créer des sous-dossiers par incréments de 10 à 15 minutes dans les dossiers pour chaque heure.

De même, vous pouvez également ajouter un chemin lorsque vous préparez des fichiers dans une zone de préparation interne. Par exemple :

PUT file:///tmp/file_20160701.11*.csv @my_stage/<application_one>/<location_one>/2016/07/01/11/;
Copy

Charger des données préparées

Charger les fichiers de données organisés dans des tables Snowflake en spécifiant le chemin précis vers les fichiers préparés. Pour plus d’informations, voir Organisation des données par chemin.

Supprimer des fichiers de données chargés

Lorsque les données des fichiers en zone de préparation sont chargées avec succès, pensez à supprimer les fichiers en zone de préparation pour vous assurer que les données ne sont pas chargées de nouveau par inadvertance (dupliquées).

Note

Ne supprimez pas les fichiers en zone de préparation tant que les données n’ont pas été chargées avec succès. Pour vérifier si les données ont été chargées avec succès, utilisez la commande COPY_HISTORY. Vérifiez la colonne STATUS pour vérifier que les données du fichier ont été chargées. Notez que si le statut est Load in progress, la suppression du fichier en zone de préparation peut entraîner des chargements partiels et des pertes de données.

Les fichiers en zone de préparation peuvent être supprimés d’une zone de préparation Snowflake (zone de préparation utilisateur, zone de préparation de table ou zone de préparation nommée) à l’aide des méthodes suivantes :

  • Les fichiers qui ont été chargés peuvent être supprimés de la zone de préparation au cours d’un chargement en spécifiant l’option de copie PURGE dans la commande COPY INTO <table>.

  • Une fois le chargement terminé, utilisez la commande REMOVE pour supprimer les fichiers de la zone de préparation.

En supprimant les fichiers, vous vous assurez qu’ils ne seront pas à nouveau chargés par inadvertance. Cela améliore également les performances de chargement, car cela réduit le nombre de fichiers que les commandes COPY doivent analyser pour vérifier si des fichiers existants dans une zone de préparation ont déjà été chargés.