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 échelon 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://nom_compartiment/application_une/2016/07/01/11/

s3://nom_compartiment/application_deux/emplacement_un/2016/07/01/14/

Où :

application_une , application_deux , emplacement_un , 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/;

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 préparés sont chargées avec succès, pensez à supprimer les fichiers préparés pour vous assurer que les données ne sont pas chargées de nouveau par inadvertance (dupliquées).

Les fichiers échelonnés peuvent être supprimés d’un échelon Snowflake (échelon utilisateur, échelon de table ou échelon nommé) à 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.