Atualização automática de tabelas de diretório para o armazenamento de blobs do Azure

Este tópico fornece instruções para criar tabelas de diretório e atualizar os metadados das tabelas de diretório automaticamente usando notificações da Event Grid do Microsoft Azure para um contêiner Azure. Esta operação sincroniza os metadados com o mais recente conjunto de arquivos associados no estágio externo e caminho, ou seja:

  • Novos arquivos no caminho são adicionados aos metadados da tabela.

  • As mudanças nos arquivos do caminho são atualizadas nos metadados da tabela.

  • Os arquivos que não estão mais no caminho são removidos dos metadados da tabela.

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

  • Armazenamento de blobs

  • Data Lake Storage Gen2

  • Uso geral v2

Observe que somente os eventos Microsoft.Storage.BlobCreated e Microsoft.Storage.BlobDeleted acionam atualizações para tabelas de diretório. 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. A Snowflake recomenda que você envie apenas eventos suportados para tabelas de diretório para reduzir custos, ruído de eventos e latência.

O Snowflake suporta as seguintes APIs Microsoft.Storage.BlobCreated:

  • CopyBlob

  • PutBlob

  • PutBlockList

  • FlushWithClose

  • SftpCommit

O Snowflake suporta as seguintes APIs Microsoft.Storage.BlobDeleted:

  • DeleteBlob

  • DeleteFile

  • SftpRemove

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, o Snowflake não atualiza a tabela de diretório.

Nota

Para executar as tarefas descritas neste tópico, você deve usar uma função que tenha o privilégio CREATE STAGE em um esquema.

Além disso, você deve ter acesso administrativo ao Microsoft Azure. Se você não for um administrador Azure, peça a seu administrador Azure que complete as etapas em Etapa 1: Configurar a assinatura da Event Grid.

Neste tópico:

Suporte para a plataforma de nuvem

O disparo de atualizações automatizadas de metadados externos usando mensagens da Event Grid do Azure tem suporte por contas Snowflake hospedadas nas seguintes plataformas de nuvem:

  • Amazon Web Services (AWS)

  • Microsoft Azure

As instruções para a configuração deste suporte são idênticas para contas em qualquer uma das plataformas de hospedagem em nuvem.

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 DeleteBlob DeleteFile SftpRemove
    
    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 DeleteBlob DeleteFile SftpRemove
    
    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 pode 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.

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 com uma tabela de diretório incluída

Crie um estágio externo que referencie seu contêiner Azure usando o comando CREATE STAGE. O Snowflake lê seus arquivos de dados preparados nos metadados da tabela de diretório. 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.

-- External stage
CREATE [ OR REPLACE ] [ TEMPORARY ] STAGE [ IF NOT EXISTS ] <external_stage_name>
      <cloud_storage_access_settings>
    [ FILE_FORMAT = ( { FORMAT_NAME = '<file_format_name>' | TYPE = { CSV | JSON | AVRO | ORC | PARQUET | XML } [ formatTypeOptions ] } ) ]
    [ directoryTable ]
    [ COPY_OPTIONS = ( copyOptions ) ]
    [ COMMENT = '<string_literal>' ]
Copy

Onde:

directoryTable (for Microsoft Azure) ::=
  [ DIRECTORY = ( ENABLE = { TRUE | FALSE }
                  [ AUTO_REFRESH = { TRUE | FALSE } ]
                  [ NOTIFICATION_INTEGRATION = '<notification_integration_name>' ] ) ]
Copy

Parâmetros da tabela de diretório (directoryTable)

ENABLE = TRUE | FALSE

Especifica se deve ser adicionada uma tabela de diretório ao estágio. Quando o valor é TRUE, uma tabela de diretório é criada com o estágio.

Padrão: FALSE

AUTO_REFRESH = TRUE | FALSE

Especifica se o Snowflake deve permitir acionar atualizações automáticas dos metadados da tabela de diretório quando os arquivos de dados novos ou atualizados estiverem disponíveis no estágio externo nomeado especificado na configuração de [ WITH ] LOCATION =.

TRUE

O Snowflake permite acionar a atualização automática dos metadados da tabela de diretório.

FALSE

O Snowflake não permite acionar atualizações automáticas dos metadados da tabela de diretório. Você deve atualizar manualmente os metadados da tabela de diretório periodicamente usando ALTER STAGE … REFRESH para sincronizar os metadados com a lista atual de arquivos no caminho do estágio.

Padrão: FALSE

Microsoft Azure

NOTIFICATION_INTEGRATION = '<nome_integração_notificação>'

Especifica o nome da integração da notificação usada para atualizar automaticamente os metadados da tabela de diretório usando as notificações de Event Grid do Azure. Uma integração de notificação é um objeto Snowflake que fornece uma interface entre o Snowflake e serviços de enfileiramento de mensagens de terceiros.

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 files. O estágio faz referência a uma integração de armazenamento chamada my_storage_int.

USE SCHEMA mydb.public;
Copy
CREATE STAGE mystage
  URL='azure://myaccount.blob.core.windows.net/load/files/'
  STORAGE_INTEGRATION = my_storage_int
  DIRECTORY = (
    ENABLE = true
    AUTO_REFRESH = true
    NOTIFICATION_INTEGRATION = 'MY_NOTIFICATION_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.

  • O local de armazenamento no valor de URL deve terminar em uma barra (/).

O parâmetro NOTIFICATION_INTEGRATION faz referência à integração my_notification_int que você criou na Etapa 2: Criar a integração de notificação. O nome da integração deve ser fornecido em letras maiúsculas.

Quando arquivos de dados novos ou atualizados são adicionados ao local de armazenamento na nuvem, a notificação de evento informa ao Snowflake para verificá-los nos metadados da tabela de diretório.

Etapa 4: atualizar manualmente os metadados da tabela de diretório

Atualize os metadados em uma tabela de diretório manualmente usando o comando ALTER STAGE.

Sintaxe

ALTER STAGE [ IF EXISTS ] <name> REFRESH [ SUBPATH = '<relative-path>' ]
Copy

Onde:

REFRESH

Acessa os arquivos de dados preparados referenciados na definição da tabela de diretório e atualiza os metadados da tabela:

  • Novos arquivos no caminho são adicionados aos metadados da tabela.

  • As mudanças nos arquivos do caminho são atualizadas nos metadados da tabela.

  • Os arquivos que não estão mais no caminho são removidos dos metadados da tabela.

Atualmente, é necessário executar este comando cada vez que arquivos são adicionados ao estágio, atualizados ou descartados. Esta etapa sincroniza os metadados com o último conjunto de arquivos associados na definição do estágio para a tabela de diretório.

SUBPATH = '<relative-path>'

Opcionalmente, especifique um caminho relativo para atualizar os metadados de um subconjunto específico dos arquivos de dados.

Exemplos

Atualizar manualmente os metadados da tabela de diretório em um estágio chamado mystage:

ALTER STAGE mystage REFRESH;
Copy

Importante

Se esta etapa não for concluída com sucesso pelo menos uma vez após a criação da tabela de diretório, a consulta da tabela de diretório não retornará nenhum resultado até que um evento de notificação acione os metadados da tabela de diretório para serem atualizados automaticamente pela primeira vez.

Etapa 5: configurar a segurança

Para cada função adicional que será usada para consultar a tabela de diretório, conceda privilégios suficientes de controle de acesso para os vários objetos (ou seja, bancos de dados, esquemas, estágio e tabela) usando GRANT <privilégios>:

Objeto

Privilégio

Notas

Banco de dados

USAGE

Esquema

USAGE

Estágio nomeado

USAGE , READ

Formato de arquivo nomeado

USAGE

Opcional; só é necessário se o estágio que você criou fizer referência a um formato de arquivo nomeado.