Laboratório: Dashboard de Vendas do Varejo com Apache Superset e PostgreSQL (modelo bi_varejo)
Você terá um ambiente local rodando Apache Superset em Docker, conectado a um banco PostgreSQL com dados simulados no esquema bi_varejo. Em até 2 horas, será possível criar dashboards de vendas e validar consultas típicas do varejo.

Roteiro para estudo em ambiente de laboratório ou de teste. Execute apenas em equipamentos, redes e contas que você tenha autorização para usar, com backup e homologação próprios. Comandos podem causar indisponibilidade ou perda de dados. Software e marcas citados pertencem aos seus titulares. Termos de Uso.
- Duração estimada
- 120 min
- Passos
- 12
- Validações
- 5
- Versões da documentação consultada
- Docker Engine a versão estável atual · PostgreSQL 15 (documentação consultada) · Apache Superset 6.0 (documentação consultada)
Este laboratório ensina a montar, do zero, um ambiente de BI para varejo usando apenas software livre: PostgreSQL para armazenar uma réplica simulada dos dados do ERP e Apache Superset para visualização. O foco é entender como extrair, carregar e explorar dados de vendas, produtos e clientes, sem acessar o banco de produção do ERP. O modelo bi_varejo é didático e não representa o esquema real do CISSPoder ou CISSLive.
Topologia
Uma máquina local (192.168.56.10) roda Docker com dois containers: um PostgreSQL (porta 5432) com o esquema bi_varejo, e um Apache Superset (porta 8088) conectado ao PostgreSQL. O usuário acessa o Superset via navegador. Não há conexão direta com o ERP real.
+---------------------+
| Usuário/Browser |
| (localhost) |
+---------+-----------+
|
| HTTP 8088
+---------v-----------+
| Apache Superset |
| (Docker, 8088) |
+---------+-----------+
|
| TCP 5432
+---------v-----------+
| PostgreSQL |
| (Docker, 5432) |
+---------------------+
Equipamentos e software
| Item | Requisito, licença ou versão |
|---|---|
| PC ou notebook | 2 vCPU, 4 GB RAM, 15 GB livres, 1 porta Ethernet/Wi-Fi |
| Sistema operacional | Linux, Windows 10+, ou macOS com suporte a Docker |
| Docker Engine | Apache 2.0 · a versão estável atual |
| PostgreSQL | PostgreSQL License · 15 (documentação consultada) |
| Apache Superset | Apache 2.0 · 6.0 (documentação consultada) |
Roteiro
- Preparar ambiente Docker
Você precisa de Docker e Docker Compose instalados para isolar os serviços. Isso evita conflitos e facilita a limpeza.
Consulte https://docs.docker.com/get-docker/ para instalar Docker. Consulte https://docs.docker.com/compose/install/ para instalar Docker Compose.O que você deve ver: Comando 'docker --version' e 'docker compose version' retornam versões instaladas.
- Criar diretório de trabalho
Organize os arquivos do laboratório em uma pasta dedicada.
mkdir superset_lab && cd superset_labO que você deve ver: Diretório superset_lab criado e acessado.
- Criar docker-compose.yaml
Defina os serviços PostgreSQL e Superset no Docker Compose.
cat > docker-compose.yaml <<EOF version: '3.7' services: postgres: image: postgres:15 environment: POSTGRES_USER: superset POSTGRES_PASSWORD: superset POSTGRES_DB: bi_varejo ports: - "5432:5432" volumes: - ./pgdata:/var/lib/postgresql/data superset: image: apache/superset:6.0.0 environment: SUPERSET_SECRET_KEY: 'ulc_lab_secret' SUPERSET_DATABASE_URI: postgresql+psycopg2://superset:superset@postgres:5432/bi_varejo ports: - "8088:8088" depends_on: - postgres volumes: - ./docker/requirements-local.txt:/app/requirements-local.txt EOFO que você deve ver: Arquivo docker-compose.yaml criado com dois serviços definidos.
- Criar requirements-local.txt
Garanta que o Superset tenha o driver psycopg2 para PostgreSQL.
mkdir -p docker && echo 'psycopg2-binary' > docker/requirements-local.txtO que você deve ver: Arquivo requirements-local.txt criado com psycopg2-binary listado.
- Subir os containers
Inicie os serviços PostgreSQL e Superset juntos.
docker compose up -dO que você deve ver: Containers postgres e superset em execução. 'docker ps' mostra ambos UP.
- Inicializar Superset
Configure o banco de dados interno e crie o usuário admin do Superset.
docker compose exec superset superset db upgrade docker compose exec superset superset fab create-admin --username admin --firstname Admin --lastname ULC --email admin@ulc.local --password admin123 docker compose exec superset superset initO que você deve ver: Usuário admin criado e Superset inicializado.
- Popular o PostgreSQL com modelo bi_varejo
Crie o esquema de estudo e insira dados simulados para vendas, produtos e clientes.
docker compose exec postgres psql -U superset -d bi_varejo -c "CREATE SCHEMA bi_varejo;" # Crie as tabelas conforme modelo didático (exemplo para fato_venda) docker compose exec postgres psql -U superset -d bi_varejo -c "CREATE TABLE bi_varejo.fato_venda (id SERIAL PRIMARY KEY, data DATE, id_loja INT, id_cliente INT, valor_total NUMERIC);" # Repita para as demais tabelas do modelo didático (fato_venda_item, dim_produto, dim_cliente, dim_loja, dim_campanha). Consulte a documentação do PostgreSQL para sintaxe completa. # Insira linhas de exemplo em cada tabela.O que você deve ver: Tabelas criadas no esquema bi_varejo e dados de teste inseridos.
- Acessar o Superset via navegador
Abra o Superset em http://localhost:8088 e faça login como admin.
O que você deve ver: Tela de login do Superset acessível. Dashboard inicial visível após login.
- Adicionar conexão de banco de dados no Superset
No Superset, adicione a conexão ao PostgreSQL usando a URI postgresql://superset:superset@postgres:5432/bi_varejo.
O que você deve ver: Conexão testada e salva. Tabelas do esquema bi_varejo ficam disponíveis.
- Importar tabelas para o Superset
No menu Data > Datasets, importe as tabelas do esquema bi_varejo.
O que você deve ver: Datasets bi_varejo.fato_venda, bi_varejo.dim_produto, etc., disponíveis para consulta.
- Criar gráfico de vendas por loja
Monte um gráfico simples (barras ou pizza) mostrando o total de vendas por loja.
O que você deve ver: Visualização criada e exibida corretamente.
- Salvar e compartilhar dashboard
Agrupe visualizações em um dashboard e salve.
O que você deve ver: Dashboard salvo e acessível pelo menu Dashboards.
Como saber que funcionou
| Teste | Comando | Critério |
|---|---|---|
| Verificar containers em execução | docker ps | Containers postgres e superset com status UP. |
| Acessar Superset via navegador | http://localhost:8088 | Tela de login do Superset aparece. |
| Testar conexão ao PostgreSQL pelo Superset | Mensagem de conexão bem-sucedida ao salvar a URI. | |
| Visualizar dados em tabela | Preview dos dados das tabelas bi_varejo visível no Superset. | |
| Gerar gráfico de vendas | Gráfico exibe dados coerentes com os inseridos. |
Troubleshooting
| Sintoma | Causa provável | Correção |
|---|---|---|
| Superset não inicia | Dependência do banco não pronta ou erro de configuração | Verifique logs com 'docker compose logs superset' e confirme variáveis de ambiente. |
| Conexão ao PostgreSQL falha | URI de conexão incorreta ou serviço não iniciado | Revise a URI e confirme se o container postgres está UP. |
| Tabelas não aparecem no Superset | Permissões do usuário ou esquema não especificado | Confirme que o usuário superset tem acesso ao esquema bi_varejo. |
| Erro ao criar dashboard | Dados insuficientes ou erro de sintaxe SQL | Insira mais dados de teste e revise as queries. |
| Porta 8088 ocupada | Outro serviço usando a porta | Altere a porta no docker-compose.yaml ou pare o serviço conflitante. |
Segurança e hardening
- Nunca use senhas padrão em ambientes de produção
- Limite o acesso do usuário de banco a somente leitura para dados importados
- Não exponha as portas 5432 ou 8088 para a internet sem firewall
- Remova dados simulados e containers após o laboratório
Checklist final
Referências
- Documentação oficial do Apache Superset · Apache Software Foundation (Superset) (superset.apache.org)
- Documentação oficial do PostgreSQL · PostgreSQL Global Development Group (postgresql.org)
- Documentação do Docker · Docker, Inc. (docs.docker.com)
- Publicado
- 11/09/2026
- Última revisão
- 13/09/2026
- Versão do conteúdo
- 1.0
- Referências
- 3 oficiais
- Revisão técnica
- redação e revisão por IA, URLs conferidas na publicação
- Status
- Atual
