O que orienta este guia
- Data warehouse integra e preserva dados para análise; não é apenas um banco transacional maior.
- Arquitetura física, modelo lógico e camada semântica resolvem problemas diferentes.
- O grão de uma tabela fato deve ser declarado antes de escolher dimensões e métricas.
- Star schema e snowflake schema têm custos distintos; nenhum é vencedor universal.
- ETL e ELT diferem principalmente pelo local da transformação, não pela obrigação de testar os dados.
- Particionamento, clustering e índices dependem do mecanismo e das consultas reais.
- Uma empresa pequena pode começar com um processo diário, poucas fontes e um único caso de uso confiável.
O que é um data warehouse?
Warehouse e banco transacional
Data lake, lakehouse e data mart
- Data lake: armazena dados estruturados, semiestruturados ou não estruturados, normalmente em arquivos e formatos variados. Pode preservar dados brutos e atender ciência de dados, processamento e exploração, mas não garante sozinho definições prontas para BI.
- Lakehouse: padrão que combina armazenamento de lake com metadados, transações, governança e recursos analíticos. A documentação da Databricks descreve sua própria implementação; isso é uma arquitetura de fornecedor, não definição universal de todo lakehouse.
- Data mart: recorte orientado a uma área ou processo, como vendas. Pode depender de um warehouse integrado ou ser criado de forma independente. Marts independentes aceleram entregas locais, mas podem multiplicar definições incompatíveis.
Três níveis que não devem ser confundidos
Arquitetura física
Modelo lógico
Camada semântica
Do sistema de origem ao consumo
- Fontes: bancos operacionais, arquivos, SaaS e eventos. Cada uma possui dono, atraso, chave e semântica próprios.
- Ingestão: copia dados por lote, captura de mudanças ou streaming sem sobrecarregar a origem.
- Staging: oferece uma área controlada para recebimento, reconciliação e reprocessamento. Não é necessariamente permanente nem aberta a analistas.
- Transformação: padroniza tipos, deduplica, aplica regras, conforma dimensões e materializa fatos.
- Warehouse: guarda modelos analíticos e histórico de forma consultável.
- Semântica e consumo: oferece métricas, nomes, permissões e caminhos para BI, notebooks, exportações ou aplicações.
ETL versus ELT: onde a transformação acontece
- se a cópia é completa ou incremental;
- se dados brutos são retidos e por quanto tempo;
- como falhas são reprocessadas sem duplicação;
- onde dados pessoais são removidos ou protegidos;
- como regras são testadas, versionadas e observadas;
- quanto custa armazenar e recalcular cada camada.
Modelagem dimensional começa pelo grão
Fatos
- aditivos: somáveis em todas as dimensões relevantes, como quantidade por item;
- semiaditivos: somáveis em algumas dimensões, mas não no tempo, como saldo de conta;
- não aditivos: razões e percentuais que precisam ser recalculados a partir dos componentes.
Dimensões
Grão
Chaves substitutas e dimensões conformadas
Slowly changing dimensions
- Tipo 1: sobrescreve o valor. Serve quando o histórico anterior não precisa ser preservado, como correção ortográfica.
- Tipo 2: cria nova linha de dimensão com período de validade. Permite que fatos antigos continuem associados à versão vigente no momento do evento.
Esquema estrela de vendas
Text
dim_date
│
dim_customer ─ fact_sales_line ─ dim_product
│
dim_channel
Grão: uma linha por item de pedido confirmado.
Chave degenerada: order_number identifica o pedido sem dimensão própria.
Fatos: quantity, gross_amount, discount_amount, net_amount.
Sql
CREATE TABLE dim_product (
product_key bigint PRIMARY KEY,
source_product_id varchar(100) NOT NULL,
product_name varchar(300) NOT NULL,
category_name varchar(200),
valid_from timestamp NOT NULL,
valid_to timestamp,
is_current boolean NOT NULL
);
CREATE TABLE fact_sales_line (
date_key integer NOT NULL,
product_key bigint NOT NULL,
customer_key bigint NOT NULL,
channel_key bigint NOT NULL,
order_number varchar(100) NOT NULL,
line_number integer NOT NULL,
quantity numeric(18, 3) NOT NULL,
gross_amount numeric(18, 2) NOT NULL,
discount_amount numeric(18, 2) NOT NULL,
net_amount numeric(18, 2) NOT NULL,
PRIMARY KEY (order_number, line_number)
);
Como a granularidade inadequada causa dupla contagem
Exemplo hipotético: frete repetido em cada item
O pedido 101 possui dois itens e frete total de R$ 30. Uma transformação cria duas linhas na fato de itens e copia shipping_amount = 30 para ambas:
SUM(net_amount) retorna corretamente R$ 150. SUM(shipping_amount) retorna R$ 60, embora o pedido tenha apenas R$ 30 de frete. Usar MAX(shipping_amount) agrupado por pedido pode corrigir este relatório específico, mas deixa a tabela perigosa para outras agregações.A correção estrutural é escolher uma destas semânticas:
| Pedido | Item | Receita líquida | Frete copiado |
|---|---|---|---|
| 101 | A | R$ 100 | R$ 30 |
| 101 | B | R$ 50 | R$ 30 |
- guardar o frete uma única vez em uma fato com grão de pedido;
- alocar o frete entre itens segundo uma regra documentada e armazenar allocated_shipping_amount;
- não expor frete no modelo por item até que a necessidade esteja definida.
Star schema e snowflake schema
Decisão, benefício, custo e sinal de uso
São sinais para investigação. O mecanismo, o volume e o padrão de consulta podem mudar a decisão.
| Decisão | Benefício procurado | Custo introduzido | Sinal de uso |
|---|---|---|---|
Star schema | Consumo simples e menos joins dimensionais | Redundância descritiva e carga de dimensões mais ampla | Analistas exploram processos recorrentes por dimensões estáveis |
Snowflake schema | Centralizar hierarquias e reduzir repetição em dimensões | Mais joins e menor legibilidade para consumo direto | Hierarquia é compartilhada, grande ou administrada separadamente |
SCD Tipo 2 | Preservar contexto histórico | Mais linhas e lógica temporal | Perguntas precisam do atributo vigente no momento do fato |
Dimensão conformada | Comparar processos com o mesmo contexto | Coordenação e governança entre equipes | Vendas, devoluções e estoque precisam compartilhar produto ou calendário |
Carga incremental | Processar somente mudanças | Controle de cursor, atraso, exclusões e reprocessamento | Carga completa já custa tempo ou interfere na origem |
Particionamento | Eliminar segmentos e administrar retenção | Escolha rígida de chave e risco de partições pequenas | Consultas filtram períodos ou outra chave compatível de forma recorrente |
Pré-agregação | Reduzir trabalho de consultas repetidas | Atualização, armazenamento e possível defasagem | Mesma agregação cara é medida muitas vezes com requisito de atualização conhecido |
Camada semântica | Reutilizar métricas e regras de join | Governança, versão e dependência da ferramenta | A mesma métrica aparece com implementações divergentes em vários consumidores |
Kimball e Inmon no contexto histórico e prático
Abordagem associada a Kimball
Abordagem associada a Inmon
Não transforme a comparação em torcida
Particionamento, clustering e indexação dependem do mecanismo
- no BigQuery, particionamento separa a tabela por uma coluna ou tempo de ingestão, enquanto clustering organiza blocos por colunas e permite eliminar blocos relevantes;
- no Snowflake, dados são organizados em micro-partições, e chaves de clustering são uma decisão adicional indicada pela documentação para tabelas muito grandes e padrões específicos;
- em bancos relacionais tradicionais, índices B-tree, BRIN, colunares ou materializações seguem regras e custos próprios.
- consulta ou carga problemática;
- volume lido e volume retornado;
- filtros e joins dominantes;
- custo de manutenção e armazenamento;
- forma de verificar se a mudança ajudou.
Incrementalidade, qualidade, linhagem e observabilidade
Cargas incrementais
Qualidade e testes
- unicidade da chave no grão declarado;
- ausência de dimensões órfãs;
- valores obrigatórios e domínios aceitos;
- reconciliação com totais controlados da origem;
- intervalos SCD sem sobreposição indevida;
- atualização dentro do acordo de disponibilidade;
- comportamento conhecido para dados atrasados e cancelamentos.
Linhagem
Observabilidade
Segurança, dados pessoais, acesso e custo
- remova campos sem finalidade analítica antes que se espalhem;
- separe identificadores diretos de atributos necessários quando possível;
- aplique menor privilégio por função e conjunto de dados;
- proteja credenciais e dados em trânsito e repouso;
- registre acessos administrativos e alterações relevantes;
- defina retenção também para staging, backups, exportações e ambientes de teste;
- teste como localizar, corrigir ou eliminar dados quando houver obrigação aplicável.
Projeto evolutivo para uma empresa pequena
Etapa 1: contrato da métrica
Etapa 2: carga diária reproduzível
Etapa 3: primeiro modelo dimensional
Etapa 4: testes e operação
Etapa 5: evoluir diante de evidência
Checklist de design e perguntas de descoberta
Antes de implementar ou ampliar o warehouse
Perguntas de negócio
- Qual decisão ou relatório será apoiado?
- Qual evento representa o fato e qual frase declara o grão?
- Quais datas possuem significados diferentes?
- Como cancelamentos, atrasos, correções e moedas são tratados?
- Quem aprova a definição da métrica?
Fontes e transformação
- Qual sistema é responsável por cada campo?
- Como inserções, alterações e exclusões serão reconhecidas?
- A carga pode ser repetida sem duplicar dados?
- Existe staging suficiente para reconciliar e reprocessar?
- Regras e versões da transformação ficam rastreáveis?
Modelo e consumo
- Fatos, dimensões e chaves respeitam o mesmo grão?
- Dimensões conformadas são necessárias entre processos?
- Cada atributo histórico tem política SCD deliberada?
- Métricas aditivas e não aditivas estão documentadas?
- A camada semântica evita definições concorrentes?
Operação, segurança e custo
- Testes verificam unicidade, integridade, reconciliação e atualização?
- Linhagem, dono e procedimento de incidente estão registrados?
- Dados pessoais têm finalidade, acesso e retenção definidos?
- Consultas analíticas estão isoladas do sistema transacional quando necessário?
- Armazenamento, processamento, BI, tráfego e operação entram no orçamento?
Arquitetura suficiente é melhor que arquitetura ornamental
Continue pelo desenho e pelo uso das métricas
Referências
- Kimball Group: Dimensional Modeling Techniques. Biblioteca de grão, fatos, dimensões conformadas e SCD. Acesso em 8 de agosto de 2026.
- Kimball, Ralph; Ross, Margy. The Data Warehouse Toolkit, 3ª ed.. Wiley, 2013.
- Inmon, William H. Building the Data Warehouse, 4ª ed.. Wiley, 2005.
- Microsoft Learn: Dimensional modeling in Fabric Warehouse. Referência de star schema, fatos e dimensões. Acesso em 8 de agosto de 2026.
- Azure Architecture Center: Extract, transform, and load. Distinção entre ETL e ELT. Acesso em 8 de agosto de 2026.
- Google Cloud: Introduction to partitioned tables. Comportamento específico de particionamento e clustering no BigQuery. Acesso em 8 de agosto de 2026.
- Snowflake: Understanding table structures e clustering keys. Comportamento físico específico da plataforma. Acesso em 8 de agosto de 2026.
- Databricks: What is a data lakehouse?. Definição e implementação do fornecedor. Acesso em 8 de agosto de 2026.
- ANPD: materiais educativos e publicações. Guias de segurança, agentes de tratamento e proteção de dados. Acesso em 8 de agosto de 2026.