O que é uma tabela de fatos
No contexto de data warehousing e business intelligence, uma tabela de fatos representa a estrutura central de um banco de dados dimensional. Também conhecida como fact table, essa tabela armazena as medidas quantitativas de processos de negócio, como vendas, estoque, cliques em páginas web ou movimentações financeiras. Cada linha da tabela de fatos corresponde a um evento ou transação ocorrida no negócio, e os valores numéricos nela contidos são os indicadores que as organizações utilizam para tomar decisões. A tabela de fatos é geralmente cercada por tabelas de dimensão, que fornecem contexto descritivo — por exemplo, a dimensão tempo informa quando a venda aconteceu, a dimensão produto informa qual item foi vendido, e a dimensão cliente informa quem comprou. Essa disposição em formato de estrela ou floco de neve permite consultas rápidas e análises multidimensionais, sendo um pilar da modelagem dimensional proposta por Ralph Kimball.
Estrutura e componentes de uma tabela de fatos
A estrutura de uma tabela de fatos é composta por dois tipos principais de colunas: chaves estrangeiras que se ligam às dimensões e medidas numéricas que representam os dados quantitativos. As chaves estrangeárias garantem que cada registro na tabela de fatos possa ser associado a informações contextuais. Já as medidas são geralmente colunas numéricas que podem ser somadas ou agregadas, como quantidade vendida, preço unitário, valor total, número de itens ou tempo de processamento. A granularidade da tabela é definida pelo nível de detalhe de cada linha — por exemplo, uma linha pode representar uma venda individual de um produto em uma determinada loja e horário.

Os principais componentes de uma tabela de fatos podem ser organizados da seguinte forma:
- Chaves estrangeiras: campos que conectam a tabela a cada dimensão, como codigo_tempo, codigo_produto e codigo_cliente.
- Medidas aditivas: valores numéricos que podem ser somados em qualquer dimensão, como receita total e quantidade vendida.
- Medidas semiaditivas: valores que podem ser somados em algumas dimensões mas não em outras, como saldo de estoque (soma em produto, mas não em tempo).
- Medidas não aditivas: valores que não podem ser somados, como preço unitário ou taxa de juros; nesses casos, utilizam-se médias ou contagens.
- Colunas degeneradas: chaves apenas numéricas que não possuem dimensão própria, como número do pedido ou cupom fiscal.
Tipos de tabelas de fatos
Existem três tipos principais de tabelas de fatos, cada um adequado a diferentes necessidades analíticas. A escolha do tipo correto depende da natureza do processo de negócio e da frequência com que os dados são atualizados. A tabela a seguir resume as características e aplicações de cada tipo:

| Tipo | Descrição | Exemplo de uso | Características |
|---|---|---|---|
| Transacional | Registra cada evento individual no momento em que ocorre. | Vendas a cada transação, cliques em páginas, chamadas de atendimento. | Granularidade fina; muitas linhas; medidas aditivas predominam. |
| Snapshot periódico | Agrega dados em intervalos regulares (dia, mês, trimestre). | Resumo mensal de vendas, contagem de usuários ativos por semana. | Granularidade temporal fixa; útil para relatórios de desempenho periódicos. |
| Snapshot acumulativo | Registra o estado de um processo ao longo de seu ciclo, com atualizações constantes. | Acompanhamento de pedidos (data do pedido, data do pagamento, data da entrega). | Possui múltiplas chaves de tempo; linhas são atualizadas à medida que o processo avança. |
Cada tipo de tabela de fatos atende a uma finalidade analítica específica. As tabelas transacionais são ideais para análises detalhadas de eventos, enquanto os snapshots periódicos facilitam comparações temporais padronizadas. Já o snapshot acumulativo é especialmente útil para processos que possuem início e fim bem definidos, como logística ou manufatura.
Como usar corretamente as tabelas de fatos
O uso adequado de uma tabela de fatos começa pela definição clara do processo de negócio que será modelado. Antes de criar a tabela, é necessário identificar quais eventos ou transações são relevantes para a análise e quais métricas devem ser capturadas. Em seguida, define-se a granularidade — ou seja, o nível de detalhe de cada linha. Por exemplo, uma tabela de vendas pode ter granularidade de linha por item vendido (cada linha é um produto em uma nota fiscal) ou por pedido completo (uma linha agrega todos os itens do mesmo pedido). A granularidade influencia diretamente a quantidade de linhas e a capacidade de responder a perguntas de negócio.

Outro cuidado importante é o correto relacionamento com as tabelas de dimensão. Todas as chaves estrangeiras na tabela de fatos devem corresponder a chaves primárias nas dimensões, garantindo a integridade referencial. Além disso, as medidas devem ser escolhidas com base na sua utilidade analítica: priorizar medidas aditivas facilita agregações, enquanto medidas não aditivas podem exigir tratamento especial com médias ponderadas ou cálculos derivados. Também é recomendável evitar armazenar valores calculados que podem ser obtidos por meio de fórmulas, a menos que a performance exija pré-agregação.
Boas práticas incluem o particionamento da tabela de fatos por data, para melhorar a performance de consultas e facilitar a manutenção. Índices apropriados nas chaves estrangeiras e nas colunas de data aceleram as junções com as dimensões. Em ambientes de grande volume de dados, o uso de técnicas como compressão e armazenamento colunar pode reduzir o espaço e aumentar a velocidade das agregações. Um exemplo de fonte confiável sobre modelagem de fatos é o Kimball Group, que oferece diretrizes consolidadas para a construção de data warehouses.

Outro aspecto fundamental é evitar a armazenar dados redundantes. As tabelas de fatos devem conter apenas as medidas e as chaves estrangeiras; atributos descritivos como nome do produto ou endereço do cliente pertencem às tabelas de dimensão. Isso mantém a tabela de fatos enxuta e permite que as dimensões sejam reutilizadas em diferentes fatos. Para aprofundar o conhecimento sobre a distinção entre fatos e dimensões, o artigo da Wikipédia em português sobre tabela de fatos apresenta uma visão geral clara e acessível.
Papel das tabelas de fatos no Business Intelligence
As tabelas de fatos são a base das consultas analíticas que alimentam dashboards, relatórios e modelos de machine learning. Em uma arquitetura de BI, as ferramentas como Power BI, Tableau ou Looker se conectam ao data warehouse e executam agregações sobre as medidas, agrupando por atributos das dimensões. Por exemplo, um analista pode calcular a receita total por mês e por categoria de produto usando apenas uma tabela de fatos e suas dimensões relacionadas. A simplicidade do esquema estrela reduz a complexidade das consultas e melhora a compreensão dos dados por parte dos usuários de negócio.

Além disso, a presença de múltiplas medidas na mesma tabela de fatos permite análises cruzadas, como comparar volume de vendas com margem de lucro ou calcular o ticket médio por cliente. A tabela de fatos também é o local onde são aplicados filtros e segmentações, já que todas as informações contextuais estão ligadas a ela por meio das chaves. Com tabelas bem projetadas, as organizações conseguem responder rapidamente a perguntas como qual é o produto mais vendido por região ou qual foi a evolução das vendas nos últimos trimestres.
Referências
1. Wikipedia. Fact table. Disponível em: https://en.wikipedia.org/wiki/Fact_table
2. Kimball Group. Fact Tables. Disponível em: https://www.kimballgroup.com/2008/11/fact-tables/
3. Microsoft Fabric. Modeling fact tables. Disponível em: https://learn.microsoft.com/pl-pl/fabric/data-warehouse/dimensional-modeling-fact-tables
4. Monte Carlo Data. Fact vs. Dimension Tables. Disponível em: https://montecarlo.ai/blog-fact-vs-dimension-tables-in-data-warehousing-explained/
5. Education Wiki. What is fact table. Disponível em: https://hr.education-wiki.com/4125919-what-is-fact-table
6. Wikipédia em português. Tabela de fatos. Disponível em: https://pt.wikipedia.org/wiki/Tabela_de_fatos





