Visão geral do carregamento de dados¶
Este tópico fornece uma visão geral das principais opções disponíveis para carregar dados no Snowflake.
Neste tópico:
Locais de arquivos suportados¶
O Snowflake se refere à localização dos arquivos de dados no armazenamento em nuvem como um estágio. O comando COPY INTO <tabela> usado tanto para carregamentos de dados em massa quanto para carregamentos contínuos de dados (ou seja, Snowpipe) é compatível com contas de armazenamento em nuvem gerenciadas por sua entidade empresarial (ou seja, estágios externos), bem como o armazenamento em nuvem contido em sua conta Snowflake (ou seja, estágios internos).
Estágios externos¶
O carregamento de dados de qualquer um dos seguintes serviços de armazenamento em nuvem é suportado independentemente da plataforma de nuvem que hospeda sua conta Snowflake:
Amazon S3
Google Cloud Storage
Microsoft Azure
Não é possível acessar dados mantidos em classes de armazenamento em nuvem que exigem restauração antes que possam ser recuperados. Estas classes de armazenamento de arquivos incluem, por exemplo, a Amazon S3 Glacier Flexible Retrieval ou Glacier Deep Archive, o ainda o Microsoft Azure Archive Storage.
Faça o upload (ou seja, preparo) de arquivos para sua conta de armazenamento em nuvem usando as ferramentas fornecidas pelo serviço de armazenamento em nuvem.
Um estágio externo nomeado é um objeto de banco de dados criado em um esquema. Esse objeto armazena o URL para arquivos no armazenamento em nuvem, as configurações usadas para acessar a conta de armazenamento em nuvem e as configurações de conveniência, tais como as opções que descrevem o formato dos arquivos preparados. Crie estágios usando o comando CREATE STAGE.
Nota
Algumas cobranças por transferência de dados podem ser aplicadas ao carregar dados de arquivos em um serviço de armazenamento em nuvem em uma região ou plataforma de nuvem diferente de sua conta Snowflake. Para obter mais informações, consulte Explicação do custo de transferência de dados.
Estágios internos¶
O Snowflake mantém os seguintes tipos de estágios em sua conta:
- Usuário:
Um estágio do usuário é alocado a cada usuário para o armazenamento de arquivos. Este tipo de estágio é projetado para armazenar arquivos que são preparados e gerenciados por um único usuário, mas que podem ser carregados em várias tabelas. Os estágios do usuário não podem ser alterados ou descartados.
- Tabela:
Para cada tabela criada no Snowflake está disponível um estágio de tabela. Este tipo de estágio é projetado para armazenar arquivos que são preparados e gerenciados por um ou mais usuários, mas apenas carregados em uma única tabela. Os estágios da tabela não podem ser alterados ou descartados.
Note que um estágio da tabela não é um objeto separado do banco de dados; ao contrário, ele é um estágio implícito ligado à própria tabela. Um estágio da tabela não tem privilégios próprios. Para o preparo de arquivos em um estágio de tabela, listar os arquivos, consultá-los no estágio ou descartá-los, você deve ser o proprietário da tabela (ter a função com o privilégio OWNERSHIP sobre a tabela).
- Nomeado:
Um estágio interno nomeado é um objeto de banco de dados criado em um esquema. Este tipo de estágio pode armazenar arquivos que são preparados e gerenciados por um ou mais usuários e carregados em uma ou mais tabelas. Como os estágios nomeados são objetos de banco de dados, a capacidade de criá-los, modificá-los, usá-los ou descartá-los pode ser controlada por meio de privilégios de controle de acesso de segurança. Crie estágios usando o comando CREATE STAGE.
Faça o upload de arquivos para qualquer um dos tipos de estágio interno a partir de seu sistema local de arquivos usando o comando PUT.
Carregamento em massa vs. carregamento contínuo¶
O Snowflake fornece as seguintes soluções principais para o carregamento de dados. A melhor solução pode depender do volume de dados a serem carregados e da frequência do carregamento.
Carregamento em massa usando o comando COPY¶
Esta opção permite carregar lotes de dados de arquivos já disponíveis no armazenamento em nuvem ou copiar (ou seja, preparação) arquivos de dados de uma máquina local para um local de armazenamento em nuvem interno (ou seja, o Snowflake) antes de carregar os dados em tabelas usando o comando COPY.
Recursos de computação¶
O carregamento em massa depende de warehouses virtuais fornecidos pelo usuário, que são especificados na instrução COPY. Os usuários são obrigados a dimensionar o warehouse adequadamente para acomodar os carregamentos previstos.
Transformações simples durante um carregamento¶
O Snowflake oferece suporte à transformação de dados ao carregá-los em uma tabela usando o comando COPY. As opções incluem:
Reordenação de colunas
Omissão de coluna
Conversões
Truncamento de cadeias de caracteres de texto que excedam o comprimento da coluna de destino
Não há exigência de que seus arquivos de dados tenham o mesmo número e ordenação de colunas que sua tabela de destino.
Carregamento contínuo usando o Snowpipe¶
Esta opção é projetada para carregar pequenos volumes de dados (ou seja, microlotes) e disponibilizá-los incrementalmente para análise. O Snowpipe carrega os dados em minutos após os arquivos serem adicionados a um estágio e enviados para ingestão. Isso garante que os usuários tenham os resultados mais recentes, assim que os dados brutos estiverem disponíveis.
Recursos de computação¶
O Snowpipe utiliza recursos computacionais fornecidos pelo Snowflake (ou seja, um modelo computacional sem servidor). Esses recursos fornecidos pelo Snowflake são automaticamente redimensionados e escalonados para cima ou para baixo, conforme necessário, e são cobrados e discriminados usando o faturamento por segundo. A ingestão de dados é cobrada com base nas cargas de trabalho reais.
Transformações simples durante um carregamento¶
A instrução COPY em uma definição de canal é compatível com as mesmas opções de transformação COPY que durante o carregamento de dados em massa.
Além disso, os pipelines de dados podem aproveitar o Snowpipe para carregar continuamente microlotes de dados em tabelas de preparação para transformação e otimização usando tarefas automatizadas e as informações de captura de dados de alteração (CDC) em fluxos.
Pipelines de dados para transformações complexas¶
Um pipeline de dados permite aplicar transformações complexas aos dados carregados. Este fluxo de trabalho geralmente aproveita o Snowpipe para carregar dados “brutos” em uma tabela de preparação e depois utiliza uma série de tarefas e fluxos de tabela para transformar e otimizar os novos dados para análise.
Carregamento contínuo usando o Snowpipe Streaming¶
O API Snowpipe Streaming escreve linhas de dados diretamente nas tabelas Snowflake sem a exigência de arquivos de preparação. Esta arquitetura resulta em latências de carga mais baixas, com custos correspondentes mais baixos para carregar qualquer volume de dados, o que a torna uma ferramenta poderosa para lidar com fluxos de dados quase em tempo real.
O Snowpipe Streaming também está disponível para o conector Snowflake para Kafka, que oferece um caminho fácil de atualização para aproveitar a menor latência e as cargas de menor custo.
Para obter mais informações, consulte Snowpipe Streaming.
Carregamento de dados de tópicos do Apache Kafka¶
O Conector Snowflake para Kafka permite que os usuários se conectem a um servidor Apache Kafka, leiam dados de um ou mais tópicos e carreguem esses dados nas tabelas do Snowflake.
Detecção de definições de colunas em arquivos de dados semiestruturados preparados¶
Os dados semiestruturados podem incluir milhares de colunas. O Snowflake fornece soluções robustas para o tratamento desses dados. As opções incluem fazer referência aos dados diretamente no armazenamento em nuvem usando tabelas externas, carregar os dados em uma única coluna do tipo VARIANT ou transformar e carregar os dados em colunas separadas em uma tabela relacional padrão. Todas essas opções exigem algum conhecimento das definições das colunas nos dados.
Uma solução diferente envolve a detecção automática do esquema em um conjunto de arquivos de dados semiestruturados preparados e a recuperação das definições das colunas. As definições das colunas incluem os nomes, tipos de dados e ordenação das colunas nos arquivos. Gere sintaxe em um formato adequado para criar tabelas, tabelas externas ou exibições padrão do Snowflake.
Nota
Este recurso oferece suporte aos arquivos Apache Parquet, Apache Avro, ORC, JSON e CSV.
Esse suporte é implementado por meio das seguintes funções SQL:
- INFER_SCHEMA
Detecta as definições de coluna em um conjunto de arquivos de dados preparados e recupera os metadados em um formato adequado para a criação de objetos Snowflake.
- GENERATE_COLUMN_DESCRIPTION
Gera uma lista de colunas a partir de um conjunto de arquivos preparados usando a saída da função INFER_SCHEMA.
Estas funções SQL oferecem suporte tanto aos estágios internos quanto aos externos.
Crie tabelas ou tabelas externas com as definições das colunas derivadas de um conjunto de arquivos preparados usando a sintaxe CREATE TABLE … USING TEMPLATE ou CREATE EXTERNAL TABLE … USING TEMPLATE A cláusula USING TEMPLATE aceita uma expressão que chama a função INFER_SCHEMA SQL para detectar as definições de coluna nos arquivos. Uma vez criada a tabela, você pode então usar uma instrução COPY com a opção MATCH_BY_COLUMN_NAME
para carregar os arquivos diretamente na tabela estruturada.
Alternativas ao carregamento de dados¶
Você pode usar a seguinte opção para consultar seus dados no armazenamento em nuvem sem carregá-los nas tabelas do Snowflake.
Tabelas externas (data lake)¶
As tabelas externas permitem consultar os dados existentes armazenados no armazenamento externo em nuvem para análise sem primeiro carregá-los no Snowflake. A fonte confiável para os dados permanece no armazenamento externo em nuvem. Os conjuntos de dados materializados no Snowflake por meio de exibições materializadas são somente leitura.
Esta solução é especialmente benéfica para contas que têm uma grande quantidade de dados armazenados em armazenamento externo em nuvem e só querem consultar uma parte dos dados, por exemplo, os dados mais recentes. Os usuários podem criar exibições materializadas sobre subconjuntos destes dados para melhorar o desempenho das consultas.
Como trabalhar com armazenamento compatível com Amazon S3¶
Você pode criar estágios externos e tabelas externas em software e dispositivos, no local ou em uma nuvem privada, que seja altamente compatível com a API Amazon S3. Este recurso torna mais fácil e eficiente gerenciar, controlar e analisar seus dados, independentemente de onde os dados estejam fisicamente armazenados. Para obter mais detalhes, consulte Como trabalhar com armazenamento compatível com Amazon S3.