E-commerce · 2026 · Projeto próprio

A receita que some num JOIN, sem nenhum aviso

Pipeline de ponta a ponta no Databricks, da ingestão ao Genie em português. Cada problema de qualidade é marcado e medido, nunca apagado, e 22 testes barram o Job se um número não bater.

Construído por conta própria, com dados públicos ou sintéticos.

  • Databricks
  • PySpark
  • Spark SQL
  • Delta Lake
  • Unity Catalog
  • Lakeflow
  • Asset Bundles
  • Genie
  • Claude Code
diretoria_comercial.lvdash.json

O Dashboard Comercial, um dos três por diretoria. Todo o SQL por trás dele lê uma tabela gold só, com tipo e comentário em cada coluna.

22

Testes de qualidade

Deixam o Job vermelho se um número não bater

19

Expectations na silver

Falha para o impossível, aviso para o tolerado

10/10

Aceitação do Genie

Da terceira à sexta rodada, contra SQL direto na gold

O problema

Uma loja que vende online e em loja física tem três diretorias com perguntas diferentes. O Comercial quer saber quanto vendeu, quando e em qual canal. O Customer Success, quem são os melhores clientes e onde estão. O Pricing, se a loja está mais cara que Mercado Livre, Amazon, Magalu e Shopee.

Cada resposta dependia de SQL solto e de alguém lembrar das armadilhas do dado. Um INNER JOIN descuidado derruba a receita de R$ 974.077,28 para R$ 969.837,27, sem nenhum aviso.

O desafio e o dataset sintético vêm da Imersão Jornada de Dados no Databricks.

arquitetura_negocio.excalidraw Excalidraw
01 / Excalidraw

A visão para o negócio: do dado da loja à resposta de cada diretoria, com a conferência antes de qualquer painel.

O que foi feito

Desenvolvi o pipeline de ponta a ponta no Databricks, descrito como código num Asset Bundle, com ambientes de desenvolvimento e produção e compute serverless.

  • Medalhão no Unity Catalog: bronze como chegou, silver com 19 expectations e gold com uma tabela por pergunta de diretoria.
  • Marcar e medir, nunca apagar. Problema de qualidade vira coluna e placar, e a receita não perde nenhuma venda.
  • 22 testes depois do pipeline deixam o Job vermelho se um número não bater.
  • Um dashboard por diretoria e o Genie em português, com os comentários de coluna da gold servindo de contrato para o agente.

O raciocínio de cada decisão está documentado no repositório.

ecommerce_etl.pipeline.yml Lakeflow
02 / Lakeflow

O pipeline deduz a ordem das tabelas a partir do código de cada uma: bronze, silver e gold, da esquerda para a direita.

arquitetura_tecnica.excalidraw Excalidraw
03 / Excalidraw

A visão técnica. O Job orquestra ingestão, pipeline e testes, nessa ordem; o Unity Catalog governa as três camadas, com um catálogo por ambiente.

Resultado

Cada diretoria tem o seu dashboard. O Comercial mostra R$ 974 mil em 3.020 vendas; o Customer Success, que 10 clientes VIP concentram 27,0% da receita e que o Norte é a região que mais fatura; o Pricing, 20 produtos confirmados mais caros que todos os concorrentes.

O Genie acertou 10 de 10 perguntas de aceitação a partir da terceira rodada de testes. E marcar em vez de apagar evitou uma decisão errada: o Tênis aparecia 100% acima do mercado por erro na coleta do preço do concorrente, não por preço alto.

diretoria.genie_space.yml Genie
04 / Genie

Uma das perguntas de aceitação: o total, separado entre confirmados e suspeitos, com a categoria dos suspeitos.

diretoria_customer_success.lvdash.json AI/BI Dashboard
05 / AI/BI Dashboard

Customer Success: a carteira por segmento e por região e o ranking de clientes por receita.

diretoria_pricing.lvdash.json AI/BI Dashboard
06 / AI/BI Dashboard

Pricing: o que está confirmado separado do que precisa de conferência antes de qualquer reação.

Tem um problema parecido?

Se este caso se parece com algo que você precisa resolver, numa vaga ou num projeto, a conversa começa pelo problema, não pela ferramenta.