Selo de estado:
Preview(teto atual do produto) · Curso ACD-310 — Modelo semântico e modelagem dimensional · Aula 2 de 10 · Atualizado em 2026-10-04.
Objetivo#
Ao final desta aula você vai identificar, nas tabelas da Aurora Varejo, qual é o fato, quais são as dimensões e qual é o grão de cada uma.
Vídeo#
Identificador no manifesto: acd-310-02-modelagem-dimensional · duração-alvo 7 min · tela do produto: /dashboards.
Roteiro:
00:00–01:00— Por que modelar: o problema de "cada gráfico com uma definição diferente" · tela:/dashboards(dois cartões de receita divergentes)01:00–02:30— Fato × dimensão: a regra "soma ou conta = fato; agrupa ou filtra por = dimensão" · tela:/dashboards/[id](diagrama do modelo)02:30–04:00— Classificando as 5 tabelas da Aurora:vendas,produtos,clientes,filiais,calendario· tela:/dashboards/[id](lista de tabelas do modelo)04:00–05:40— Grão: o que uma linha devendasrepresenta, e por que misturar grãos infla números · tela:/dashboards/[id](amostra de linhas devendas)05:40–07:00— Modelo estrela × floco de neve: por que a estrela é o padrão recomendado · tela:/dashboards/[id](diagrama final da estrela Aurora)
Conteúdo#
Modelar começa com um vocabulário simples, que Conceitos de modelagem dimensional define e que esta aula aplica diretamente às cinco tabelas do workspace de treino Aurora Varejo (dataset aurora_gold): vendas, produtos, clientes, filiais e calendario.
Fato × dimensão
Todo modelo dimensional separa dois papéis de tabela:
| Papel | O que guarda | Regra prática |
|---|---|---|
| Fato | Os eventos mensuráveis do negócio — uma linha por ocorrência, com números que se somam. | Se você soma ou conta uma coluna dela, é fato. |
| Dimensão | O contexto que descreve os eventos: quem, o quê, onde, quando. | Se você agrupa ou filtra por uma coluna dela, é dimensão. |
Na frase "receita por categoria por mês": receita é a medida do fato; categoria vem da dimensão produtos; mês vem da dimensão calendario. O verbo muda, o papel da tabela muda.
As cinco tabelas da Aurora, classificadas
| Tabela | Papel | Por quê |
|---|---|---|
vendas | Fato | Uma linha por item vendido, com valor, quantidade, custo — números que você soma. |
produtos | Dimensão | Descreve o quê foi vendido: categoria, marca. Você agrupa e filtra por ela, nunca soma uma linha dela como receita. |
clientes | Dimensão | Descreve quem comprou: segmento, cidade. |
filiais | Dimensão | Descreve onde: uf, regiao, cidade. |
calendario | Dimensão de tempo | Descreve quando: ano, mes, trimestre. É a dimensão que a aula 6 detalha. |
No editor do dashboard (/dashboards/[id], aba do modelo), cada tabela aparece como um nó do diagrama; não existe um campo "isto é fato/isto é dimensão" para marcar — o papel é inferido pelo uso: a tabela que concentra as medidas agregadas (SOMA, CONTD, MEDIA) é o fato; as demais, ligadas a ela, são dimensões. Por isso vale fazer esse exercício de classificação antes de desenhar qualquer relação — é o assunto da aula 3.
Grão: a decisão mais importante do modelo
O grão é o que uma linha do fato representa. Em vendas, o grão é "um item de um pedido": cada linha tem um produto_id, um cliente_id, um filial_id, uma data e um valor. Definir o grão corretamente importa porque:
- Toda medida do fato é somada nesse grão.
SOMA(valor)dá a receita total porque cada linha é, de fato, um item vendido — não um pedido inteiro, não um dia. - Misturar grãos infla números. Imagine juntar
vendas(grão: item) a uma tabela de metas por filial e mês (grão: filial/mês). Somar a meta sobre esse join contaria a mesma meta uma vez por item vendido daquela filial naquele mês — um número várias vezes maior que o real.
Aviso
O ingestia.bi detecta esse estouro de linhas (fan-out) e recusa a agregação em vez de entregar um total inflado. Você vai ver esse bloqueio na prática na aula 4 — mas a causa-raiz quase sempre é esta: dois grãos diferentes somados pelo mesmo join.
Se você precisar de números em grãos diferentes — itens vendidos e metas mensais, por exemplo — o caminho correto é dois fatos ligados às mesmas dimensões, não um join forçado entre eles.
Modelo estrela × floco de neve
-
Estrela (recomendado): um fato no centro, cercado de dimensões, cada uma ligada diretamente ao fato. É o desenho que o gerador de SQL do ingestia.bi resolve melhor, e é o que a Aurora usa:
códigocalendario | clientes — vendas — produtos | filiais -
Floco de neve: dimensões normalizadas em sub-tabelas (por exemplo,
produtos→categorias→departamentos). Funciona, mas cada salto extra é mais um join. Prefira achatar a dimensão — trazercategoriaedepartamentopara dentro deprodutos— sempre que puder.
Como isso aparece no produto
Hoje a classificação fato/dimensão e o grão não têm uma tela própria — eles se expressam em três lugares concretos do editor do dashboard (/dashboards/[id]):
- Nas medidas que você cria (aula 8): toda medida agregada (
SOMA,CONTD,MEDIA) aponta para uma coluna do fato. - No diagrama de relações (aula 3): as linhas sempre saem de uma coluna-chave do fato para a coluna identificadora de uma dimensão.
- No bloqueio de fan-out (aula 4): é o próprio produto confirmando, na prática, se você respeitou o grão.
Erros comuns
- Tratar uma dimensão como fato. Tentar
SOMA(filiais.meta)direto, sem passar por uma agregação consciente do grão, é o erro mais comum de quem vem do Excel — lá, qualquer coluna numérica pode ser somada; aqui, o papel da tabela importa. - Misturar grãos no mesmo fato. Juntar linhas de granularidades diferentes numa única tabela "achada" é a origem de boa parte dos bloqueios de fan-out que você vai ver na aula 4.
- Supor que o floco de neve é "mais correto". Ele não é errado, só mais caro em joins; a estrela resolve a esmagadora maioria dos casos de uma PME.
Faça você mesmo#
No workspace de treino Aurora Varejo (abra /dashboards no console, editor de um painel, aba do modelo):
- Liste as cinco tabelas do modelo:
vendas,produtos,clientes,filiais,calendario. - Para cada uma, escreva se ela é fato ou dimensão, usando a regra "soma/conta = fato; agrupa/filtra = dimensão".
- Em
vendas, identifique as colunas numéricas que você somaria (valor,quantidade,custo) e confirme que elas só existem ali. - Em
calendario, confirme que não há nenhuma coluna que faça sentido somar — é uma dimensão pura. - Escreva, numa frase, qual é o grão de
vendas(dica: "uma linha é um/uma ___ de um ___"). - Verifique se alguma outra tabela do seu workspace real (fora da Aurora) tem grão diferente do fato principal — se tiver, anote que ela precisará de um fato separado.
Você terminou quando conseguir apontar, para as cinco tabelas da Aurora, o papel (fato/dimensão) e o grão de vendas sem consultar a tabela acima.
Checagem rápida#
Três perguntas no final da aula, corrigidas no servidor. A aula só conta como concluída depois da checagem.
Documentação relacionada#
Capacidades ensinadas#
C05.1 — o selo exibido na aula é sempre o estado mais conservador entre as capacidades citadas; nada aqui é "GA".