ETL & Engenharia de Dados • Parte 1

Obtenção e Preparação dos Dados da Frota Veicular Brasileira

Superando os desafios de Ingestão, Heterogeneidade de Formatos e Normalização de Fontes Públicas (RENAVAM / SENATRAN)

🐍 Python / ETL Pipeline 🗄️ SQL & Access / MS MDB 🍃 MongoDB Document Store 📦 Data Cleansing

1. Acesso à Fonte Pública e Organização Inicial

O primeiro passo do nosso estudo prático é a coleta dos dados brutos. Caso ainda não tenha acessado, a base oficial de dados abertos do Registro Nacional de Veículos Automotores (RENAVAM) está disponibilizada pelo Ministério dos Transportes no portal oficial:

🌐 https://dados.transportes.gov.br/dataset/registro-nacional-de-veiculos-automotores-renavam

⚠️ O Primeiro Obstáculo: Identificação dos Dados

Ao tentar selecionar os conjuntos de dados desejados, encontramos a primeira dificuldade prática: o portal governamental não exibe claramente o mês correspondente em cada link de download e todas as descrições dos recursos são idênticas.

Apesar da falta de rótulos claros no portal, os arquivos estão ordenados cronologicamente. Para resolver essa limitação e facilitar o fluxo de trabalho de quem está estudando o tema, estruturei e mapeei as fontes em uma planilha dedicada no GitHub:

📊 Mapeamento de Fontes: datasources_renavam.xlsx

Nota: A planilha atual contém uma amostra representativa e estruturada dos registros. Contribuições com novos mapeamentos via Pull Request são super bem-vindas!

2. Ingestão e Compactação de Arquivos

Após realizar o download das bases, o desafio seguinte está na descompactação e no gerenciamento do armazenamento local:

3. Incompatibilidade e Formatos de Bancos Legados

A segunda grande dificuldade reside na variedade de formatos de banco de dados e arquivos de texto utilizados ao longo dos anos pelo órgão governamental:

Formato / Extensão Desafio Técnico Principal Estratégia de Resolução
.mdb (MS Access antigo) Driver proprietário, compatibilidade restrita em ambiente Unix/macOS. Transferência/Mapeamento via Windows + Access ou ponte Python (pyodbc / meza).
.accdb (MS Access recente) Exige conectores ODBC específicos e licenças do ecossistema Office. Conversão intermediária ou extração via scripts de leitura de tabelas do Access.
.txt / .csv (Arquivos texto) Delimitadores variáveis, encodings diversos (UTF-8, ISO-8859-1) e alto volume. Parsing otimizado via Python Pandas com chunksize e carga paralela.

Em ambiente de desenvolvimento com macOS, por exemplo, a manipulação direta de bases .mdb / .accdb requer contornos técnicos. Por isso, a abordagem envolveu mover os arquivos para uma máquina Windows com Microsoft Access para inspeção visual rápida, antes de prosseguir com os scripts de migração automática em Python.

Visão Geral da Estrutura de Diretórios
Figura 1: Visão geral da estrutura de diretórios, destacando a variação de tamanhos e a mescla de formatos (.rar, .zip, .mdb, .txt).

Note o volume massivo das bases de dados. Esse processo de ingestão para múltiplos bancos relacionais (SQL) e não-relacionais (MongoDB) exige planejamento do espaço em disco e bastante paciência no processamento em lote.

4. Evolução da Estrutura dos Dados e Desafios de ETL

A comparação visual e estrutural entre dados históricos (ex: 2013) e dados recentes (ex: 2026) evidencia por que a sanitização e o processo de ETL (Extract, Transform, Load) são cruciais:

Dados legados no padrão do MS Access
Figura 2: Estrutura antiga em Microsoft Access (7QuantidadeVeiculosPorUFMunicipio_Marca_Modelo.mdb). Agrupamento básico e menor detalhamento por município.
Dados mais recetentes no padrão CSV
Figura 3: Estrutura recente em arquivo texto (I_Frota_por_UF_Municipio_Marca_e_Modelo_Ano_Janeiro_2026.TXT). Detalhamento granular expandido.

Pontos Críticos Identificados no Pipeline:

🎯 Próximos Passos do Projeto

Este cenário representa um excelente case de engenharia de dados para aprimorarmos nossas habilidades em sanitização de texto, normalização de schemas relacionais e criação de documentos flexíveis no MongoDB. Nas próximas etapas, detalharemos os scripts em Python que automatizam essa unificação!