curso
Criação de tabelas no Snowflake: Tipos, exemplos e práticas recomendadas
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:
- Faça login em sua conta conta Snowflake
- Navegar para planilhas
- Criar uma nova planilha para executar comandos SQL
2. SnowSQL (ferramenta de linha de comando)
Para acesso à linha de comando:
- Install SnowSQL
- Conecte-se usando:
snowsql -a <account> -u <username> -d <database> -w <warehouse>
Você pode encontrar as credenciais da sua conta Snowflake nos seguintes locais:
- URL da conta: Procure em seu e-mail de boas-vindas ou nas configurações da conta
- Nome de usuário: Fornecido durante a configuração da conta
- Banco de dados: Criado ou atribuído por seu administrador
- 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á existirPRIMARY KEY
- Garante a identificação exclusiva de cada registroNOT NULL
- Evita valores nulos em campos obrigatóriosUNIQUE
- Garante que os endereços de e-mail não sejam duplicadosTIMESTAMP_NTZ
- Carimbo de data/hora sem fuso horárioDEFAULT
- 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 stringpurchase_date
como dataproduct_id
como stringamount
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 inteirosDECIMAL/NUMERIC
: Para números decimais precisos (especialmente dinheiro)VARCHAR
: Para texto com um comprimento máximo conhecidoTEXT
: Para textos de comprimento ilimitadoTIMESTAMP_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 exclusivosFOREIGN KEY
: Para vincular tabelasNOT NULL
: Para campos obrigatóriosUNIQUE
: Para campos que não podem ter duplicatasCHECK
: 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:
- Introdução ao Snowflake: Perfeito para iniciantes
- Modelagem de dados em Snowflake: Aprenda o design avançado de mesas
2. Tutoriais abrangentes:
- Floco de neve para iniciantes: Um guia completo para iniciantes
- Guia de IA do Snowflake Cortex: Explore os recursos de IA
- Introdução ao Snowpark: Saiba mais sobre a estrutura de desenvolvedor da Snowflake
- Tutorial do floco de neve ártico: Descubra os recursos de compartilhamento de dados
3. Recursos de carreira:
- Como aprender floco de neve: Crie seu caminho de aprendizado
- As melhores certificações da Snowflake: Planeje sua jornada de certificação
- Perguntas da entrevista com o Snowflake: Prepare-se para entrevistas de emprego
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.

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.
Principais cursos da DataCamp
curso
Introduction to Data Modeling in Snowflake
programa
Associate Data Engineer
blog
Qual é a melhor certificação Snowflake para 2024?
blog
As 20 principais perguntas do Snowflake para entrevistas de todos os níveis

Nisha Arya Ahmed
20 min
tutorial
Criando e personalizando tabelas dinâmicas no Power BI
tutorial
Como criar tabelas de datas no Power BI Tutorial
tutorial
Tutorial de SQLAlchemy com exemplos
tutorial