Pular para o conteúdo principal

Criação de tabelas no Snowflake: Tipos, exemplos e práticas recomendadas

Saiba como criar diferentes tipos de tabelas no Snowflake, incluindo tabelas permanentes, temporárias, externas e dinâmicas. Inclui exemplos passo a passo e práticas recomendadas.
Actualizado 20 de fev. de 2025  · 9 min de leitura

O Snowflake é uma poderosa plataforma de armazenamento de dados baseada em nuvem que ajuda as organizações a armazenar, gerenciar e analisar seus dados com eficiência. Ao contrário dos data warehouses tradicionais que exigem configurações complexas de hardware, o Snowflake é executado inteiramente na nuvem, o que facilita para as empresas dimensionarem suas operações de dados conforme necessário.

Criar tabelas no Snowflake é uma habilidade fundamental que forma a base do gerenciamento de dados. As tabelas são onde você armazena os dados estruturados, possibilitando a execução de consultas, a geração de relatórios e a obtenção de insights valiosos das informações. Se você estiver trabalhando com dados de clientes, números de vendas ou resultados analíticos, é essencial entender como criar e gerenciar tabelas no Snowflake.

Neste tutorial, você aprenderá tudo o que precisa saber sobre a criação de tabelas no Snowflake. Abordaremos os diferentes tipos de tabelas, mostraremos a você exemplos passo a passo e compartilharemos as práticas recomendadas para o design de tabelas. Ao final, você terá confiança para escolher o tipo certo de tabela para suas necessidades e criar tabelas que sigam os padrões do setor em termos de desempenho e facilidade de manutenção.

Entendendo os tipos de tabela no Snowflake

Antes de nos aprofundarmos nos exemplos de código sobre como criar tabelas, vamos explorar os diferentes tipos de tabela no Snowflake, pois cada um deles serve a propósitos exclusivos e tem características distintas em termos de persistência de dados, acessibilidade e local de armazenamento.

Mesas permanentes

As tabelas permanentes são o tipo de tabela padrão no Snowflake. Eles persistem até que sejam explicitamente descartados e são armazenados no armazenamento interno do Snowflake. Essas tabelas são ideais para armazenar os principais dados comerciais que precisam ser mantidos por um longo período e acessados em várias sessões. Os dados nas tabelas permanentes permanecem intactos entre as sessões e podem ser acessados por qualquer usuário autorizado.

Tabelas temporárias

As tabelas temporárias são tabelas específicas da sessão que são descartadas automaticamente quando a sessão atual termina. Elas servem como tabelas de espaço de trabalho para etapas intermediárias de processamento, ajudando a organizar transformações complexas de dados sem sobrecarregar o armazenamento permanente. Os dados nas tabelas temporárias são visíveis apenas para a sessão que os criou e são limpos automaticamente quando a sessão é encerrada.

Tabelas externas

As tabelas externas oferecem uma maneira de consultar dados que residem fora do armazenamento do Snowflake. Eles atuam como uma camada de metadados que mapeia os dados em locais de armazenamento externo, como o AWS S3 ou Azure Blob Storage. Em vez de ingerir os dados, as tabelas externas criam uma referência a eles, permitindo que você consulte os dados externos diretamente. Essa abordagem é particularmente valiosa quando se trabalha com dados que precisam permanecer em seu local de origem ou que exigem atualizações frequentes de sistemas externos.

Tabelas dinâmicas

As tabelas dinâmicas são um recurso avançado do Snowflake que mantém automaticamente os resultados atualizados de uma consulta. Eles atuam como visualizações materializadas que se atualizam automaticamente com base nas alterações nas tabelas de origem subjacentes. Ao criar uma tabela dinâmica, você a define usando uma instrução SELECT, e o Snowflake gerencia automaticamente o processo de atualização para garantir que os dados permaneçam atualizados.

As tabelas dinâmicas são particularmente úteis para você:

  • Criação de painéis em tempo real que precisam de dados atualizados sem atualizações manuais
  • Manutenção de versões agregadas ou transformadas de dados de origem que são atualizados automaticamente
  • Criar modelos de dados dependentes em que as tabelas downstream precisam refletir as alterações upstream
  • Otimização do desempenho da consulta por meio da pré-computação de transformações complexas

Os principais recursos das tabelas dinâmicas incluem:

  • Intervalos de atualização configuráveis (de 1 minuto a 24 horas)
  • Rastreamento automático de dependências das tabelas de origem
  • Configurações de tempo de atraso alvo para controlar a atualização dos dados
  • Processamento incremental para minimizar os custos de computação
  • Recursos integrados de monitoramento e otimização

Cada tipo de tabela tem sua finalidade distinta na arquitetura de dados. As tabelas permanentes formam a base do seu data warehouse, as tabelas temporárias facilitam os fluxos de trabalho de processamento de dados, as tabelas externas permitem a integração com fontes de dados externas e as tabelas dinâmicas fornecem transformações de dados automatizadas e em tempo real.

Comparação de tabelas de flocos de neve 

Na tabela abaixo, descrevemos os diferentes tipos de tabelas Snowflake em um guia conciso e de referência rápida: 

Tipo de tabela

Persistência

Visibilidade

Melhor para

Permanente

Até que você caia

Qualquer sessão

Dados comerciais essenciais

Temporário

Somente sessão

Mesma sessão

Transformações intermediárias

Externo

Armazenamento externo

Qualquer sessão

Consulta de dados externos (por exemplo, S3)

Dynamic

Atualização automática

Qualquer sessão

Análise em tempo real

Criar tabelas: Configurando o Snowflake

Antes de executar os exemplos deste tutorial, você precisará de acesso a um ambiente Snowflake. Aqui estão várias maneiras de você se conectar e executar comandos do Snowflake:

1. Interface da Web do Snowflake (Snowsight)

A maneira mais simples de começar é por meio da interface da Web do Snowflake:

  1. Faça login em sua conta conta Snowflake 
  2. Navegar para planilhas
  3. Criar uma nova planilha para executar comandos SQL

2. SnowSQL (ferramenta de linha de comando)

Para acesso à linha de comando:

  1. Install SnowSQL 
  2. Conecte-se usando:
snowsql -a <account> -u <username> -d <database> -w <warehouse>

Você pode encontrar as credenciais da sua conta Snowflake nos seguintes locais:

  1. URL da conta: Procure em seu e-mail de boas-vindas ou nas configurações da conta
  2. Nome de usuário: Fornecido durante a configuração da conta
  3. Banco de dados: Criado ou atribuído por seu administrador
  4. Armazém: Criado ou atribuído por seu administrador

Por motivos de segurança, nunca compartilhe ou confie essas credenciais. Armazene-os de forma segura em variáveis de ambiente ou em um arquivo de configuração.

3. Conexão Python

Se estiver usando Python, você poderá usar a biblioteca snowflake-connector-python:

import snowflake.connector

conn = snowflake.connector.connect(
   user='your_username',
   password='your_password',
   account='your_account',
   warehouse='your_warehouse',
   database='your_database',
   schema='your_schema'
)

cur = conn.cursor()

cur.execute("SELECT current_version()")

Observação de segurança importante:

  • Nunca armazene credenciais diretamente em seu código
  • Use variáveis de ambiente ou gerenciamento seguro de segredos
  • Para produção, considere o uso de autenticação de par de chaves
  • Siga as políticas de segurança de sua organização

Agora que nossa configuração está pronta, vamos criar tabelas!

Criação de tabelas no Snowflake: Exemplos passo a passo

Exemplo 1: Criação de uma tabela Snowflake simples

Vamos criar uma tabela para armazenar as informações do cliente. Este exemplo demonstra a criação básica de tabelas com diferentes tipos de dados e restrições.

-- Create a permanent table for customer data
CREATE OR REPLACE TABLE customers (
   customer_id INTEGER PRIMARY KEY,
   first_name VARCHAR(50) NOT NULL,
   last_name VARCHAR(50) NOT NULL,
   email VARCHAR(100) UNIQUE,
   date_of_birth DATE,
   created_at TIMESTAMP_NTZ DEFAULT CURRENT_TIMESTAMP()
);

Pontos-chave sobre este exemplo:

  • CREATE OR REPLACE TABLE - Cria uma nova tabela ou a substitui se ela já existir
  • PRIMARY KEY - Garante a identificação exclusiva de cada registro
  • NOT NULL - Evita valores nulos em campos obrigatórios
  • UNIQUE - Garante que os endereços de e-mail não sejam duplicados
  • TIMESTAMP_NTZ - Carimbo de data/hora sem fuso horário
  • DEFAULT - Define automaticamente o registro de data e hora da criação

Exemplo 2: Criação de uma tabela temporária

As tabelas temporárias são perfeitas para o processamento de dados intermediários. Aqui está um exemplo que cria uma tabela temporária para analisar os pedidos dos clientes:

-- Create a temporary table for order analysis
CREATE OR REPLACE TEMPORARY TABLE temp_order_analysis (
   order_date DATE,
   total_orders INTEGER,
   total_revenue DECIMAL(18,2)
)
AS
SELECT
   DATE_TRUNC('day', order_date) as order_date,
   COUNT(*) as total_orders,
   SUM(order_amount) as total_revenue
FROM orders
GROUP BY 1;

Pontos importantes sobre tabelas temporárias:

  • A palavra-chave TEMPORARY indica que essa tabela só existirá na sessão atual. Isso significa que outros usuários não podem ver ou acessar essa tabela.
  • O uso do site CREATE TABLE AS (CTAS) permite que você crie e preencha uma tabela em uma única etapa, combinando a definição da tabela com um comando SELECT.
  • A tabela temporária é descartada automaticamente quando a sessão termina, o que ajuda a manter o banco de dados limpo sem a necessidade de limpeza manual.
  • As tabelas temporárias são úteis para armazenar resultados intermediários durante transformações complexas de dados ou fluxos de trabalho de análise.

Exemplo 3: Criando uma tabela externa no Snowflake 

Este exemplo mostra como criar uma tabela externa que lê dados de arquivos armazenados em um bucket de armazenamento em nuvem:

-- Create file format for CSV files
CREATE OR REPLACE FILE FORMAT my_csv_format
   TYPE = CSV
   FIELD_DELIMITER = ','
   SKIP_HEADER = 1
   NULL_IF = ('NULL', 'null');

-- Create external stage
CREATE OR REPLACE STAGE my_external_stage
   URL = 's3://my-bucket/data/'
   CREDENTIALS = (AWS_KEY_ID = 'xxx' AWS_SECRET_KEY = 'xxx');

-- Create external table
CREATE OR REPLACE EXTERNAL TABLE ext_customer_data (
   customer_id VARCHAR AS (VALUE:c1::VARCHAR),
   purchase_date DATE AS (VALUE:c2::DATE),
   product_id VARCHAR AS (VALUE:c3::VARCHAR),
   amount DECIMAL(10,2) AS (VALUE:c4::DECIMAL(10,2))
)
WITH LOCATION = @my_external_stage/customers/
FILE_FORMAT = my_csv_format
PATTERN = '.*[.]csv';

A primeira instrução define uma especificação de formato de arquivo que informa ao Snowflake como analisar arquivos CSV externos, incluindo o delimitador, o tratamento de cabeçalho e as representações de valor NULL.

A segunda instrução cria um objeto de estágio que estabelece uma conexão com o armazenamento em nuvem externo (nesse caso, S3) usando as credenciais fornecidas. Esse estágio funciona como um ponto de referência para acessar os arquivos de dados externos.

O terceiro comando cria a tabela externa propriamente dita, usando definições de coluna com cláusulas AS para converter explicitamente os dados brutos de string do CSV em tipos de dados adequados do Snowflake. A cláusula WITH LOCATION aponta para o caminho específico dentro do estágio em que os arquivos residem.

O parâmetro PATTERN filtra quais arquivos devem ser incluídos usando a correspondência regex, garantindo que apenas os arquivos CSV sejam processados.

Pré-requisitos para executar essa consulta de criação de tabela externa:

1. Acesso a uma conta Snowflake com permissões para:

  • Criar formatos de arquivo
  • Criar estágios
  • Criar tabelas externas

2. Credenciais válidas do AWS (AWS_KEY_ID e AWS_SECRET_KEY ) com permissões para:

  • Ler a partir do bucket S3
  • Listar objetos no balde

3. Requisitos de dados de origem:

  • Arquivos CSV armazenados em um bucket S3
  • Os arquivos seguem um formato consistente com quatro colunas
  • Os dados da coluna correspondem aos tipos especificados:
  • customer_id como string
  • purchase_date como data
  • product_id como string
  • amount as decimal

4. Conectividade de rede:

  • Acesso de rede ao AWS S3
  • Configurações adequadas de grupo de segurança e firewall

5. Recursos de computação:

  • Armazém ativo com capacidade de computação adequada
  • Créditos/quota de usuário suficientes

Exemplo 4: Criação de uma tabela dinâmica

Este exemplo cria uma tabela dinâmica que mantém um resumo atualizado dos dados de vendas:

-- Create a dynamic table for real-time sales analytics
CREATE OR REPLACE DYNAMIC TABLE daily_sales_summary
TARGET_LAG = '20 minutes'
WAREHOUSE = 'COMPUTE_WH'
AS
SELECT
   DATE_TRUNC('day', sale_timestamp) as sale_date,
   product_category,
   SUM(sale_amount) as total_sales,
   COUNT(DISTINCT customer_id) as unique_customers
FROM sales_transactions
GROUP BY 1, 2;

O parâmetro TARGET_LAG de "20 minutos" define o atraso máximo permitido entre as atualizações da tabela de origem e o momento em que essas alterações são refletidas na tabela dinâmica. Isso garante a atualização dos dados dentro dessa janela de tempo.

O parâmetro WAREHOUSE especifica quais recursos de computação (nesse caso, COMPUTE_WH) serão usados para atualizar periodicamente a tabela dinâmica. Esse depósito deve ter capacidade adequada para lidar com as operações de atualização.

A tabela dinâmica atualiza automaticamente seu conteúdo quando a tabela subjacente sales_transactions é alterada, sem necessidade de intervenção manual. Isso fornece recursos de análise quase em tempo real.

Ao manter resumos de vendas diárias pré-agregadas agrupadas por categoria de produto, a tabela dinâmica permite consultas mais rápidas em comparação com o cálculo dessas métricas sob demanda a partir dos dados brutos da transação. Isso melhora o desempenho da consulta para casos de uso de relatórios e análises.

Cada um desses exemplos demonstra diferentes cenários de criação de tabelas que você pode encontrar em aplicativos do mundo real. Lembre-se de ajustar os nomes das colunas, os tipos de dados e outros parâmetros de acordo com suas necessidades específicas.

Práticas recomendadas para criar tabelas no Snowflake

Vamos explorar algumas práticas recomendadas que você deve seguir ao criar tabelas no Snowflake para garantir a manutenção, o desempenho e a qualidade dos dados.

1. Convenções de nomenclatura

Sempre use nomes claros e consistentes para suas tabelas e colunas:

-- Good naming examples
CREATE TABLE customer_orders (
   order_id INTEGER,
   customer_email VARCHAR,
   order_date DATE
);

-- Bad naming examples
CREATE TABLE Orders123 (
   ID INTEGER,
   email VARCHAR,
   dt DATE
);

Dicas para nomear:

  • Use letras minúsculas e sublinhados (snake_case)
  • Evite espaços e caracteres especiais
  • Faça nomes descritivos, mas não muito longos
  • Use a forma singular para nomes de tabelas (cliente e não clientes)
  • Adicione prefixos para ambientes diferentes (dev_, test_, prod_ )

2. Tipos de dados de coluna

Escolha o tipo de dados correto para economizar armazenamento e melhorar o desempenho:

-- Good data type choices
CREATE TABLE products (
   product_id INTEGER,
   price DECIMAL(10,2),    -- For money values
   name VARCHAR(100),      -- Set a reasonable limit
   description TEXT,       -- For very long text
   is_active BOOLEAN      -- Instead of VARCHAR or INTEGER
);

Tipos de dados comuns a serem usados:

  • NUMBER/INTEGER: Para números inteiros
  • DECIMAL/NUMERIC: Para números decimais precisos (especialmente dinheiro)
  • VARCHAR: Para texto com um comprimento máximo conhecido
  • TEXT: Para textos de comprimento ilimitado
  • TIMESTAMP_NTZ: Para datas e horários (sem fuso horário)
  • BOOLEAN: Para valores verdadeiro/falso

3. Usando chaves de clustering

Adicione chaves de clustering para melhorar o desempenho da consulta:

CREATE TABLE sales (
   sale_date DATE,
   store_id INTEGER,
   product_id INTEGER,
   amount DECIMAL(10,2)
)
CLUSTER BY (sale_date, store_id);

Quando você deve usar o clustering:

  • Para tabelas grandes (mais de 1 milhão de linhas)
  • Em colunas que você filtra ou une com frequência
  • Normalmente, colunas de data mais uma ou duas outras colunas
  • Não agrupe colunas com muitos valores exclusivos

4. Adição de restrições de tabela

Use restrições para manter seus dados limpos:

CREATE TABLE users (
   user_id INTEGER PRIMARY KEY,  -- Ensures unique IDs
   email VARCHAR(255) UNIQUE,    -- No duplicate emails
   username VARCHAR(50) NOT NULL, -- Must have a value
   age INTEGER CHECK (age >= 18) -- Must be 18 or older
);

Restrições importantes:

  • PRIMARY KEY: Para identificadores exclusivos
  • FOREIGN KEY: Para vincular tabelas
  • NOT NULL: Para campos obrigatórios
  • UNIQUE: Para campos que não podem ter duplicatas
  • CHECK: Para validação simples de dados

5. Erros comuns que você deve evitar

Você não deve fazer isso:

-- Bad practice: No primary key
CREATE TABLE orders (
   date VARCHAR,           -- Wrong data type for dates
   amount VARCHAR(10),     -- Wrong data type for numbers
   status text            -- Inconsistent case with other columns
);

Em vez disso, faça o seguinte:

-- Good practice
CREATE TABLE orders (
   order_id INTEGER PRIMARY KEY,
   order_date DATE,
   amount DECIMAL(10,2),
   status VARCHAR(20)
);

A versão aprimorada garante a integridade dos dados com uma chave primária, usa tipos de dados corretos para datas e números para permitir filtragem e cálculos eficientes e mantém a consistência nas definições de coluna para melhorar a legibilidade e a compatibilidade.

6. Dicas de desempenho

Ao otimizar o desempenho da tabela no Snowflake, você pode melhorar significativamente a velocidade de consulta e reduzir os custos de armazenamento. Siga estas práticas recomendadas para garantir que suas tabelas sejam eficientes e dimensionáveis.

  • Criar tabelas menores em vez de uma tabela enorme
  • Adicionar descrições de colunas usando COMMENT
  • Configurar regras de limpeza automática de dados
  • Teste o design de sua tabela com dados reais
  • Monitorar o uso da mesa e ajustar conforme necessário

7. Práticas recomendadas de segurança

Medidas de segurança adequadas são essenciais para proteger dados confidenciais e controlar o acesso. Implemente essas práticas recomendadas para proteger seu ambiente Snowflake contra acesso não autorizado e violações de dados.

  • Sempre defina as permissões de acesso adequadas
  • Use a segurança em nível de linha quando necessário
  • Criptografar colunas confidenciais
  • Mantenha o controle de quem pode acessar o quê
  • Revisar regularmente os padrões de acesso

Lembre-se: Uma mesa bem projetada facilita seu trabalho mais tarde. Reserve um tempo para planejar a estrutura da sua mesa antes de criá-la!

Conclusão

Neste tutorial, abordamos os aspectos essenciais da criação de tabelas no Snowflake, incluindo:

  • Diferentes tipos de tabelas (permanentes, temporárias, externas e dinâmicas)
  • Exemplos passo a passo para criar cada tipo
  • Práticas recomendadas para design e gerenciamento de tabelas
  • Armadilhas comuns a serem evitadas

Esse conhecimento forma a base para a criação de soluções de dados eficientes e dimensionáveis no Snowflake.

Próximas etapas

Para aprofundar sua experiência com o Snowflake, confira estes valiosos recursos:

1. Cursos interativos:

2. Tutoriais abrangentes:

3. Recursos de carreira:

Não se esqueça de que a melhor maneira de aprender é fazendo. Comece a criar tabelas, faça experiências com diferentes tipos e crie projetos reais. À medida que você encontrar desafios, consulte esses recursos e continue explorando os novos recursos do Snowflake.

Perguntas frequentes sobre o Snowflake Create Table

Quais são os diferentes tipos de tabelas no Snowflake?

O Snowflake oferece suporte a quatro tipos principais de tabelas: tabelas permanentes para armazenamento de dados de longo prazo, tabelas temporárias para uso específico da sessão, tabelas externas para consulta de fontes de dados externas e tabelas dinâmicas para manutenção automática de resultados de consultas.

Como faço para criar uma tabela básica no Snowflake?

Use o comando CREATE TABLE com o esquema que você deseja. Por exemplo: "CREATE TABLE customers (customer_id INTEGER PRIMARY KEY, first_name VARCHAR(50), last_name VARCHAR(50))". Inclua tipos de dados e restrições apropriados.

O que é uma tabela dinâmica no Snowflake e quando devo usá-la?

As tabelas dinâmicas mantêm automaticamente os resultados atualizados de uma consulta, de forma semelhante às exibições materializadas. Eles são ideais para painéis em tempo real, transformações automatizadas de dados e manutenção de dados agregados que precisam de atualizações frequentes.

Quais são as práticas recomendadas para nomear tabelas no Snowflake?

Use letras minúsculas com sublinhados (snake_case), evite espaços e caracteres especiais, faça nomes descritivos, mas concisos, use a forma singular para nomes de tabelas e considere adicionar prefixos de ambiente (dev_, test_, prod_).

Como posso melhorar o desempenho da tabela no Snowflake?

Melhore o desempenho usando chaves de clustering apropriadas, escolhendo tipos de dados corretos, definindo restrições adequadas, criando tabelas menores e focadas em vez de grandes e monitorando regularmente os padrões de uso da tabela.


Bex Tuychiev's photo
Author
Bex Tuychiev
LinkedIn

Sou um criador de conteúdo de ciência de dados com mais de 2 anos de experiência e um dos maiores seguidores no Medium. Gosto de escrever artigos detalhados sobre IA e ML com um estilo um pouco sarcástico, porque você precisa fazer algo para torná-los um pouco menos monótonos. Produzi mais de 130 artigos e um curso DataCamp, e estou preparando outro. Meu conteúdo foi visto por mais de 5 milhões de pessoas, das quais 20 mil se tornaram seguidores no Medium e no LinkedIn. 

Temas

Principais cursos da DataCamp

curso

Introduction to Snowflake

3 hr
26.2K
This course will take you from Snowflake's foundational architecture to mastering advanced SnowSQL techniques.
Ver DetalhesRight Arrow
Iniciar curso
Ver maisRight Arrow
Relacionado

blog

Qual é a melhor certificação Snowflake para 2024?

Descubra as principais certificações Snowflake para 2024 com nosso guia abrangente. Descubra qual certificação da Snowflake se alinha com seus objetivos de carreira.
Matt Crabtree's photo

Matt Crabtree

11 min

blog

As 20 principais perguntas do Snowflake para entrevistas de todos os níveis

Você está procurando um emprego que utilize o Snowflake? Prepare-se com estas 20 principais perguntas da entrevista do Snowflake para conseguir o emprego!
Nisha Arya Ahmed's photo

Nisha Arya Ahmed

20 min

tutorial

Criando e personalizando tabelas dinâmicas no Power BI

Saiba como criar tabelas dinâmicas personalizáveis no Power BI com formatação condicional avançada e algumas dicas de otimização.
Joleen Bothma's photo

Joleen Bothma

9 min

tutorial

Como criar tabelas de datas no Power BI Tutorial

Saiba como criar tabelas de datas no Power BI com este tutorial visual passo a passo.
Kafaru Simileoluwa's photo

Kafaru Simileoluwa

12 min

tutorial

Tutorial de SQLAlchemy com exemplos

Aprenda a acessar e executar consultas SQL em todos os tipos de bancos de dados relacionais usando objetos Python.
Abid Ali Awan's photo

Abid Ali Awan

13 min

tutorial

Exemplos e tutoriais de consultas SQL

Se você deseja começar a usar o SQL, nós o ajudamos. Neste tutorial de SQL, apresentaremos as consultas SQL, uma ferramenta poderosa que nos permite trabalhar com os dados armazenados em um banco de dados. Você verá como escrever consultas SQL, aprenderá sobre
Sejal Jaiswal's photo

Sejal Jaiswal

21 min

Ver maisVer mais