Atualização automática de tabelas externas para o armazenamento de blobs do Azure

Este tópico fornece instruções para criar tabelas externas e atualizar os metadados das tabelas externas 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

Note que apenas os eventos Microsoft.Storage.BlobCreated e Microsoft.Storage.BlobDeleted acionam a atualização de metadados de tabela externa. 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 externas 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 os metadados de tabela externa.

Nota

Para executar as tarefas descritas neste tópico, você deve usar uma função que tenha o privilégio CREATE STAGE e CREATE EXTERNAL TABLEpara 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.

Uma integração de notificação deve ser criada antes que você possa atualizar automaticamente as tabelas externas para o Azure Blob Storage.

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 (se necessário)

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

USE SCHEMA mydb.public;

CREATE STAGE mystage
  URL='azure://myaccount.blob.core.windows.net/mycontainer/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 uma tabela externa

Crie uma tabela externa usando o comando CREATE EXTERNAL TABLE.

Por exemplo, crie uma tabela externa no esquema mydb.public que leia dados JSON de arquivos preparados no estágio mystage com o caminho path1/.

O parâmetro INTEGRATION faz referência à integração de notificaçã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.

Observe que quando uma integração de notificação é fornecida, o parâmetro AUTO_REFRESH é TRUE por padrão. Se não houver integração de notificação, AUTO_REFRESH será sempre FALSE.

CREATE OR REPLACE EXTERNAL TABLE ext_table
 INTEGRATION = 'MY_NOTIFICATION_INT'
 WITH LOCATION = @mystage/path1/
 FILE_FORMAT = (TYPE = JSON);
Copy

O estágio externo com atualização automática agora está configurado!

Quando arquivos de dados novos ou atualizados são adicionados ao contêiner Azure, a notificação de evento informa ao Snowflake para verificá-los nos metadados da tabela externa.

Etapa 5: atualizar manualmente os metadados da tabela externa

Atualize manualmente os metadados da tabela externa uma vez usando ALTER EXTERNAL TABLE com o parâmetro REFRESH, por exemplo:

ALTER EXTERNAL TABLE ext_table REFRESH;

+---------------------------------------------+----------------+-------------------------------+
| file                                        | status         | description                   |
|---------------------------------------------+----------------+-------------------------------|
| files/path1/file1.json                      | REGISTERED_NEW | File registered successfully. |
| files/path1/file2.json                      | REGISTERED_NEW | File registered successfully. |
| files/path1/file3.json                      | REGISTERED_NEW | File registered successfully. |
+---------------------------------------------+----------------+-------------------------------+
Copy

Esta etapa sincroniza os metadados com a lista de arquivos no estágio e caminho na definição da tabela externa. Além disso, esta etapa garante que a tabela externa possa ler os arquivos de dados no estágio e no caminho especificados, e que nenhum arquivo tenha sido perdido na definição da tabela externa.

Se a lista de arquivos na coluna file não corresponder às suas expectativas, verifique os caminhos na definição da tabela externa e na definição do estágio externo. Qualquer caminho na definição da tabela externa é anexado a qualquer caminho especificado na definição do estágio. Para obter mais informações, consulte CREATE EXTERNAL TABLE.

Importante

Se esta etapa não for concluída com sucesso pelo menos uma vez após a criação da tabela externa, a consulta da tabela externa não retornará nenhum resultado até que uma notificação da Event Grid atualize os metadados da tabela externa automaticamente pela primeira vez.

Esta etapa garante que os metadados estejam sincronizados com quaisquer mudanças na lista de arquivos que tenham ocorrido desde a Etapa 4. Depois disso, as notificações da Event Grid acionam automaticamente a atualização dos metadados.

Etapa 6: configurar a segurança

Para cada função adicional que será usada para consultar a tabela externa, 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; necessário apenas se o estágio que você criou na Etapa 3: Criar um estágio (se necessário) fizer referência a um formato de arquivo nomeado.

Tabela externa

SELECT