Entrar ou criar conta

Laboratório: Metabase conectado a réplica PostgreSQL do TOTVS Protheus para BI de Varejo

Você terá um ambiente Metabase rodando em Docker, conectado a uma réplica PostgreSQL que simula dados extraídos do Protheus. Em cerca de 2 horas, será possível montar dashboards reais usando queries sobre tabelas-modelo baseadas em SL1, SL2, SL4, SF2, SD2, SB1 e SA1.

Análise de dados para varejo com Metabase + TOTVS Protheus + Linha Consinco
Ligado ao treinamento Análise de dados para varejo com Metabase + TOTVS Protheus + Linha Consinco

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.

Status de validaçãoNão validado pela Upnetix: roteiro derivado da documentação oficial, para você executar e validar
Duração estimada
120 min
Passos
11
Validações
5
Versões da documentação consultada
PostgreSQL 16 · Metabase v0.48.7 · Docker a versão estável atual
Objetivo

O objetivo é demonstrar, de ponta a ponta, como construir um ambiente de BI seguro e reprodutível para análise de vendas de varejo, sem acesso direto ao banco de produção do Protheus. Você irá simular a extração dos dados para PostgreSQL, configurar o Metabase em Docker, importar o driver JDBC necessário e criar consultas reais sobre um esquema didático inspirado nas tabelas do Protheus. O laboratório enfatiza boas práticas de segurança, isolamento e uso de dados apenas em leitura.

Topologia

O Metabase (em Docker, IP 192.168.56.10) conecta-se a um PostgreSQL (IP 192.168.56.11) que contém uma réplica extraída do Protheus. O acesso é somente leitura. O usuário BI acessa o Metabase via navegador em http://192.168.56.10:3000. Não há conexão direta ao banco Protheus de produção.


+------------+        +---------------+        +----------------+
| Navegador  | <-->   |  Metabase     | <-->   | PostgreSQL     |
| (BI User)  |        | (Docker)      |        | (Replica)      |
|192.168.56.1|        |192.168.56.10  |        |192.168.56.11   |
+------------+        +---------------+        +----------------+

Equipamentos e software

ItemRequisito, licença ou versão
VM ou PC para PostgreSQL1 vCPU, 2GB RAM, porta 5432 aberta, Ubuntu 22.04 ou superior
VM ou PC para Metabase (Docker)1 vCPU, 2GB RAM, porta 3000 aberta, Ubuntu 22.04 ou superior
PostgreSQLPostgreSQL License · 16
MetabaseAGPLv3 · v0.48.7
DockerApache 2.0 · a versão estável atual

Roteiro

  1. Preparar a VM do PostgreSQL

    Instale o PostgreSQL na VM dedicada. Isso isola a réplica e protege o ambiente de produção.

    sudo apt update && sudo apt install postgresql-16

    O que você deve ver: Serviço postgresql ativo e escutando na porta 5432.

  2. Criar usuário e banco para BI

    Crie um usuário de leitura e um banco chamado bi_varejo. Isso limita o acesso e separa o ambiente analítico.

    sudo -u postgres psql -c "CREATE USER bi_readonly WITH PASSWORD 'SenhaForteAqui';"
    sudo -u postgres psql -c "CREATE DATABASE bi_varejo OWNER bi_readonly;"

    O que você deve ver: Usuário e banco criados sem erro.

  3. Importar esquema didático de simulação

    Crie as tabelas-modelo inspiradas em SL1, SL2, SL4, SF2, SD2, SB1 e SA1. Use o esquema bi_varejo para simular a extração do Protheus.

    psql -U bi_readonly -d bi_varejo -h localhost

    O que você deve ver: Prompt do psql conectado ao banco bi_varejo.

  4. Criar tabelas de simulação

    Execute o SQL abaixo para criar as tabelas. Isso permite consultas reais sem expor o dicionário do fabricante.

    CREATE SCHEMA IF NOT EXISTS bi_varejo;
    
    CREATE TABLE bi_varejo.fato_venda (
      id SERIAL PRIMARY KEY,
      filial VARCHAR(4),
      num_venda VARCHAR(12),
      data_venda DATE,
      id_cliente INTEGER,
      valor_total NUMERIC(14,2),
      desconto NUMERIC(14,2)
    );
    
    CREATE TABLE bi_varejo.fato_venda_item (
      id SERIAL PRIMARY KEY,
      id_venda INTEGER REFERENCES bi_varejo.fato_venda(id),
      id_produto INTEGER,
      quantidade NUMERIC(10,2),
      valor_unitario NUMERIC(14,2),
      valor_item NUMERIC(14,2),
      desconto_item NUMERIC(14,2)
    );
    
    CREATE TABLE bi_varejo.dim_produto (
      id SERIAL PRIMARY KEY,
      codigo VARCHAR(20),
      descricao VARCHAR(100),
      categoria VARCHAR(50)
    );
    
    CREATE TABLE bi_varejo.dim_cliente (
      id SERIAL PRIMARY KEY,
      codigo VARCHAR(20),
      nome VARCHAR(100),
      segmento VARCHAR(50)
    );
    
    CREATE TABLE bi_varejo.dim_loja (
      id SERIAL PRIMARY KEY,
      codigo VARCHAR(10),
      nome VARCHAR(100),
      cidade VARCHAR(50)
    );

    O que você deve ver: Tabelas criadas sem erro no schema bi_varejo.

  5. Popular tabelas com dados de exemplo

    Insira dados fictícios para simular vendas, produtos e clientes. Isso permite testar queries e dashboards.

    INSERT INTO bi_varejo.dim_produto (codigo, descricao, categoria) VALUES ('PROD01','Arroz 5kg','Alimentos'),('PROD02','Feijão 1kg','Alimentos');
    INSERT INTO bi_varejo.dim_cliente (codigo, nome, segmento) VALUES ('CLI01','Maria Silva','Varejo'),('CLI02','João Souza','Atacado');
    INSERT INTO bi_varejo.fato_venda (filial,num_venda,data_venda,id_cliente,valor_total,desconto) VALUES ('01','00000001','2024-06-01',1,100.00,5.00);
    INSERT INTO bi_varejo.fato_venda_item (id_venda,id_produto,quantidade,valor_unitario,valor_item,desconto_item) VALUES (1,1,2,20.00,40.00,2.00),(1,2,1,60.00,60.00,3.00);

    O que você deve ver: Linhas inseridas nas tabelas de simulação.

  6. Configurar acesso remoto seguro ao PostgreSQL

    Edite o pg_hba.conf para liberar acesso apenas do IP do Metabase. Isso reduz a superfície de ataque.

    sudo nano /etc/postgresql/16/main/pg_hba.conf
    # Adicione:
    host    bi_varejo    bi_readonly    192.168.56.10/32    md5
    sudo systemctl restart postgresql

    O que você deve ver: Conexão do Metabase será permitida apenas pelo IP autorizado.

  7. Preparar a VM do Metabase com Docker

    Instale Docker e crie um diretório para plugins. O Metabase será isolado em container.

    sudo apt update && sudo apt install docker.io
    sudo mkdir -p /opt/metabase/plugins

    O que você deve ver: Docker instalado e diretório plugins criado.

  8. Baixar e rodar o Metabase em Docker

    Use a imagem oficial. Monte o diretório de plugins para drivers JDBC.

    sudo docker run -d -p 3000:3000 \
      -v /opt/metabase/plugins:/plugins \
      --name metabase \
      -e MB_PLUGINS_DIR=/plugins \
      metabase/metabase:v0.48.7

    O que você deve ver: Container Metabase rodando e acessível na porta 3000.

  9. Conectar o Metabase ao PostgreSQL

    No navegador, acesse o Metabase, crie o admin e adicione a fonte de dados PostgreSQL apontando para 192.168.56.11, banco bi_varejo, usuário bi_readonly. Isso permite explorar os dados simulados.

    O que você deve ver: Fonte de dados conectada sem erro, tabelas bi_varejo visíveis no Metabase.

  10. Criar consulta SQL realista (curva ABC)

    No Metabase, crie uma consulta SQL para curva ABC de produtos. Isso exemplifica análise de vendas de varejo.

    SELECT p.descricao, SUM(i.valor_item) AS total_vendido
    FROM bi_varejo.fato_venda_item i
    JOIN bi_varejo.dim_produto p ON i.id_produto = p.id
    GROUP BY p.descricao
    ORDER BY total_vendido DESC;

    O que você deve ver: Tabela com produtos ordenados pelo total vendido.

  11. Montar dashboard de vendas

    No Metabase, crie um dashboard e adicione a consulta criada. Isso entrega visualização pronta para o usuário de negócio.

    O que você deve ver: Dashboard exibindo gráfico de vendas por produto.

Como saber que funcionou

TesteComandoCritério
Verificar conexão do Metabase ao PostgreSQLdocker logs metabase | grep 'Successfully connected'Mensagem de conexão bem-sucedida nos logs.
Listar tabelas no MetabaseTabelas do schema bi_varejo aparecem na interface.
Executar consulta SQL de curva ABCResultados coerentes com os dados inseridos.
Acessar dashboard via navegadorDashboard carrega sem erro e exibe gráficos.
Testar usuário de leiturapsql -U bi_readonly -d bi_varejo -h 192.168.56.11Usuário conecta e não consegue executar comandos de escrita.

Troubleshooting

SintomaCausa provávelCorreção
Metabase não conecta ao PostgreSQLFirewall bloqueando porta 5432 ou pg_hba.conf não permite IP do MetabaseVerifique regras do firewall e configuração do pg_hba.conf.
Erro ao criar tabelas no PostgreSQLPermissões insuficientes ou erro de sintaxe SQLConfirme que está usando o usuário correto e revise o SQL.
Dashboard não exibe dadosConsulta SQL incorreta ou tabelas vaziasRevise a consulta e confirme se há dados nas tabelas.
Driver JDBC ausente para OracleTentando conectar Metabase a Oracle sem ojdbc8.jarBaixe o driver oficial e coloque em /opt/metabase/plugins, reinicie o container.
Usuário BI consegue alterar dadosPermissão de escrita concedida por enganoRevogue permissões de escrita do usuário bi_readonly.

Segurança e hardening

  • Nunca use usuário de produção para BI; sempre crie usuário restrito a leitura.
  • Libere acesso ao PostgreSQL apenas para o IP do Metabase.
  • Não exponha porta 3000 do Metabase para a internet sem autenticação forte.
  • Use senha forte para o usuário bi_readonly.
  • Mantenha Docker e PostgreSQL atualizados com patches de segurança.
  • Não armazene dados reais de clientes sem consentimento e adequação à LGPD.

Checklist final

Referências

  1. PostgreSQL: Official Documentation · PostgreSQL Global Development Group (postgresql.org)
  2. TOTVS Protheus - Banco de dados homologados · Tdn.totvs (tdn.totvs.com)
  3. TOTVS Protheus - DBAccess - Banco de dados · Tdn.totvs (tdn.totvs.com)
Verificação editorial
Publicado
11/09/2026
Última revisão
14/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
Encontrou um erro? Escreva para comercial@upnetix.com.br com o endereço da página. A revisão semestral por IA nunca altera comandos ou configurações sem passar pela fila de revisão.