Pipeline de engenharia de dados para ingestão, transformação e disponibilização dos dados cadastrais públicos de empresas da Receita Federal do Brasil (CNPJ), seguindo a arquitetura Medallion.
Transformar os dados abertos do CNPJ da RFB em um formato estruturado e analítico, passando pelas camadas Bronze, Silver e Gold com rastreabilidade e qualidade em cada etapa.
O principal objetivo deste projeto foi organizar os dados brutos da Receita Federal e do IBGE em uma arquitetura analítica consistente, capaz de responder a perguntas estratégicas sobre expansão de mercado.
Imagine uma empresa que deseja expandir sua atuação no Brasil. Olhar apenas para a contagem total de CNPJs por cidade é um erro comum, pois não considera o potencial econômico real das regiões. O desafio consistiu em:
- Tratamento de volume: processar milhões de registros da Receita Federal (estabelecimentos e empresas) garantindo a integridade dos dados, incluindo o tratamento de zeros à esquerda em CNPJs e CEPs.
- Cruzamento de fontes distintas: unificar dados cadastrais da RFB com indicadores macroeconômicos do IBGE.
- Modelagem em Star Schema: estruturar as camadas de dados (Staging, Intermediate e Marts) para permitir análises sem necessidade de joins complexos ou limpeza manual.
Com a modelagem final (fact_cadastro_estabelecimento cruzada com dim_municipio), o projeto permite identificar:
- municípios com PIB per capita alto e baixa densidade de empresas de grande porte;
- região com perfil de saúde econômica favorável para direcionar investimentos de marketing e expansão.
- Databricks Community Edition — plataforma de processamento distribuído
- Delta Lake — formato de armazenamento nas camadas Bronze, Silver e Gold
- dbt — transformações SQL a partir da camada Bronze
- Python / PySpark — ingestão e carga inicial
- Databricks SDK — upload de arquivos para volumes
- Scrapy — crawler para coleta dos arquivos no portal da RFB
- sidrapy — fonte de dados do PIB (IBGE/SIDRA)
- Astro — gerenciador do Airflow
- GitHub Actions — CI/CD workflows
- Great Expectations — testes de qualidade dos dados
- Astronomer Cosmos — gerenciamento do dbt nas DAGs do Airflow
Fonte (RFB)
│
▼
Staging (Volume) ← arquivos .csv brutos da RFB e do IBGE
│
▼
Bronze (Delta Table) ← dados sem tratamento, com schema/colunas básicas aplicadas (apenas para organizar em tabelas)
│
▼
Silver (dbt) ← schema aplicado, tipos corretos, colunas nomeadas
│
▼
Gold (dbt) ← agregações e visões analíticas
rfb/
├── dags/
│ ├── ingestion/
│ └── transformation/
├── jobs/ # Jobs para ingestão dos dados
├── quality/ # Validação com Data Quality
├── rfb_crawler/
│ ├── spiders/
├── src/
│ ├── ingestion/
│ └── dbt/
│ ├── models/
│ ├── macros/
│ ├── seeds/
│ ├── tests/
└── tests/
└── dags/
- CNPJ (RFB): Portal de Dados Abertos da Receita Federal — atualizado mensalmente
- PIB: API do IBGE via
sidrapy - Municípios: CSV com os códigos de municípios IBGE para cruzar a Receita com o IBGE
Pré-requisito: ter acesso ao Databricks (pode ser a Community Edition) com Unity Catalog habilitado.
No Databricks, abra um notebook e execute:
spark.sql("CREATE CATALOG IF NOT EXISTS rfb")
spark.sql("CREATE SCHEMA IF NOT EXISTS rfb.transient")
spark.sql("CREATE SCHEMA IF NOT EXISTS rfb.bronze")
spark.sql("CREATE SCHEMA IF NOT EXISTS rfb.silver")
spark.sql("CREATE SCHEMA IF NOT EXISTS rfb.gold")pip install poetry
poetry installCrie um arquivo .env na raiz do projeto com as credenciais do Databricks:
DATABRICKS_HOST=https://<your-workspace>.azuredatabricks.net
DATABRICKS_TOKEN=<your-token># Inicia uma instância do Airflow, permitindo executar as DAGs manualmente ou por agendamento
astro dev startConfigure as variáveis do Databricks para que as DAGs consigam conectar às fontes externas.
cd src/dbt
dbt deps
dbt runObservação: se quiser testar todo o fluxo, pode executar as DAGs diretamente no Airflow.
As DAGs de ingestão e transformação ficam disponíveis em localhost:8080.


