infosiga-fetcher¶
O infosiga-fetcher baixa os dados abertos do Infosiga-SP (sistema de informações de sinistros de trânsito do Estado de São Paulo, do Detran-SP) e converte os CSVs para o lake Hive em Parquet.
| Fonte | Detran-SP, painel Infosiga (infosiga.detran.sp.gov.br) |
| Formato | ZIP com CSVs (;, cp1252) |
| Organização | 2 grupos: dados (1 arquivo) e dicionario (1 arquivo) |
| Escopo do pacote | download e conversão para Parquet. A carga em banco não faz parte dele |
Pacote ainda não publicado
O pacote está na branch feat/r1 e ainda não tem release no índice. Os comandos abaixo valem a partir da primeira publicação.
Instalação¶
# Via CLI unificada (recomendado)
quantilica install infosiga --extra analysis
# Ou como biblioteca no seu projeto
uv add 'infosiga-fetcher[analysis]' --index https://index.quantilica.com/simple/
O extra analysis é necessário para a conversão ao lake.
Requisitos: Python 3.12+
Primeiro dado¶
quantilica infosiga sync -o ./data/infosiga
Comandos¶
| Comando | O que faz |
|---|---|
quantilica infosiga list |
Lista os arquivos dos grupos |
quantilica infosiga check |
Compara o disco com o remoto, sem baixar |
quantilica infosiga sync |
Baixa os grupos pedidos. Padrão de saída: /data/infosiga |
quantilica infosiga convert <entrada> <lake> |
Converte o acervo bruto para o lake Hive |
Conjuntos¶
Os dois grupos têm um arquivo cada: dados (dados_infosiga.zip) e dicionario (Infosiga_dicionario_dados.zip). Os aliases padrao, sinistros, acidentes e transito apontam para dados. Não há conjuntos "listados" além desses: R1 é o catálogo inteiro.
O ZIP de dados traz vários CSVs por tabela (por exemplo, veiculos_2015-2021 e veiculos_2022-2024), que o lake agrupa em 3 datasets: sinistros, pessoas e veiculos.
Particionamento no lake¶
Os três datasets são particionados por ano:
sinistros,pessoas,veiculos: o ano vem dedata_sinistro/ano_sinistropor linha; sem essas colunas, do ano inicial da faixa do arquivo (colunaperiodo_arquivo).- Linha sem ano válido vai para
ano=__HIVE_DEFAULT_PARTITION__(quarentena); não há mais ano inventado. - Cada membro do ZIP é uma origem própria (
composite_file_key, chavezip__membro), lido em streaming, com decodificação cp1252 estrita e colunas lidas como texto.
Política de frescor¶
F3 (REMOTE_ONLY): a fonte não expõe validadores confiáveis (ETag/Last-Modified), então o pacote valida o conteúdo em stream e deduplica por sha256 local. Nessas fontes o check indica "download" sempre, o que é verdade: sem validadores, só o conteúdo revela a mudança.
Limitações conhecidas¶
- As colunas reais
data_sinistro/ano_sinistroempessoaseveiculosainda não foram verificadas contra um download real; se faltarem, o ano cai na faixa do nome do arquivo. - A fonte não oferece validadores, então o ZIP pode ser rebaixado a cada execução.
Reconversão necessária¶
Se o lake tiver veiculos ou pessoas convertidos por versão anterior, apague e reconverta (--force): antes só o primeiro CSV de cada ZIP entrava, veiculos era particionado por ano_fab (ano de fabricação) e a falta de ano virava 2015.