Ao final deste tutorial você terá um modelo estrela funcionando: o fato
vendas ligado às dimensões produtos, clientes, filiais e calendario,
pronto para cruzar receita por qualquer atributo sem inflar número.
Se os termos "fato", "dimensão" e "cardinalidade" forem novos, leia antes Conceitos de modelagem dimensional e Relacionamentos e cardinalidade.
Workspace do exemplo: Comércio Aurora Ltda (workspace aurora, dataset
aurora_gold).
Maturidade
O motor de modelagem é GA-candidato (congelado por um conjunto de testes de referência). A execução
das consultas no datalake de produção é NÃO MEDIDO sem o datalake configurado; em
modo demonstração, os visuais mostram dados fixos (SP/RJ/MG).
Pré-requisitos#
- Um workspace ativo e as tabelas no dataset
aurora_gold(ou o modo demonstração). - As tabelas com colunas-chave compatíveis (veja abaixo).
- Papel com permissão de editar o modelo (ver Papéis (RBAC)).
As tabelas do exemplo#
| Tabela | Papel | Chave |
|---|---|---|
vendas | Fato (grão: item de pedido) | produto_id, cliente_id, filial_id, data |
produtos | Dimensão | id, categoria, marca |
clientes | Dimensão | id, segmento, cidade |
filiais | Dimensão | id, uf, regiao, cidade |
calendario | Dimensão de tempo | data, ano, mes, trimestre |
Passo a passo#
Abra o diagrama do modelo
No editor do dashboard, abra o diagrama do modelo semântico (ver Modelo semântico).
Confirme o fato
Verifique que
vendasestá no centro. Ele guarda os números que você vai somar (valor,quantidade,custo).Ligue produtos
Arraste de
vendas.produto_idatéprodutos.id. Cardinalidade N-1 (muitas vendas para um produto), direção de filtro single (produtos → vendas).Ligue clientes e filiais
Repita:
vendas.cliente_id→clientes.idevendas.filial_id→filiais.id, ambas N-1 / single.Ligue o calendário
Ligue
vendas.data→calendario.data(N-1 / single). É esta relação que habilita as comparações temporais.Marque a categoria geográfica
Em
filiais, marqueufcomo categoria geográfica (UF) para habilitar os mapas do Brasil.Valide com um visual
Crie um gráfico de barras "receita por
produtos.categoria" e confirme que o valor cruzavendas×produtos.
Exemplo de dados (sintéticos)#
vendas:
| produto_id | cliente_id | filial_id | data | valor |
|---|---|---|---|---|
| 10 | 1 | 1 | 2026-07-01 | 250 |
| 11 | 2 | 2 | 2026-07-02 | 90 |
produtos: (10, Bebidas, Marca A), (11, Limpeza, Marca B).
Resultado esperado#
- "Receita por categoria" mostra Bebidas=250, Limpeza=90.
- Trocar o eixo para
filiais.regiaoouclientes.segmentofunciona sem reconfigurar nada — é o ganho da estrela. - Somar uma coluna de uma dimensão que o join duplicaria é bloqueado com aviso, não entregue inflado (proteção anti-fan-out).
Erros comuns#
- Ligar pela coluna errada: confirme que a chave do fato aponta para a coluna
identificadora da dimensão (
id,data), não para um atributo qualquer. - N-N sem ponte: se duas tabelas são muitos-para-muitos (ex.: produtos × promoções), você precisa de uma tabela-ponte — ver Relacionamentos e cardinalidade.
- Somar meta do lado "um": se der bloqueio ao somar uma coluna da dimensão, o problema é de grão; some do fato correto.
Próximos passos#
- Tutorial: tabela calendário para inteligência de tempo.
- Tutorial: medidas e comparações temporais.
- Tutorial: dashboard comercial.
Relacionados#
Última revisão: 2026-09-08.