Snowpipe

O Snowpipe permite carregar dados de arquivos assim que estiverem disponíveis em um estágio. Isso significa que você pode carregar dados de arquivos em microlotes, tornando-os disponíveis aos usuários em minutos, em vez de executar manualmente instruções COPY em um cronograma para carregar lotes maiores.

Neste tópico:

Como funciona o Snowpipe?

O Snowpipe carrega dados de arquivos assim que eles estiverem disponíveis em um estágio. Os dados são carregados de acordo com a instrução COPY definida em um canal referenciado.

Um canal é um objeto do Snowflake nomeado de primeira classe, que contém uma instrução COPY usada pelo Snowpipe. A instrução COPY identifica o local de origem dos arquivos de dados (ou seja, um estágio) e uma tabela de destino. Todos os tipos de dados são suportados, incluindo tipos de dados semiestruturados, tais como JSON e Avro.

Estão disponíveis diferentes mecanismos para a detecção dos arquivos preparados:

  • Automatização do Snowpipe usando mensagens em nuvem

    Os carregamentos automatizados de dados aproveitam as notificações de eventos para armazenamento em nuvem e informam o Snowpipe sobre a chegada de novos arquivos de dados a serem carregados. O Snowpipe pesquisa as notificações de eventos de uma fila. Ao usar os metadados na fila, o Snowpipe carrega os novos arquivos de dados na tabela de destino de maneira contínua e sem servidor, com base nos parâmetros definidos em um objeto de canal especificado.

  • Chamada dos pontos de extremidade REST do Snowpipe

    Seu aplicativo cliente chama um ponto de extremidade REST público com o nome de um objeto de canal e uma lista de nomes de arquivos de dados. Se novos arquivos de dados correspondentes à lista forem descobertos no estágio referenciado pelo objeto de canal, eles são enfileirados para carregamento. Os recursos computacionais fornecidos pelo Snowflake carregam os dados da fila em uma tabela do Snowflake com base nos parâmetros definidos no canal.

Serviços de armazenamento em nuvem suportados

A tabela a seguir indica o suporte do serviço de armazenamento em nuvem para chamadas do Snowpipe automatizado e Snowpipe REST API a partir de contas Snowflake hospedadas em cada plataforma de nuvem:

Host da conta Snowflake

Amazon S3

Google Cloud Storage

Armazenamento de blobs do Microsoft Azure

Microsoft Data Lake Storage Gen2

Microsoft Azure de uso geral v2

Amazon Web Services

Google Cloud Platform

Microsoft Azure

Para obter mais informações, consulte Automatização do carregamento contínuo de dados usando mensagens em nuvem e Visão geral dos pontos de extremidade REST do Snowpipe para carregar dados.

Observe que as regiões governamentais dos provedores de nuvem não permitem o envio de notificações de eventos de ou para outras regiões comerciais. Para obter mais informações, consulte AWS GovCloud (US) e Azure Government.

Importante

O Snowflake recomenda que você habilite a filtragem de eventos da nuvem para o Snowpipe para reduzir custos, ruído de eventos e latência. Para obter mais informações sobre a configuração da filtragem de eventos para cada provedor de nuvem, consulte as seguintes páginas:

Como o Snowpipe é diferente do carregamento de dados em massa?

Esta seção descreve brevemente as principais diferenças entre o Snowpipe e um fluxo de trabalho de carregamento de dados em massa usando o comando COPY. Detalhes adicionais são fornecidos em toda a documentação do Snowpipe.

Autenticação

Carregamento de dados em massa

Baseia-se nas opções de segurança suportadas pelo cliente para autenticar e iniciar uma sessão de usuário.

Snowpipe

Ao chamar os pontos de extremidade REST: Requer autenticação de par de chaves com Token Web JSON (JWT). JWTs são assinados usando um par de chaves públicas/privadas com criptografia RSA.

Histórico de carregamento

Carregamento de dados em massa

Armazenado nos metadados da tabela de destino por 64 dias. Disponível após a conclusão da instrução COPY como saída da instrução.

Snowpipe

Armazenado nos metadados do canal por 14 dias. Deve ser solicitado ao Snowflake por meio de um ponto de extremidade REST, função de tabela SQL ou exibição ACCOUNT_USAGE.

Importante

Para evitar recarregar arquivos (e duplicar dados), recomendamos carregar dados de um conjunto específico de arquivos usando ou o carregamento de dados em massa ou o Snowpipe, mas não ambos.

Transações

Carregamento de dados em massa

Os carregamentos são sempre realizados em uma única transação. Os dados são inseridos na tabela juntamente com outras instruções SQL enviadas manualmente pelos usuários.

Snowpipe

Os carregamentos são combinados ou divididos em uma única ou várias transações com base no número e tamanho das linhas em cada arquivo de dados. Linhas de arquivos parcialmente carregados (com base na configuração da opção de cópia ON_ERROR) também podem ser combinadas ou divididas em uma ou mais transações.

Recursos de computação

Carregamento de dados em massa

Requer um warehouse especificado pelo usuário para executar as instruções COPY.

Snowpipe

Usa os recursos computacionais fornecidos pelo Snowflake.

Custo

Carregamento de dados em massa

Cobrado pelo tempo que cada warehouse virtual está ativo.

Snowpipe

Cobrado de acordo com os recursos computacionais utilizados no warehouse Snowpipe durante o carregamento dos arquivos.

Ordem de carregamento dos arquivos de dados

Para cada objeto de canal, o Snowflake estabelece uma única fila para sequenciar os arquivos de dados que aguardam carregamento. À medida que novos arquivos de dados são descobertos em um estágio, o Snowpipe os anexa à fila. Entretanto, processos múltiplos puxam os arquivos da fila; assim, enquanto o Snowpipe geralmente carrega arquivos mais antigos primeiro, não há garantia de que os arquivos sejam carregados na mesma ordem em que são preparados.

Duplicação de dados

O Snowpipe usa metadados de carregamento de arquivos associados a cada objeto de canal para evitar recarregar os mesmos arquivos (e duplicar dados) em uma tabela. Esses metadados armazenam o caminho (ou seja, o prefixo) e o nome de cada arquivo carregado e impedem o carregamento de arquivos com o mesmo nome, mesmo que tenham sido modificados posteriormente (ou seja, tenham uma eTag diferente).

Estimativa da latência do Snowpipe

Dado o número de fatores que podem diferenciar os carregamentos do Snowpipe, é muito difícil para o Snowflake estimar a latência. Formatos e tamanhos de arquivos e a complexidade das instruções COPY (incluindo a instrução SELECT usada para transformações), todos têm impacto na quantidade de tempo necessária para uma carga do Snowpipe.

Sugerimos que você experimente realizando um conjunto típico de carregamentos para estimar a latência média.

Segurança de canal

Privilégios de controle de acesso

Criação de canais

Criar e gerenciar canais requer uma função com um mínimo dos seguintes privilégios:

Objeto

Privilégio

Notas

Banco de dados

USAGE

Esquema

USAGE, CREATE PIPE

Estágio na definição do canal

USAGE

Somente estágios externos.

Estágio na definição do canal

READ

Somente estágios internos.

Tabela na definição do canal

SELECT, INSERT

Propriedade de canais

Após a criação de um canal, o proprietário do canal (ou seja, a função que tem o privilégio OWNERSHIP sobre o canal) deve ter os seguintes privilégios:

Objeto

Privilégio

Notas

Banco de dados

USAGE

Esquema

USAGE

Canal

OWNERSHIP

Estágio na definição do canal

USAGE

Somente estágios externos.

Estágio na definição do canal

READ

Somente estágios internos.

Tabela na definição do canal

SELECT, INSERT

Pausa ou retomada de canais

Além do proprietário do canal, uma função que tem as seguintes permissões mínimas pode pausar ou retomar o canal:

Objeto

Privilégio

Notas

Banco de dados

USAGE

Esquema

USAGE

Canal

OPERATE

Estágio na definição do canal

USAGE

Somente estágios externos.

Estágio na definição do canal

READ

Somente estágios internos.

Tabela na definição do canal

SELECT, INSERT

Snowpipe DDL

Para oferecer suporte à criação e ao gerenciamento de canais, o Snowflake fornece o seguinte conjunto de comandos DDL especiais:

Além disso, os provedores podem visualizar, conceder ou revogar o acesso aos objetos de banco de dados necessários para o Snowpipe usando o seguinte DDL de controle de acesso padrão: