>>> from alysson import perfil
>>> perfil.resumo()
{
'cargo': 'Data Engineer @ GP Corp BR',
'stack': ['Python', 'SQL', 'PySpark', 'Airflow', 'dbt', 'GCP'],
'todo_dia': 'um pouco de LeetCode, um pouco de dado tratado',
'porque': 'porque eu gosto mesmo é disso',
}Sou o Alysson. Engenheiro de dados que estuda todo dia porque programar é a parte boa do meu dia, não uma obrigação.
Hoje construo pipelines na GP Corp BR, do SAP até o dado pronto pra alguém usar. Fora do trabalho, treino algoritmo no LeetCode e Codeforces, e monto meu próprio roadmap de estudo pra virar um engenheiro cada vez melhor.
Dá uma olhada no que eu venho construindo:
Cada um resolve um problema diferente. Abra o que te interessar:
🔧 sap-mysql-etl: ETL que sobrevive a uma origem instável
Todo dia ele lê exportação de ERP, trata e carrega num MySQL que alimenta dashboard e forecast. O problema interessante não é volume, é que a origem muda de formato sem avisar: encoding, separador, nome de coluna, formato numérico.
O que tem dentro:
| Contrato de schema | declara o que espera da origem e aborta com mensagem útil quando quebra |
| 4 estratégias de carga | replace · truncate · date_range · upsert (todas seguras pra rodar duas vezes) |
| Falha alta, nunca silenciosa | 3 correções de bug que passavam batido no log e no exit code |
| Testável sem infra | a suíte roda em ~1s, sem banco e sem rede |
A história favorita do repo: o detector de separador fazia split(",") cru, então
todo CSV bem-formado com vírgula dentro de aspas parecia quebrado, e o
reconstrutor heurístico descartava 33% da base com um aviso no log.
Achei investigando lentidão, não erro.
Python MySQL pandas pytest
🚗 frota-brasil-pipeline: 22M linhas de frota nacional cruzadas com FIPE
Frota circulante do SENATRAN × specs técnicas da FIPE, respondendo por marca/modelo/ano quantos carros existem na rua e qual motor/combustível/potência eles têm.
SENATRAN (CKAN) ──┐
├─> raw ─┬─> stg_frota ─┐
FIPE API ─────────┘ └─> stg_fipe ──┼─> marts
- Camadas
staging → intermediate → martsno dbt, com de-para de marca como seed - Teste de granularidade (não só
not_null): a combinação marca+modelo+ano tem que ser única - CI que sobe Postgres, roda o pipeline na amostra e valida com
dbt test - 93,1% de cobertura contra o total oficial de veículos leves, e o gap está documentado
Python PostgreSQL dbt Airflow Docker
💱 etl-cotacao-moedas: ETL enxuto, feito certo
Cotação de moeda de API pública → tratamento → Postgres em Docker. Pequeno de propósito,
mas com as decisões que importam: ON CONFLICT pra não duplicar em reexecução e
NUMERIC pra valor monetário (nunca FLOAT: erro de arredondamento em dinheiro não perdoa).
Python PostgreSQL Docker
📊 analise-ecommerce-sql: análise de negócio em SQL puro
Faturamento, produto, cliente e cohort sobre um banco de e-commerce, com um arquivo de checagem de qualidade de dados separado, porque conferir a base antes de tirar conclusão dela deveria ser padrão.
SQL SQLite Python
🤖 sql-agent: pergunta em português, resposta em dado
Agente texto→SQL com a API da Anthropic: a pergunta vira query via tool use, executa em modo somente leitura e responde com base no resultado. Sem alucinar número.
Python Anthropic API SQLite
🧩 Competitive-programming: algoritmo todo dia
Soluções comentadas com abordagem, complexidade e o raciocínio atrás de cada uma. Pensar em O(n log n) vs O(n²) muda como você escreve qualquer código, não só o de competição.
Curioso por natureza. A lista de hoje: GCP / BigQuery, internals do Spark, arquitetura
distribuída, Designing Data-Intensive Applications (Kleppmann) e um problema novo por dia
no LeetCode. O cs-data-roadmap aqui do GitHub é onde eu registro tudo isso.


