ESC
其他 3 分钟阅读

projeto-dados-ia-databricks:

projeto-dados-ia-databricks:

来源:GitHub

🧭 Imersão Jornada de Dados · Rota do Perfume

Construir a área de dados e vendas de uma distribuidora B2B do zero, em 4 noites. Empresa fictícia, dado gerado com seed fixa, sujeira proposital.

Domínio: distribuidora de perfumaria árabe — vende para perfumarias, farmácias, revendedoras e e-commerces. Stack: Databricks Free Edition (serverless), SQL, Python e Claude Code.


🗓️ As noites

NoiteDataTemaPasta
1seg 24/08Objetivo e a primeira análiseaulas/aula-01-databricks-sql · 📺 gravação
2ter 25/08Engenharia de dados: o projeto roda sozinhoaulas/aula-02-engenharia-de-dados · 📺 gravação
3qua 26/08Ciência de dados e agentesa construir

Cada pasta é autocontida: tem o próprio README, os exemplos numerados e o que for preciso rodar.

A noite 4 saiu do calendário — e por um bom motivo. Deploy não é etapa de fim de projeto: é o que acontece toda vez que você termina alguma coisa. Por isso ele acontece seis vezes dentro da noite 2, uma por prompt.


🚀 Comece por aqui

# 1. gerar o dataset (seed fixa: todo mundo gera exatamente o mesmo dado)
python3 material/gerar_dataset.py --saida ./dados --seed 42

# 2. autenticar no Databricks (cria o profile e salva a credencial)
databricks auth login

# 3. seguir a aula 01, que é toda pelo navegador
cd aulas/aula-01-databricks-sql && cat README.md

A noite 2 é a que exige terminal. O passo a passo completo — versões mínimas, o erro de credencial que quase todo mundo vê, bundle init, skills, MCP e guard rails — está em aulas/aula-02-engenharia-de-dados/README.md.

O runner scripts/run_sql.py executa qualquer .sql deste repositório no warehouse, uma statement por vez:

python3 scripts/run_sql.py aulas/aula-01-databricks-sql/exemplo-01-primeiro-select.sql

🎬 O catálogo nasce na aula

Os exemplos apontam para o catálogo lakehouse_rotaperfume, que ainda não existe — ele é criado ao vivo, no primeiro bloco da noite 1:

python3 scripts/run_sql.py aulas/aula-01-databricks-sql/00-setup-catalogo.sql

Isso é proposital. O aluno vê o catálogo nascer vazio, os schemas serem criados e o dado entrar — em vez de receber tudo pronto.

Se você já tem um catálogo com outro nome, troque o prefixo nas queries.

🗄️ O dataset

Gerado por material/gerar_dataset.py, ~14 MB, período de setembro/2024 a agosto/2026.

dados/
├── erp/    produtos · pedidos · itens_pedido · pagamentos · estoque
└── crm/    clientes · vendedores · carteira · oportunidades · visitas
TabelaLinhasO que tem
pedidos28.729cliente, vendedor, data, canal, status, valor
itens_pedido197.724SKU, quantidade, preço praticado, desconto
pagamentos27.772forma, parcelas, vencimento, status
produtos292categoria, marca, nota olfativa, custo, lançamento
estoque8.400snapshot semanal por SKU, com ruptura
clientes3.040CNPJ, razão social, segmento, cidade
visitas37.936data, resultado, duração
oportunidades5.979funil: origem, etapa, valor, motivo de perda
carteira3.637vínculo vendedor ↔ cliente, com vigência
vendedores42região, admissão, desligamento, meta

A sujeira é proposital. CNPJ em três formatos, data em dois, cliente duplicado, devolução como quantidade negativa, vendedor desligado com carteira ativa. Limpar isso é o conteúdo da noite 2 — não conserte o gerador.


📁 Estrutura

aulas/
├── aula-01-databricks-sql/          tudo pela interface: catálogo, bronze, 6 exemplos
└── aula-02-engenharia-de-dados/
    ├── prd/                         os 6 prompts (+ o reset 00) e o roteiro da noite
    ├── rotaperfume/                 o bundle DABs: raw → bronze → silver → gold → BI → Genie
    └── slides/                      gerar_slides.py — os slides como código
material/      PRD da imersão, gerador do dataset, slides
scripts/       run_sql.py — roda um .sql no warehouse
dados/         dataset gerado (não versionado — reproduza com o comando acima)

🔑 Convenções

  • Catálogo lakehouse_rotaperfume, schemas bronze / silver / gold.
  • Tabelas e colunas em snake_case e português, iguais às do CSV.
  • A bronze guarda o dado como veio, com a sujeira.
  • Sempre passe --profile nos comandos do Databricks.