Descarregamento no Microsoft Azure

Se você já possui uma conta Microsoft Azure e utiliza contêineres Azure para armazenar e gerenciar seus arquivos, pode fazer uso de seus contêineres e caminhos de pasta existentes ao descarregar os dados das tabelas Snowflake. Este tópico descreve como usar o comando COPY para descarregar dados de uma tabela para um contêiner Azure. Você pode então baixar os arquivos de dados descarregados para seu sistema de arquivos local.

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

  • Armazenamento de blobs

  • Data Lake Storage Gen2

  • Uso geral v1

  • Uso geral v2

O Snowflake não oferece suporte ao Data Lake Storage Gen1.

Como ilustrado no diagrama abaixo, o descarregamento de dados em um contêiner Azure é realizado em duas etapas:

Etapa 1:

Use o comando COPY INTO <local> para copiar os dados da tabela do banco de dados Snowflake em um ou mais arquivos em um bucket do contêiner Azure. No comando, você especifica um objeto de estágio externo nomeado que faz referência ao contêiner Azure (recomendado) ou você pode escolher descarregar diretamente para o contêiner especificando as credenciais de URI e segurança (se necessário) para o contêiner.

Independentemente do método utilizado, esta etapa requer um warehouse virtual atual e em funcionamento para a sessão se você executar o comando manualmente ou dentro de um script. O warehouse fornece os recursos computacionais para gravar linhas a partir da tabela.

Etapa 2:

Utilize as interfaces/ferramentas fornecidas pela Microsoft para baixar os arquivos do contêiner Azure.

Descarregamento de dados para o Azure

Dica

As instruções neste conjunto de tópicos supõem que você tenha lido Preparação para descarregar dados e criado um formato de arquivo nomeado, se desejar.

Antes de começar, você também pode ler Considerações sobre o descarregamento de dados para obter práticas recomendadas, dicas e outras orientações.

Neste tópico:

Permissão para IDs de sub-rede da Rede Virtual do Azure

Se um administrador do Azure em sua organização não tiver concedido explicitamente o acesso do Snowflake à sua conta de armazenamento Azure, você pode fazê-lo agora. Siga os passos indicados em Permissão de IDs da sub-rede VNet nas instruções de configuração de carregamento de dados.

Configuração de um contêiner Azure para descarregar dados

Para que o Snowflake grave em um contêiner Azure, você deve configurar o acesso à sua conta de armazenamento. Para obter instruções, consulte Configuração de um contêiner Azure para carregamento de dados. Observe que fornecemos um único conjunto de instruções, que chamam as permissões específicas necessárias para as operações de carregamento ou descarregamento de dados.

Descarregamento de dados em um estágio externo

Os estágios externos são objetos de banco de dados nomeados que proporcionam o maior grau de flexibilidade para o descarregamento de dados. Como eles são objetos de banco de dados, os privilégios para estágios nomeados podem ser concedidos a qualquer função.

Você pode criar um estágio externo nomeado usando a interface da Web ou SQL:

Classic Console:

Clique em Databases Guia Bancos de dados » <nome_bd> » Stages

SQL:

CREATE STAGE

Criação de um estágio nomeado

O exemplo seguinte cria um estágio externo chamado my_ext_unload_stage com um contêiner chamado mycontainer e um caminho de pasta chamado unload. O estágio faz referência ao objeto de formato de arquivo nomeado chamado my_csv_unload_format que foi criado em Preparação para descarregar dados:

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

Observe que os valores AZURE_SAS_TOKEN e MASTER_KEY utilizados neste exemplo são apenas para fins ilustrativos.

Descarregamento de dados para o estágio nomeado

  1. Use o comando COPY INTO <local> para descarregar dados de uma tabela para um contêiner Azure usando o estágio externo.

    O exemplo seguinte usa o estágio my_ext_unload_stage para descarregar todas as linhas da tabela mytable em um ou mais arquivos para o contêiner Azure. Um prefixo de nome de arquivo d1 é aplicado aos arquivos:

    COPY INTO @my_ext_unload_stage/d1 from mytable;
    
    Copy
  2. Utilize as ferramentas fornecidas pelo Azure para recuperar os objetos (ou seja, arquivos gerados pelo comando) do contêiner.

Descarregamento de dados diretamente em um contêiner Azure

  1. Use o comando COPY INTO <local> para descarregar dados de uma tabela diretamente para um contêiner Azure especificado. Esta opção funciona bem para descarga ad hoc, quando você não está planejando descarregar dados regularmente com a mesma tabela e parâmetros de contêineres.

    Você deve especificar o URI para o contêiner Azure e as credenciais de segurança para acessar o contêiner no comando COPY.

    O exemplo seguinte descarrega todas as linhas da tabela mytable em um ou mais arquivos com o prefixo do caminho da pasta unload/ em um contêiner Azure.

    Este exemplo refere-se a uma integração de armazenamento criada usando CREATE STORAGE INTEGRATION por um administrador de conta (ou seja, um usuário com a função ACCOUNTADMIN) ou uma função com o privilégio global CREATE INTEGRATION. Uma integração de armazenamento permite que os usuários evitem fornecer credenciais para acessar um local de armazenamento privado:

    COPY INTO 'azure://myaccount.blob.core.windows.net/mycontainer/unload/' FROM mytable STORAGE_INTEGRATION = myint;
    
    Copy
  2. Use o console Azure (ou aplicativo de cliente equivalente) para recuperar os objetos (ou seja, arquivos gerados pelo comando) do contêiner.