Déchargement dans Microsoft Azure

Si vous avez déjà un compte Microsoft Azure et que vous utilisez des conteneurs Azure pour stocker et gérer vos fichiers, vous pouvez utiliser vos conteneurs et chemins de dossiers existants pour décharger les données des tables Snowflake. Ce chapitre décrit comment utiliser la commande COPY pour décharger des données d’une table vers un conteneur Azure. Vous pouvez ensuite télécharger les fichiers de données déchargés dans votre système de fichiers local.

Snowflake prend actuellement en charge le déchargement vers le stockage Blob uniquement. Snowflake prend en charge les types de comptes de stockage suivants :

  • Stockage d’objets blob

  • Data Lake Storage Gen2 — Pris en charge en tant que fonctionnalité préliminaire.

  • Usage général v1

  • Usage général v2

Snowflake ne prend pas en charge Data Lake Storage Gen1.

Comme l’illustre le diagramme ci-dessous, le déchargement des données vers un conteneur Azure se fait en deux étapes :

Étape 1

Utilisez la commande COPY INTO <emplacement> pour copier les données de la table de base de données Snowflake dans un ou plusieurs fichiers d’un compartiment de conteneur Azure. Dans la commande, vous spécifiez un objet de zone de préparation externe nommé qui fait référence au conteneur Azure (recommandé) ou vous pouvez choisir de décharger directement vers le conteneur en spécifiant les identifiants URI et de sécurité (si nécessaire) du conteneur.

Quelle que soit la méthode que vous utilisez, cette étape nécessite l’exécution d’un entrepôt virtuel en cours d’exécution pour la session. L’entrepôt fournit les ressources de calcul pour écrire des lignes à partir de la table.

Étape 2

Utilisez les interfaces/outils fournis par Microsoft pour télécharger les fichiers du conteneur Azure.

Unloading data to Azure

Astuce

Les instructions de cet ensemble de chapitres supposent que vous avez lu Préparation du déchargement de données et que vous avez créé un format de fichier nommé, le cas échéant.

Avant de commencer, vous pouvez également lire Considérations relatives au déchargement des données pour connaître les bonnes pratiques, les conseils et autres instructions.

Dans ce chapitre :

Configuration d’un conteneur Azure pour le déchargement de données

Pour que Snowflake puisse écrire dans un conteneur Azure, vous devez générer un token de signature d’accès partagé (SAS) pour votre compte d’accès de stockage. Pour des instructions de configuration, voir Configuration d’un conteneur Azure pour le chargement de données.

Déchargement de données dans une zone de préparation externe

Les zones de préparation externes sont des objets de base de données nommés fournissant une grande flexibilité pour le déchargement de données. Étant donné qu’il s’agit d’objets de base de données, des privilèges peuvent être attribués à tout rôle pour les zones de préparation nommées.

Vous pouvez créer une zone de préparation nommée externe via l’interface Web ou SQL :

Interface Web

Cliquez sur Databases Databases tab » <nom_bdd> » Stages

SQL

CREATE STAGE

Création d’une zone de préparation nommée

L’exemple suivant crée une zone de préparation externe nommée my_ext_unload_stage avec un conteneur nommé mycontainer et un chemin de dossier nommé unload. La zone de préparation fait référence à l’objet de format de fichier nommé my_csv_unload_format qui a été créé dans Préparation du déchargement de données :

CREATE OR REPLACE STAGE my_ext_unload_stage
  URL='azure://myaccount.blob.core.windows.net/mycontainer/unload'
  CREDENTIALS=(AZURE_SAS_TOKEN='?sv=2016-05-31&ss=b&srt=sco&sp=rwdl&se=2018-06-27T10:05:50Z&st=2017-06-27T02:05:50Z&spr=https,http&sig=bgqQwoXwxzuD2GJfagRg7VOS8hzNr3QLT7rhS8OFRLQ%3D')
  ENCRYPTION=(TYPE='AZURE_CSE' MASTER_KEY = 'kPxX0jzYfIamtnJEUTHwq80Au6NbSgPH5r4BDDwOaO8=')
  FILE_FORMAT = my_csv_unload_format;

Note

Utilisez le point de terminaison blob.core.windows.net pour tous les types de comptes de stockage Azure Blob pris en charge, dont Data Lake Storage Gen2.

Notez que les valeurs AZURE_SAS_TOKEN et MASTER_KEY utilisées dans cet exemple ne sont données qu’à titre indicatif.

Déchargement de données vers la zone de préparation nommée

  1. Utilisez la commande COPY INTO <emplacement> pour décharger les données d’une table vers un conteneur Azure en utilisant la zone de préparation externe.

    L’exemple suivant utilise la zone de préparation my_ext_unload_stage pour décharger toutes les lignes du tableau mytable dans un ou plusieurs fichiers vers le conteneur Azure. Un préfixe de nom de fichier d1 s’applique aux fichiers :

    COPY INTO @my_ext_unload_stage/d1 from mytable;
    
  2. Utilisez les outils fournis par Azure pour récupérer les objets du conteneur (c’est-à-dire les fichiers générés par la commande).

Déchargement direct des données vers un conteneur Azure

  1. Utilisez la commande COPY INTO <emplacement> pour décharger les données d’une table directement vers un conteneur Azure spécifié. Cette option fonctionne bien pour le déchargement ad hoc, lorsque vous ne planifiez pas un déchargement de données régulier avec les mêmes paramètres de table et de conteneur.

    Vous devez spécifier l’URI pour le conteneur Azure et les identifiants de sécurité pour accéder au conteneur dans la commande COPY.

    L’exemple suivant décharge toutes les lignes du tableau mytable dans un ou plusieurs fichiers avec le préfixe de chemin de dossier unload/ vers un conteneur Azure.

    Cet exemple fait référence à une intégration de stockage créée à l’aide de CREATE STORAGE INTEGRATION par un administrateur de compte (c’est-à-dire un utilisateur avec le rôle ACCOUNTADMIN) ou un rôle avec le privilège global CREATE INTEGRATION. Une intégration de stockage permet aux utilisateurs d’éviter de fournir des informations d’identification pour accéder à un emplacement de stockage privé :

    COPY INTO azure://myaccount.blob.core.windows.net/mycontainer/unload/ FROM mytable STORAGE_INTEGRATION = myint;
    
  2. Utilisez la console Azure (ou une application client équivalente) pour récupérer les objets du conteneur (c’est-à-dire les fichiers générés par la commande).