Automatisation de Snowpipe pour le stockage Microsoft Azure Blob¶
Cette rubrique fournit des instructions pour déclencher automatiquement les chargements de données Snowpipe à l’aide de messages Event Grid Microsoft Azure pour les événements de stockage d’objets Blob. Les instructions expliquent comment créer un message d’événement pour le chemin cible dans le stockage d’objets Blob où sont stockés vos fichiers de données.
Snowflake prend en charge les types de comptes de stockage Blob suivants :
Stockage d’objets Blob
Data Lake Storage Gen2
Usage général v2
Notez que seuls les événements Microsoft.Storage.BlobCreated
déclenchent Snowpipe pour charger des fichiers. L’ajout de nouveaux objets au stockage Blob déclenche ces événements. Renommer un répertoire ou un objet ne déclenche pas ces événements. Snowflake prend en charge les APIs Microsoft.Storage.BlobCreated
suivantes :
CopyBlob
PutBlob
PutBlockList
FlushWithClose
SftpCommit
Snowflake recommande de n’envoyer que des événements pris en charge par Snowpipe afin de réduire les coûts, le bruit des événements et la latence.
Pour les comptes de stockage Data Lake Storage Gen2, les événements Microsoft.Storage.BlobCreated
sont déclenchés lorsque les clients utilisent les opérations CreateFile
et FlushWithClose
. Si le protocole de transfert de fichiers SSH (SFTP) est utilisé, les événements Microsoft.Storage.BlobCreated
sont déclenchés par les opérations SftpCreate
et SftpCommit
. L’API CreateFile
ou SftpCreate
seule n’indique pas une validation d’un fichier dans le compte de stockage. Si le message FlushWithClose
ou SftpCommit
n’est pas envoyé à la file d’attente Snowflake, Snowpipe n’ingère pas le fichier.
Dans ce chapitre :
Prise en charge de la plateforme Cloud¶
Le déclenchement de chargements de données Snowpipe automatisés à l’aide de messages Azure Event Grid est pris en charge par les comptes Snowflake hébergés sur toutes les plates-formes Cloud prises en charge.
Flux de processus¶
Les notifications d’Event Grid Microsoft Azure pour un conteneur Azure déclenchent le chargement automatique des données Snowpipe.
Le diagramme suivant montre le déroulement du processus d’intégration automatique Snowpipe :
Les fichiers de données sont chargés dans une zone de préparation.
Un message d’événement de stockage d’objets Blob informe Snowpipe via Event Grid que les fichiers sont prêts à être chargés. Snowpipe copie les fichiers dans une file d’attente.
Un entrepôt virtuel fourni par Snowflake charge les données des fichiers en file d’attente dans la table cible en fonction des paramètres définis dans le canal spécifié.
Pour obtenir des instructions, voir Automatisation de Snowpipe pour le stockage Microsoft Azure Blob.
Configuration de l’accès sécurisé au stockage Cloud¶
Note
Si vous avez déjà configuré un accès sécurisé au conteneur de stockage blob Azure qui stocke vos fichiers de données, vous pouvez ignorer cette section.
Cette section décrit comment configurer un objet d’intégration de stockage Snowflake pour déléguer la responsabilité de l’authentification pour le stockage dans le Cloud à une entité Gestion des identités et des accès Snowflake (IAM).
Note
Nous vous recommandons vivement cette option, qui vous évite de fournir des informations d’identification IAM lors de l’accès à un stockage dans le Cloud. Voir Configuration d’un conteneur Azure pour le chargement de données pour des options d’accès au stockage supplémentaires.
Cette section décrit comment utiliser des intégrations de stockage pour permettre à Snowflake de lire et d’écrire des données dans un conteneur Azure référencé dans une zone de préparation externe (Azure). Les intégrations sont des objets Snowflake de première classe nommés, qui évitent de transmettre des informations d’identification explicites de fournisseur Cloud, telles que des clés secrètes ou des jetons d’accès. Les objets d’intégration stockent un ID d’utilisateur Azure de gestion des identités et des accès (IAM) appelé inscription d’application. Un administrateur de votre organisation accorde à cette application les autorisations nécessaires dans le compte Azure.
Une intégration peut également spécifier des conteneurs (et des chemins facultatifs) qui limitent les emplacements que les utilisateurs peuvent spécifier lors de la création de zones de préparation externes utilisant l’intégration.
Note
La réalisation des instructions de cette section nécessite des autorisations dans Azure pour gérer les comptes de stockage. Si vous n’êtes pas un administrateur Azure, demandez à votre administrateur Azure d’effectuer ces tâches.
Dans cette section :
Étape 1 : Création d’une intégration Cloud Storage dans Snowflake¶
Créez une intégration de stockage à l’aide de la commande CREATE STORAGE INTEGRATION. Une intégration de stockage est un objet Snowflake qui stocke un principal de service généré pour votre stockage Cloud Azure, ainsi qu’un ensemble facultatif d’emplacements de stockage autorisés ou bloqués (c.-à-d. des conteneurs). Les administrateurs de fournisseur de Cloud de votre entreprise accordent des autorisations sur les emplacements de stockage au principal de service généré. Cette option permet aux utilisateurs d’éviter de fournir des informations d’identification lors de la création de zones de préparation ou du chargement de données.
Une seule intégration de stockage peut prendre en charge plusieurs zones de préparation (c.-à-d. Azure) externes. L’URL dans la définition de zone de préparation doit correspondre aux conteneurs Azure (et aux chemins facultatifs) spécifiés pour le paramètre STORAGE_ALLOWED_LOCATIONS.
Note
Seuls les administrateurs de compte (utilisateurs dotés du rôle ACCOUNTADMIN) ou un rôle disposant du privilège global CREATE INTEGRATION peuvent exécuter cette commande SQL.
CREATE STORAGE INTEGRATION <integration_name>
TYPE = EXTERNAL_STAGE
STORAGE_PROVIDER = 'AZURE'
ENABLED = TRUE
AZURE_TENANT_ID = '<tenant_id>'
STORAGE_ALLOWED_LOCATIONS = ('azure://<account>.blob.core.windows.net/<container>/<path>/', 'azure://<account>.blob.core.windows.net/<container>/<path>/')
[ STORAGE_BLOCKED_LOCATIONS = ('azure://<account>.blob.core.windows.net/<container>/<path>/', 'azure://<account>.blob.core.windows.net/<container>/<path>/') ]
Où :
integration_name
est le nom de la nouvelle intégration.tenant_id
est l’ID de votre client Office 365 auquel appartiennent les comptes de stockage autorisés et bloqués. Une intégration de stockage peut s’authentifier auprès d’un seul client. Les emplacements de stockage autorisés et bloqués doivent donc faire référence aux comptes de stockage qui appartiennent tous à ce client.Pour trouver votre ID de client, connectez-vous au portail Azure et cliquez sur Azure Active Directory » Properties. L” ID de client s’affiche dans le champ Tenant ID.
container
est le nom d’un conteneur Azure qui stocke vos fichiers de données (par exemple,mycontainer
). Les paramètres STORAGE_ALLOWED_LOCATIONS et STORAGE_BLOCKED_LOCATIONS limitent ou bloquent l’accès à ces conteneurs, respectivement, lors de la création ou de la modification de zones de préparation faisant référence à cette intégration.path
est un chemin facultatif qui peut être utilisé pour fournir un contrôle granulaire sur les répertoires logiques du conteneur.
L’exemple suivant crée une intégration qui limite explicitement les zones de préparation externes utilisant l’intégration pour faire référence à l’un des deux conteneurs et des chemins. Dans une étape ultérieure, nous allons créer une zone de préparation externe qui fait référence à l’un de ces conteneurs et chemins. Plusieurs zones de préparation externes qui utilisent cette intégration peuvent référencer les conteneurs et les chemins autorisés :
CREATE STORAGE INTEGRATION azure_int TYPE = EXTERNAL_STAGE STORAGE_PROVIDER = 'AZURE' ENABLED = TRUE AZURE_TENANT_ID = 'a123b4c5-1234-123a-a12b-1a23b45678c9' STORAGE_ALLOWED_LOCATIONS = ('azure://myaccount.blob.core.windows.net/mycontainer1/mypath1/', 'azure://myaccount.blob.core.windows.net/mycontainer2/mypath2/') STORAGE_BLOCKED_LOCATIONS = ('azure://myaccount.blob.core.windows.net/mycontainer1/mypath1/sensitivedata/', 'azure://myaccount.blob.core.windows.net/mycontainer2/mypath2/sensitivedata/');
Étape 2 : Accorder un accès à Snowflake aux emplacements de stockage¶
Exécutez la commande DESCRIBE INTEGRATION pour récupérer l’URL de consentement :
DESC STORAGE INTEGRATION <integration_name>;
Où :
integration_name
est le nom de l’intégration créée à l” étape 1 : Création d’une intégration Cloud Storage dans Snowflake.
Notez les valeurs dans les colonnes suivantes :
- AZURE_CONSENT_URL:
URL vers la page de demande d’autorisations de Microsoft.
- AZURE_MULTI_TENANT_APP_NAME:
Nom de l’application client Snowflake créée pour votre compte. Plus loin dans cette section, vous devrez accorder à cette application les autorisations nécessaires pour obtenir un jeton d’accès sur vos emplacements de stockage autorisés.
Dans un navigateur Web, accédez à l’URL dans la colonne AZURE_CONSENT_URL . La page affiche une page de demande d’autorisations Microsoft.
Cliquez sur le bouton Accept. Cette action permet au principal du service Azure créé pour votre compte Snowflake d’obtenir un jeton d’accès sur des ressources spécifiées à l’intérieur de votre client. L’obtention d’un jeton d’accès ne réussit que si vous accordez au principal du service les autorisations appropriées sur le conteneur (voir l’étape suivante).
La page de demande d’autorisations Microsoft redirige vers le site d’entreprise de Snowflake (snowflake.com).
Connectez-vous au portail Microsoft Azure.
Accédez à Azure Services » Storage Accounts. Cliquez sur le nom du compte de stockage auquel vous accordez au principal du service Snowflake l’accès.
Cliquez sur Access Control (IAM) » Add role assignment.
Sélectionnez le rôle souhaité à accorder au principal du service Snowflake :
Storage Blob Data Reader
accorde un accès en lecture uniquement. Cela permet de charger des données à partir de fichiers mis en zone de préparation dans le compte de stockage.Storage Blob Data Contributor
accorde un accès en lecture et en écriture. Cela permet de charger ou de décharger des données dans des fichiers en zone de préparation dans le compte de stockage. Le rôle permet également d’exécuter la commande REMOVE pour supprimer des fichiers en zone de préparation dans le compte de stockage.
Recherchez le principal de service Snowflake. Il s’agit de l’identité de la propriété AZURE_MULTI_TENANT_APP_NAME dans la sortie DESC STORAGE INTEGRATION (à l’étape 1). Recherchez la chaîne avant le trait de soulignement dans la propriété AZURE_MULTI_TENANT_APP_NAME.
Important
Azure peut prendre une heure ou plus pour créer le principal de service Snowflake demandé via la page de demande Microsoft dans cette section. Si le principal de service n’est pas disponible immédiatement, nous vous recommandons d’attendre une heure ou deux, puis de relancer la recherche.
Si vous supprimez le principal de service, l’intégration de stockage cesse de fonctionner.
Cliquez sur le bouton Review + assign.
Note
Selon la documentation de Microsoft Azure, les affectations de rôles peuvent prendre jusqu’à cinq minutes pour se propager.
Snowflake met en cache les informations d’identification temporaires pendant une période qui ne peut dépasser le délai d’expiration de 60 minutes. Si vous révoquez l’accès à partir de Snowflake, les utilisateurs pourraient être en mesure de répertorier les fichiers et de charger des données à partir de l’emplacement de stockage dans le Cloud jusqu’à l’expiration du cache.
Configuration de l’automatisation avec Azure Event Grid¶
Étape 1 : configuration de l’abonnement à Event Grid¶
Cette section explique comment configurer un abonnement à Event Grid pour les événements Azure Storage à l’aide d’Azure CLI. Pour plus d’informations sur les étapes décrites dans cette section, consultez les articles suivants dans la documentation Azure :
https://docs.microsoft.com/en-us/azure/event-grid/custom-event-to-queue-storage
https://docs.microsoft.com/en-us/azure/storage/blobs/storage-blob-event-quickstart
Créer un groupe de ressources¶
Un sujet Event Grid fournit un point de terminaison où la source (c.-à-d. Azure Storage) envoie des événements. Un sujet est utilisé pour une collection d’événements connexes. Les sujets Event Grid sont des ressources Azure et doivent être placés dans un groupe de ressources Azure.
Exécutez la commande suivante pour créer un groupe de ressources :
az group create --name <resource_group_name> --location <location>
Où :
resource_group_name
est le nom du nouveau groupe de ressources.location
est l’emplacement ou la région dans la terminologie Snowflake de votre compte Azure Storage.
Activer le fournisseur de ressources Event Grid¶
Exécutez la commande suivante pour inscrire le fournisseur de ressources d’Event Grid. Notez que cette étape n’est requise que si vous n’avez pas déjà utilisé Event Grid avec votre compte Azure :
az provider register --namespace Microsoft.EventGrid
az provider show --namespace Microsoft.EventGrid --query "registrationState"
Créer un compte de stockage pour les fichiers de données¶
Exécutez la commande suivante pour créer un compte de stockage pour stocker vos fichiers de données. Ce compte doit être un compte de stockage Blob (type BlobStorage
) ou GPv2 (type StorageV2
), car seuls ces deux types de compte prennent en charge les messages d’événement.
Note
Si vous avez déjà un stockage Blob ou un compte GPv2, vous pouvez utiliser ce compte à la place.
Par exemple, créez un compte de stockage Blob :
az storage account create --resource-group <resource_group_name> --name <storage_account_name> --sku Standard_LRS --location <location> --kind BlobStorage --access-tier Hot
Où :
resource_group_name
est le nom du groupe de ressources que vous avez créé dans Créer un groupe de ressources.storage_account_name
est le nom du nouveau compte de stockage.location
correspond à l’emplacement de votre compte Azure Storage.
Créer un compte de stockage pour la file d’attente de stockage¶
Exécutez la commande suivante pour créer un compte de stockage pour héberger votre file d’attente de stockage. Ce compte doit être un compte GPv2, car seul ce type de compte prend en charge les messages d’événement dans une file d’attente de stockage.
Note
Si vous avez déjà un compte GPv2, vous pouvez utiliser ce compte pour héberger à la fois vos fichiers de données et votre file d’attente de stockage.
Par exemple, créez un compte GPv2 :
az storage account create --resource-group <resource_group_name> --name <storage_account_name> --sku Standard_LRS --location <location> --kind StorageV2
Où :
resource_group_name
est le nom du groupe de ressources que vous avez créé dans Créer un groupe de ressources.storage_account_name
est le nom du nouveau compte de stockage.location
correspond à l’emplacement de votre compte Azure Storage.
Créer une file d’attente de stockage¶
Une seule file d’attente Azure Queue Storage peut collecter les messages d’événement pour de nombreux abonnements à Event Grid. Pour optimiser les performances, Snowflake recommande de créer une seule file d’attente de stockage afin de prendre en charge tous vos abonnements liés à Snowflake.
Exécutez la commande suivante pour créer une file d’attente de stockage. Une file d’attente de stockage stocke un ensemble de messages, en l’occurrence des messages d’événement d’Event Grid :
az storage queue create --name <storage_queue_name> --account-name <storage_account_name>
Où :
storage_queue_name
est le nom de la nouvelle file d’attente de stockage.storage_account_name
est le nom du compte de stockage que vous avez créé dans Créer un compte de stockage pour la file d’attente de stockage.
Exporter le compte de stockage et les IDs de file d’attente pour référence¶
Exécutez les commandes suivantes pour définir les variables d’environnement des IDs de compte de stockage et de file d’attente qui seront demandés ultérieurement dans ces instructions :
Linux ou macOS :
export storageid=$(az storage account show --name <data_storage_account_name> --resource-group <resource_group_name> --query id --output tsv) export queuestorageid=$(az storage account show --name <queue_storage_account_name> --resource-group <resource_group_name> --query id --output tsv) export queueid="$queuestorageid/queueservices/default/queues/<storage_queue_name>"
Windows :
set storageid=$(az storage account show --name <data_storage_account_name> --resource-group <resource_group_name> --query id --output tsv) set queuestorageid=$(az storage account show --name <queue_storage_account_name> --resource-group <resource_group_name> --query id --output tsv) set queueid="%queuestorageid%/queueservices/default/queues/<storage_queue_name>"
Où :
data_storage_account_name
est le nom du compte de stockage que vous avez créé dans Créer un compte de stockage pour les fichiers de données.queue_storage_account_name
est le nom du compte de stockage que vous avez créé dans Créer un compte de stockage pour la file d’attente de stockage.resource_group_name
est le nom du groupe de ressources que vous avez créé dans Créer un groupe de ressources.storage_queue_name
est le nom de la file d’attente de stockage que vous avez créée dans Créer une file d’attente de stockage.
Installer l’extension Event Grid¶
Exécutez la commande suivante pour installer l’extension Event Grid pour Azure CLI :
az extension add --name eventgrid
Créer l’abonnement à Event Grid¶
Exécutez la commande suivante pour créer l’abonnement à Event Grid. L’abonnement à un sujet indique à Event Grid quels événements doivent être suivis :
Linux ou macOS :
az eventgrid event-subscription create \ --source-resource-id $storageid \ --name <subscription_name> --endpoint-type storagequeue \ --endpoint $queueid \ --advanced-filter data.api stringin CopyBlob PutBlob PutBlockList FlushWithClose SftpCommit
Windows :
az eventgrid event-subscription create \ --source-resource-id %storageid% \ --name <subscription_name> --endpoint-type storagequeue \ --endpoint %queueid% \ -advanced-filter data.api stringin CopyBlob PutBlob PutBlockList FlushWithClose SftpCommit
Où :
storageid
etqueueid
sont les variables d’environnement des ID de compte de stockage et de file d’attente que vous avez définies dans Exporter le compte de stockage et les IDs de file d’attente pour référence.subscription_name
est le nom du nouvel abonnement à Event Grid.
Étape 2 : création de l’intégration des notifications¶
Une intégration de notification est un objet Snowflake qui fournit une interface entre Snowflake et un service de mise en file d’attente de messages dans le Cloud tiers, tel que Azure Event Grid.
Note
Une seule intégration de notification prend en charge une seule file d’attente de stockage Azure. Le référencement de la même file d’attente de stockage dans plusieurs intégrations de notification peut entraîner la perte de données dans les tables cibles, car les notifications d’événements sont réparties entre les intégrations de notification. Par conséquent, la création de canal est bloquée si un canal fait référence à la même file d’attente de stockage que celle d’un canal existant.
Récupérer l’URL de file d’attente de stockage et l’ID du client¶
Connectez-vous au portail Microsoft Azure.
Accédez à Storage account » Queue service » Queues. Enregistrez l’URL pour la file d’attente que vous avez créée dans Créer une file d’attente de stockage pour référence ultérieure. L’URL a le format suivant :
https://<storage_account_name>.queue.core.windows.net/<storage_queue_name>
Accédez à Azure Active Directory » Properties. Enregistrez la valeur Tenant ID pour référence plus tard. L’ID de répertoire , ou ID de client, est nécessaire pour générer l’URL de consentement qui accorde à Snowflake l’accès à l’abonnement à Event Grid.
Créer l’intégration des notifications¶
Créez une intégration de notification à l’aide de la commande CREATE NOTIFICATION INTEGRATION.
Note
Seuls les administrateurs de compte (utilisateurs dotés du rôle ACCOUNTADMIN) ou un rôle disposant du privilège global CREATE INTEGRATION peuvent exécuter cette commande SQL.
Le principal du service Azure pour les intégrations de notification est différent du principal de service créé pour les intégrations de stockage.
CREATE NOTIFICATION INTEGRATION <integration_name>
ENABLED = true
TYPE = QUEUE
NOTIFICATION_PROVIDER = AZURE_STORAGE_QUEUE
AZURE_STORAGE_QUEUE_PRIMARY_URI = '<queue_URL>'
AZURE_TENANT_ID = '<directory_ID>';
Où :
integration_name
est le nom de la nouvelle intégration.queue_URL
etdirectory_ID
sont l’URL de la file d’attente et l’ID de client que vous avez enregistrés dans Récupérer l’URL de la file d’attente de stockage et de l’ID du client.
Par exemple :
CREATE NOTIFICATION INTEGRATION my_notification_int
ENABLED = true
TYPE = QUEUE
NOTIFICATION_PROVIDER = AZURE_STORAGE_QUEUE
AZURE_STORAGE_QUEUE_PRIMARY_URI = 'https://myqueue.queue.core.windows.net/mystoragequeue'
AZURE_TENANT_ID = 'a123bcde-1234-5678-abc1-9abc12345678';
Accorder un accès à Snowflake à la file d’attente de stockage¶
Notez que certaines étapes de cette section nécessitent une installation locale du logiciel Azure CLI.
Exécutez la commande DESCRIBE INTEGRATION pour récupérer l’URL de consentement :
DESC NOTIFICATION INTEGRATION <integration_name>;
Où :
integration_name
est le nom de l’intégration créée dans Créer l’intégration des notifications.
Notez les valeurs dans les colonnes suivantes :
- AZURE_CONSENT_URL:
URL vers la page de demande d’autorisations de Microsoft.
- AZURE_MULTI_TENANT_APP_NAME:
Nom de l’application client Snowflake créée pour votre compte. Plus loin dans cette section, vous devrez accorder à cette application les autorisations nécessaires pour obtenir un jeton d’accès sur votre sujet autorisé.
Dans un navigateur Web, accédez à l’URL dans la colonne AZURE_CONSENT_URL . La page affiche une page de demande d’autorisations Microsoft.
Cliquez sur le bouton Accept. Cette action permet au principal du service Azure créé pour votre compte Snowflake d’obtenir un jeton d’accès sur n’importe quelle ressource à l’intérieur de votre client. L’obtention d’un jeton d’accès ne réussit que si vous accordez au principal du service les autorisations appropriées sur le conteneur (voir l’étape suivante).
La page de demande d’autorisations Microsoft redirige vers le site d’entreprise de Snowflake (snowflake.com).
Connectez-vous au portail Microsoft Azure.
Accédez à Azure Active Directory » Enterprise applications. Vérifiez que l’identificateur de l’application Snowflake que vous avez enregistré à l’étape 2 de cette section est répertorié.
Important
Si vous supprimez l’application Snowflake dans Azure Active Directory plus tard, l’intégration des notifications cesse de fonctionner.
Accédez à Queues »
storage_queue_name
, oùstorage_queue_name
est le nom de la file d’attente de stockage que vous avez créée dans Créer une file d’attente de stockage.Cliquez sur Access Control (IAM) » Add role assignment.
Recherchez le principal de service Snowflake. Il s’agit de l’identité de la propriété AZURE_MULTI_TENANT_APP_NAME dans la sortie DESC NOTIFICATION INTEGRATION (à l’étape 1). Recherchez la chaîne avant le trait de soulignement dans la propriété AZURE_MULTI_TENANT_APP_NAME.
Important
Azure peut prendre une heure ou plus pour créer le principal de service Snowflake demandé via la page de demande Microsoft dans cette section. Si le principal de service n’est pas disponible immédiatement, nous vous recommandons d’attendre une heure ou deux, puis de relancer la recherche.
Si vous supprimez le principal de service, l’intégration de notification cesse de fonctionner.
Accordez à l’application Snowflake les autorisations suivantes :
Role: Contributeur de données de la file de stockage
Assign access to: Principal de service, groupe ou utilisateur AD Azure
Select: La valeur
appDisplayName
.
L’identificateur de l’application Snowflake devrait maintenant figurer dans la liste sous Storage Queue Data Contributor (dans la même boîte de dialogue).
Étape 3 : Création d’une zone de préparation (si nécessaire)¶
Créez une zone de préparation externe qui fait référence à votre conteneur Azure à l’aide de la commande CREATE STAGE. Snowpipe va chercher vos fichiers de données dans la zone de préparation et les mettre temporairement en file d’attente avant de les charger dans votre table cible.
Vous pouvez aussi utiliser une zone de préparation externe.
Note
Pour configurer un accès sécurisé à l’emplacement de stockage Cloud, voir Configuration de l’accès sécurisé au stockage Cloud (dans cette rubrique).
Pour faire référence à une intégration de stockage dans l’instruction CREATE STAGE, le rôle doit avoir le privilège USAGE sur l’objet d’intégration de stockage.
L’exemple suivant crée une zone de préparation nommée mystage
dans le schéma actif de la session utilisateur. L’URL de stockage Cloud inclut le chemin load/files
. La zone de préparation fait référence à une intégration de stockage nommée my_storage_int
.
USE SCHEMA snowpipe_db.public; CREATE STAGE mystage URL = 'azure://myaccount.blob.core.windows.net/mycontainer/load/files/' STORAGE_INTEGRATION = my_storage_int;
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.
Étape 4 : Création d’un canal avec l’intégration automatique activée¶
Créez un canal à l’aide de la commande CREATE PIPE . Le canal définit l’instruction COPY INTO <table> utilisée par Snowpipe pour charger les données de la file d’attente d’acquisition dans la table cible.
Par exemple, créez un canal dans le schéma snowpipe_db.public
qui charge toutes les données des fichiers mis dans la zone de préparation mystage
dans la table mytable
:
create pipe snowpipe_db.public.mypipe auto_ingest = true integration = 'MY_NOTIFICATION_INT' as copy into snowpipe_db.public.mytable from @snowpipe_db.public.mystage file_format = (type = 'JSON');
Où :
notification_integration_name
est le nom de l’intégration de notification créée dans Étape 2 : création de l’intégration des notifications.
Important
Le nom de l’intégration doit être saisi en majuscules.
Vérifiez que la référence de l’emplacement de stockage dans l’instruction COPY INTO <table> ne chevauche pas la référence dans les canaux existants du compte. Sinon, plusieurs canaux pourraient charger le même ensemble de fichiers de données dans les tables cibles. Par exemple, cette situation peut se produire lorsque plusieurs définitions de canaux font référence au même emplacement de stockage avec différents niveaux de granularité, tels que
<emplacement_stockage>/path1/
et<emplacement_stockage>/path1/path2/
. Dans cet exemple, si les fichiers sont en zone de préparation dans<emplacement_stockage>/path1/path2/
, les deux canaux chargeront une copie des fichiers.Visualisez les instructions COPY INTO <table> dans les définitions de tous les canaux du compte en exécutant SHOW PIPES ou en interrogeant la vue PIPES dans Account Usage ou la vue PIPES dans Information Schema.
Snowpipe avec l’intégration automatique est maintenant configuré !
Lorsque de nouveaux fichiers de données sont ajoutés au conteneur Azure, le message d’événement indique à Snowpipe de les charger dans la table cible définie dans le canal.
Étape 5 : Chargement de fichiers historiques¶
Pour charger les retards de traitement des fichiers de données qui existaient dans la zone de préparation externe avant que les messages d’Event Grid aient été configurés, exécutez une instruction ALTER PIPE … REFRESH .
Étape 6 : Suppression de fichiers en zone de préparation¶
Supprimez les fichiers en zone de préparation après avoir chargé avec succès les données et lorsque vous n’avez plus besoin des fichiers. Pour obtenir des instructions, voir Suppression de fichiers en zone de préparation après le chargement des données par Snowpipe.
Sortie SYSTEM$PIPE_STATUS¶
La fonction SYSTEM$PIPE_STATUS récupère une représentation JSON du statut actuel d’un canal.
Pour les canaux avec AUTO_INGEST défini sur TRUE, la fonction renvoie un objet JSON contenant les paires nom/valeur suivantes (si applicable au statut actuel du canal) :
{« executionState »: »<valeur> », »oldestFileTimestamp »:<valeur>, »pendingFileCount »:<valeur>, »notificationChannelName »: »<valeur> », »numOutstandingMessagesOnChannel »:<valeur>, »lastReceivedMessageTimestamp »: »<valeur> », »lastForwardedMessageTimestamp »: »<valeur> », »error »:<valeur>, »fault »:<valeur>}
Pour la description des valeurs de sortie, consultez la rubrique de référence de la fonction SQL.