Automação do Snowpipe para o armazenamento de blobs Microsoft Azure

Este tópico fornece instruções para acionar o carregamento automático de dados do Snowpipe usando mensagens de Event Grid do Microsoft Azure para eventos de armazenamento de blobs. As instruções explicam como criar uma mensagem de evento para o caminho de destino no armazenamento de blobs onde seus arquivos de dados são armazenados.

O Snowflake aceita os seguintes tipos de contas de armazenamento de blobs:

  • Armazenamento de blobs

  • Data Lake Storage Gen2

  • Uso geral v2

Note que apenas os eventos Microsoft.Storage.BlobCreated acionam o Snowpipe para carregar arquivos. A adição de novos objetos ao armazenamento de blobs aciona estes eventos. A renomeação de um diretório ou objeto não aciona esses eventos. O Snowflake suporta as seguintes APIs Microsoft.Storage.BlobCreated:

  • CopyBlob

  • PutBlob

  • PutBlockList

  • FlushWithClose

  • SftpCommit

A Snowflake recomenda que você envie apenas eventos suportados para o Snowpipe para reduzir custos, ruído de eventos e latência.

Para contas de armazenamento Data Lake Gen2, os eventos Microsoft.Storage.BlobCreated são acionados quando os clientes usam as operações CreateFile e FlushWithClose. Se o SSH File Transfer Protocol (SFTP) for usado, os eventos Microsoft.Storage.BlobCreated serão acionados com as operações SftpCreate e SftpCommit. Apenas a API SftpCreate ou CreateFile não indica a confirmação de um arquivo na conta de armazenamento. Se a mensagem FlushWithClose ou SftpCommit não for enviada para a fila do Snowflake, o Snowpipe não ingere o arquivo.

Neste tópico:

Suporte para a plataforma de nuvem

O acionamento de cargas de dados automatizadas do Snowpipe usando mensagens da Event Grid do Azure conta com o suporte por contas Snowflake hospedadas em todas as plataformas de nuvem compatíveis.

Fluxo de processo

Notificações da Event Grid do Microsoft Azure para um contêiner Azure acionam cargas de dados do Snowpipe automaticamente.

O diagrama a seguir mostra o fluxo do processo de ingestão automática do Snowpipe:

Fluxo do processo de ingestão automática do Snowpipe
  1. Os arquivos de dados são carregados em um estágio.

  2. Uma mensagem de evento de armazenamento de blobs informa o Snowpipe via Event Grid que os arquivos estão prontos para serem carregados. O Snowpipe copia os arquivos em uma fila.

  3. Um warehouse virtual fornecido pelo Snowflake carrega os dados dos arquivos enfileirados na tabela de destino com base nos parâmetros definidos no canal especificado.

Para obter instruções, consulte Automação do Snowpipe para o armazenamento de blobs Microsoft Azure.

Configuração de acesso seguro ao armazenamento em nuvem

Nota

Se você já configurou o acesso seguro ao container de armazenamento de blobs do Azure que armazena seus arquivos de dados, pode pular esta seção.

Esta seção descreve como configurar um objeto de integração de armazenamento Snowflake para delegar a responsabilidade pela autenticação do armazenamento em nuvem a uma entidade de gerenciamento de identidade e acesso (IAM) do Snowflake.

Nota

Recomendamos esta opção, o que evita a necessidade de fornecer credenciais IAM ao acessar o armazenamento em nuvem. Consulte Configuração de um contêiner Azure para carregamento de dados para opções adicionais de acesso ao armazenamento.

Esta seção descreve como usar integrações de armazenamento para permitir que o Snowflake leia e grave dados em um contêiner Azure referenciado em um estágio externo (Azure). As integrações são objetos Snowflake nomeados e de primeira classe que evitam a necessidade de passar credenciais explícitas de provedores de nuvens, tais como chaves secretas ou tokens de acesso. Os objetos de integração armazenam uma ID de usuário de gerenciamento de identidade e acesso do Azure (IAM) chamada registro de aplicativo. Um administrador em sua organização concede a esse aplicativo as permissões necessárias na conta Azure.

Uma integração também deve especificar contêineres (e caminhos opcionais) que limitam os locais que os usuários podem especificar ao criar estágios externos que utilizam a integração.

Nota

Para completar as instruções desta seção, é necessário obter permissões no Azure para gerenciar as contas de armazenamento. Se você não é um administrador Azure, peça a seu administrador Azure para realizar essas tarefas.

Nesta seção:

Etapa 1: Criar uma integração de armazenamento em nuvem no Snowflake

Crie uma integração de armazenamento usando o comando CREATE STORAGE INTEGRATION. Uma integração de armazenamento é um objeto Snowflake que armazena uma entidade de segurança de serviço gerada para seu armazenamento em nuvem Azure, juntamente com um conjunto opcional de locais de armazenamento permitidos ou bloqueados (ou seja, contêineres). Os administradores do provedor de nuvem em sua organização concedem permissões para os locais de armazenamento à entidade de segurança de serviço gerada. Esta opção permite que os usuários evitem fornecer credenciais ao criar estágios ou carregar dados.

Uma única integração de armazenamento pode oferecer suporte a múltiplos estágios externos (ou seja, Azure). O URL na definição do estágio deve estar alinhado aos contêineres Azure (e caminhos opcionais) especificados para o parâmetro STORAGE_ALLOWED_LOCATIONS.

Nota

Somente administradores de conta (usuários com a função ACCOUNTADMIN) ou uma função com o privilégio global CREATE INTEGRATION podem executar este comando 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>/') ]
Copy

Onde:

  • integration_name é o nome da nova integração.

  • tenant_id é a ID de seu locatário do Office 365 ao qual pertencem as contas de armazenamento permitidas e bloqueadas. Uma integração de armazenamento pode autenticar a somente um locatário e, portanto, os locais de armazenamento permitidos e bloqueados devem se referir às contas de armazenamento que pertencem a este locatário.

    Para encontrar sua ID de locatário, entre no portal Azure e clique em Azure Active Directory » Properties. A ID do locatário é exibida no campo Tenant ID.

  • container é o nome de um contêiner Azure que armazena seus arquivos de dados (por exemplo, mycontainer). Os parâmetros STORAGE_ALLOWED_LOCATIONS e STORAGE_BLOCKED_LOCATIONS permitem ou bloqueiam o acesso a esses contêineres, respectivamente, quando estágios que fazem referência a essa integração são criados ou modificados.

  • path é um caminho opcional que pode ser usado para fornecer controle granular sobre diretórios lógicos no contêiner.

O exemplo a seguir cria uma integração que limita explicitamente os estágios externos que utilizam a integração para fazer referência a um de dois contêineres ou caminhos. Em uma etapa posterior, criaremos um estágio externo que referencia um desses contêineres e caminhos. Os múltiplos estágios externos que utilizam essa integração podem fazer referência aos contêineres e caminhos permitidos:

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/');
Copy

Etapa 2: Conceder ao Snowflake acesso aos locais de armazenamento

  1. Execute o comando DESCRIBE INTEGRATION para recuperar o URL de consentimento:

    DESC STORAGE INTEGRATION <integration_name>;
    
    Copy

    Onde:

Observe os valores nas colunas seguintes:

AZURE_CONSENT_URL:

URL para a página de solicitação de permissões da Microsoft.

AZURE_MULTI_TENANT_APP_NAME:

Nome do aplicativo cliente do Snowflake criado para sua conta. Em uma etapa posterior desta seção, você precisará conceder a este aplicativo as permissões necessárias para obter um token de acesso para seus locais de armazenamento permitidos.

  1. Em um navegador da Web, navegue até o URL na coluna AZURE_CONSENT_URL. A página exibe uma página de solicitação de permissões da Microsoft.

  2. Clique no botão Accept. Esta ação permite que a entidade de segurança do serviço Azure criada para sua conta Snowflake tenha um token de acesso em recursos específicos dentro de seu locatário. A obtenção de um token de acesso só tem sucesso se você conceder à entidade de segurança de serviço as permissões apropriadas sobre o contêiner (consulte a próxima etapa).

    A página de solicitações de permissão da Microsoft é redirecionada para o site corporativo da Snowflake (snowflake.com).

  3. Faça login no portal do Microsoft Azure.

  4. Navegue até Azure Services » Storage Accounts. Clique no nome da conta de armazenamento à qual você está concedendo acesso à entidade de segurança do serviço Snowflake.

  5. Clique em Access Control (IAM) » Add role assignment.

  6. Selecione a função desejada para conceder à entidade de segurança do serviço Snowflake:

    • Storage Blob Data Reader concede acesso somente leitura. Isso permite o carregamento de dados de arquivos preparados na conta de armazenamento.

    • Storage Blob Data Contributor concede acesso para leitura e gravação. Isso permite carregar ou descarregar dados de ou para arquivos preparados na conta de armazenamento. A função também permite executar o comando REMOVE para remover arquivos preparados na conta de armazenamento.

  7. Pesquise a entidade de segurança do serviço Snowflake. Esta é a identidade na propriedade AZURE_MULTI_TENANT_APP_NAME na saída DESC STORAGE INTEGRATION (na Etapa 1). Pesquise a cadeia de cadeia de caracteres antes do sublinhado na propriedade AZURE_MULTI_TENANT_APP_NAME.

    Importante

    • Pode levar uma hora ou mais para que o Azure crie a entidade de segurança do serviço Snowflake solicitada por meio da página de solicitação da Microsoft nesta seção. Se a entidade de segurança de serviço não estiver disponível imediatamente, recomendamos esperar uma ou duas horas e depois procurar novamente.

    • Se você excluir a entidade de segurança do serviço, a integração de armazenamento deixa de funcionar.

    Adição da atribuição de função no console de armazenamento do Azure
  8. Clique no botão Review + assign.

    Nota

    • De acordo com a documentação do Microsoft Azure, as atribuições de funções podem levar até cinco minutos para se propagar.

    • O Snowflake armazena em cache as credenciais temporárias por um período que não pode exceder o tempo de expiração de 60 minutos. Se você revogar o acesso do Snowflake, os usuários podem ser capazes de listar arquivos e carregar dados a partir do local de armazenamento em nuvem até que o cache expire.

Configuração da automação com a Event Grid do Azure

Etapa 1: Configurar a assinatura da Event Grid

Esta seção descreve como configurar uma assinatura da Event Grid para eventos de armazenamento do Azure usando a CLI do Azure. Para obter mais informações sobre as etapas descritas nesta seção, consulte os seguintes artigos na documentação Azure:

Criação de um grupo de recursos

Um tópico da Event Grid fornece um ponto de extremidade para onde a origem (ou seja, o armazenamento Azure) envia eventos. Um tópico é usado para uma coleção de eventos relacionados. Os tópicos da Event Grid são recursos do Azure e devem ser colocados em um grupo de recursos do Azure.

Execute o seguinte comando para criar um grupo de recursos:

az group create --name <resource_group_name> --location <location>
Copy

Onde:

  • resource_group_name é o nome do novo grupo de recursos.

  • location é a localização, ou região na terminologia Snowflake, de sua conta do armazenamento Azure.

Habilitação do provedor de recursos da Event Grid

Execute o seguinte comando para registrar o provedor de recursos da Event Grid. Note que esta etapa só é necessária se você não tiver usado anteriormente a Event Grid com sua conta Azure:

az provider register --namespace Microsoft.EventGrid
az provider show --namespace Microsoft.EventGrid --query "registrationState"
Copy

Criação de uma conta de armazenamento para arquivos de dados

Execute o seguinte comando para criar uma conta de armazenamento para seus arquivos de dados. Esta conta deve ser de armazenamento de blobs (ou seja, do tipo BlobStorage) ou GPv2 (ou seja, do tipo StorageV2), porque somente estes dois tipos de conta suportam mensagens de eventos.

Nota

Se você já tem uma conta de armazenamento de blobs ou GPv2, pode usar essa conta em seu lugar.

Por exemplo, crie uma conta de armazenamento de blobs:

az storage account create --resource-group <resource_group_name> --name <storage_account_name> --sku Standard_LRS --location <location> --kind BlobStorage --access-tier Hot
Copy

Onde:

  • resource_group_name é o nome do grupo de recursos que você criou em Criação de um grupo de recursos.

  • storage_account_name é o nome da nova conta de armazenamento.

  • location é a localização de sua conta de armazenamento Azure.

Criação de uma conta de armazenamento para a fila de armazenamento

Execute o seguinte comando para criar uma conta de armazenamento para hospedar sua fila de armazenamento. Esta conta deve ser uma conta GPv2, porque somente este tipo de conta suporta mensagens de eventos para uma fila de armazenamento.

Nota

Se você já tem uma conta GPv2, pode usar essa conta para hospedar tanto seus arquivos de dados quanto sua fila de armazenamento.

Por exemplo, crie uma conta GPv2:

az storage account create --resource-group <resource_group_name> --name <storage_account_name> --sku Standard_LRS --location <location> --kind StorageV2
Copy

Onde:

  • resource_group_name é o nome do grupo de recursos que você criou em Criação de um grupo de recursos.

  • storage_account_name é o nome da nova conta de armazenamento.

  • location é a localização de sua conta de armazenamento Azure.

Criação de uma fila de armazenamento

Uma única fila de armazenamento Azure pode coletar as mensagens de eventos para muitas assinaturas da Event Grid. Para um melhor desempenho, o Snowflake recomenda a criação de uma única fila de armazenamento para acomodar todas as suas assinaturas relacionadas ao Snowflake.

Execute o seguinte comando para criar uma fila de armazenamento. Uma fila de armazenamento armazena um conjunto de mensagens, neste caso, mensagens de eventos da Event Grid:

az storage queue create --name <storage_queue_name> --account-name <storage_account_name>
Copy

Onde:

Exportação das IDs de conta e fila de armazenamento para referência

Execute os seguintes comandos para definir variáveis de ambiente para as IDs de conta e fila de armazenamento que serão solicitadas posteriormente nestas instruções:

  • 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>"
    
    Copy
  • 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>"
    
    Copy

Onde:

Instalação da extensão da Event Grid

Execute o seguinte comando para instalar a extensão da Event Grid para a CLI do Azure:

az extension add --name eventgrid
Copy

Criação da assinatura da Event Grid

Execute o seguinte comando para criar a assinatura da Event Grid. A assinatura de um tópico informa a Event Grid que eventos rastrear:

  • 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
    
    Copy
  • 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
    
    Copy

Onde:

Etapa 2: Criar a integração de notificação

A integração de uma notificação é um objeto Snowflake que fornece uma interface entre o Snowflake e um serviço de enfileiramento de mensagens de terceiros, como a Event Grid do Azure.

Nota

Uma única integração de notificação oferece suporte para uma única fila de armazenamento do Azure. A referência à mesma fila de armazenamento em múltiplas integrações de notificação poderia resultar na ausência de dados nas tabelas de destino porque as notificações de eventos são divididas entre as integrações de notificação. Portanto, a criação do canal será bloqueada se um canal fizer referência à mesma fila de armazenamento que um canal existente.

Recuperação da URL da fila de armazenamento e da ID do locatário

  1. Faça login no portal do Microsoft Azure.

  2. Navegue até Storage account » Queue service » Queues. Registre a URL para a fila que você criou em Criação de uma fila de armazenamento para referência posterior. A URL tem o seguinte formato:

    https://<storage_account_name>.queue.core.windows.net/<storage_queue_name>
    
    Copy
  3. Navegue até Azure Active Directory » Properties. Registre o valor Tenant ID para referência posterior. A ID do diretório, ou ID do locatário, é necessária para gerar a URL de consentimento que concede ao Snowflake acesso à assinatura da Event Grid.

Criação da integração de notificação

Crie uma integração de notificação usando o comando CREATE NOTIFICATION INTEGRATION.

Nota

  • Somente administradores de conta (usuários com a função ACCOUNTADMIN) ou uma função com o privilégio global CREATE INTEGRATION podem executar este comando SQL.

  • A entidade de serviço do Azure para integrações de notificação é diferente da entidade de serviço criada para integrações de armazenamento.

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>';
Copy

Onde:

Por exemplo:

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';
Copy

Concessão de acesso à fila de armazenamento ao Snowflake

Observe que etapas específicas nesta seção requerem uma instalação local da CLI do Azure.

  1. Execute o comando DESCRIBE INTEGRATION para recuperar o URL de consentimento:

    DESC NOTIFICATION INTEGRATION <integration_name>;
    
    Copy

    Onde:

    Observe os valores nas colunas seguintes:

    AZURE_CONSENT_URL:

    URL para a página de solicitação de permissões da Microsoft.

    AZURE_MULTI_TENANT_APP_NAME:

    Nome do aplicativo cliente do Snowflake criado para sua conta. Em uma etapa posterior desta seção, você precisará conceder a este aplicativo as permissões necessárias para obter um token de acesso para seu tópico permitido.

  2. Em um navegador da Web, navegue até o URL na coluna AZURE_CONSENT_URL. A página exibe uma página de solicitação de permissões da Microsoft.

  3. Clique no botão Accept. Esta ação permite que a entidade de segurança do serviço Azure criada para sua conta Snowflake obtenha um token de acesso a qualquer recurso dentro de seu locatário. A obtenção de um token de acesso só tem sucesso se você conceder à entidade de segurança de serviço as permissões apropriadas sobre o contêiner (consulte a próxima etapa).

    A página de solicitações de permissão da Microsoft é redirecionada para o site corporativo da Snowflake (snowflake.com).

  4. Faça login no portal do Microsoft Azure.

  5. Navegue até Azure Active Directory » Enterprise applications. Verifique se o identificador do aplicativo Snowflake que você registrou na Etapa 2 nesta seção está listado.

    Importante

    Se você excluir o aplicativo Snowflake no Azure Active Directory posteriormente, a integração da notificação deixa de funcionar.

  6. Navegue até Queues » storage_queue_name, onde storage_queue_name é o nome da fila de armazenamento que você criou em Criação de uma fila de armazenamento.

  7. Clique em Access Control (IAM) » Add role assignment.

  8. Pesquise a entidade de segurança do serviço Snowflake. Esta é a identidade na propriedade AZURE_MULTI_TENANT_APP_NAME na saída DESC NOTIFICATION INTEGRATION (na Etapa 1). Pesquise a cadeia de cadeia de caracteres antes do sublinhado na propriedade AZURE_MULTI_TENANT_APP_NAME.

    Importante

    • Pode levar uma hora ou mais para que o Azure crie a entidade de segurança do serviço Snowflake solicitada por meio da página de solicitação da Microsoft nesta seção. Se a entidade de segurança de serviço não estiver disponível imediatamente, recomendamos esperar uma ou duas horas e depois procurar novamente.

    • Se você excluir a entidade de segurança do serviço, a integração da notificação deixa de funcionar.

  9. Conceda ao aplicativo Snowflake as seguintes permissões:

    • Role: Colaborador de dados da fila de armazenamento

    • Assign access to: Usuário, grupo ou entidade de segurança do Azure AD

    • Select: O valor appDisplayName.

    O identificador do aplicativo Snowflake deve agora estar listado em Storage Queue Data Contributor (na mesma caixa de diálogo).

Etapa 3: criar um estágio (se necessário)

Crie um estágio externo que referencie seu contêiner Azure usando o comando CREATE STAGE. O Snowpipe busca seus arquivos de dados do estágio e os enfileira temporariamente antes de carregá-los na tabela de destino.

Você também pode usar um estágio externo já existente.

Nota

  • Para configurar o acesso seguro ao local de armazenamento na nuvem, consulte Configuração de acesso seguro ao armazenamento em nuvem (neste tópico).

  • Para fazer referência a uma integração de armazenamento na instrução CREATE STAGE, a função deve ter o privilégio USAGE para o objeto de integração de armazenamento.

O exemplo a seguir cria um estágio chamado mystage no esquema ativo para a sessão do usuário. O URL de armazenamento em nuvem inclui o caminho load/files. O estágio faz referência a uma integração de armazenamento chamada 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;
Copy

Nota

Use o ponto de extremidade blob.core.windows.net para todos os tipos com suporte de contas de armazenamento de blobs Azure, incluindo Data Lake Storage Gen2.

Etapa 4: criar um canal com ingestão automática habilitada

Crie um canal usando o comando CREATE PIPE. O canal define a instrução COPY INTO <tabela> usada pelo Snowpipe para carregar os dados da fila de ingestão na tabela de destino.

Por exemplo, crie um canal no esquema snowpipe_db.public que carrega os dados dos arquivos preparados no estágio mystage para a tabela 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');
Copy

Onde:

Importante

  • O nome da integração deve ser digitado em letras maiúsculas.

  • Verifique se a referência do local de armazenamento na instrução COPY INTO <tabela> instrução não se sobrepõe à referência em canais existentes na conta. Caso contrário, vários canais poderiam carregar o mesmo conjunto de arquivos de dados nas tabelas de destino. Por exemplo, esta situação pode ocorrer quando múltiplas definições de canais fazem referência ao mesmo local de armazenamento com diferentes níveis de granularidade, como <local_de_armazenamento>/path1/ e <local_de_armazenamento>/path1/path2/. Neste exemplo, se os arquivos fossem preparados em <local_armazenamento>/path1/path2/, ambos os canais carregariam uma cópia dos arquivos.

    Veja as instruções COPY INTO <tabela> nas definições de todos os canais da conta executando SHOW PIPES ou consultando a exibição PIPES em Account Usage ou a exibição PIPES no Information Schema.

O Snowpipe com ingestão automática está configurado!

Quando novos arquivos de dados são adicionados ao contêiner Azure, a mensagem de evento informa o Snowpipe para carregá-los na tabela de destino definida no canal.

Etapa 5: carregar arquivos históricos

Para carregar qualquer lista de pendências de arquivos de dados que existiam no estágio externo antes que as mensagens da Event Grid fossem configuradas, execute uma instrução ALTERPIPE … REFRESH.

Etapa 6: excluir arquivos preparados

Exclua os arquivos preparados depois de carregar os dados com sucesso e não precisar mais dos arquivos. Para obter instruções, consulte Exclusão de arquivos preparados depois que o Snowpipe carrega os dados.

Saída SYSTEM$PIPE_STATUS

A função SYSTEM$PIPE_STATUS recupera uma representação JSON do status atual de um canal.

Para canais com AUTO_INGEST definido como TRUE, a função retorna um objeto JSON contendo os seguintes pares nome/valor (se aplicável ao status atual do canal):

{«executionState»:»<valor>»,»oldestFileTimestamp»:<valor>,»pendingFileCount»:<valor>,»notificationChannelName»:»<valor>»,»numOutstandingMessagesOnChannel»:<valor>,»lastReceivedMessageTimestamp»:»<valor>»,»lastForwardedMessageTimestamp»:»<valor>»,»error»:<valor>,»fault»:<valor>}

Para descrições dos valores de saída, consulte o tópico de referência para a função SQL.