Skip to content

Bug: comex_municipio tem 777 ibge_code órfãos (MDIC usa códigos próprios, não IBGE puro) #150

Description

@nataliasm23

Observação

Cross-table consistency check de `data_br.comex_municipio` contra dim `data_br.municipios` revela 777 ibge_codes que não existem na dim (66.7% das 5570 munis tem comex — 33% "falta" é parcial órfão).

Sample top orfãos:

ibge_code (falso) uf rows valor_fob provavel real
3450308 SP 699,419 $82bi Porto de Santos (código especial MDIC)?
3452205 SP 320,883 $29bi
3448500 SP 316,074 $39bi
3409502 SP 284,462 $24bi

Todos têm prefixo `34xxxxx` ou `35xxxxx` mas UF=SP. IBGE codes oficiais de SP começam em `35xxxxxx` — `34xxxxxx` é RJ. Há inconsistência.

Root cause

MDIC COMEX usa "código municipal MDIC" que NÃO é IBGE 7-dig puro. Inclui:

  • Códigos especiais pra portos/aeroportos (operações de fronteira)
  • Zonas francas (Manaus etc) com identificadores próprios
  • Códigos para operações sem município específico declarado

Atual pipeline `_pipelines/comex.py` faz `int(CO_MUN)` direto e materializa como `ibge_code` — assumindo equivalência que não é verdade na minoria dos casos.

Impacto

  • Operações de comércio exterior atribuídas a códigos fantasma (~33% das munis "sem comex" no JOIN com municipios)
  • Aggregations por UF/região ainda funcionam (campo `uf` está correto)
  • JOINs com municipios falham silenciosamente

Fix proposto

  1. Baixar tabela auxiliar MDIC `UF_MUN.csv` (https://balanca.economia.gov.br/balanca/bd/comexstat-bd/tabelas/UF_MUN.csv)
  2. Adicionar resolve crosswalk MDIC_MUN → IBGE 7-dig em `_pipelines/comex.py`
  3. Códigos não-IBGE (portos, zonas francas): emit valor_texto="Porto de Santos" + ibge_code=NULL OU mapear pro município hospedeiro
  4. Drop + rerun comex_municipio com fix

Workaround imediato

Pra queries que precisam IBGE válido: `JOIN data_br.municipios USING(ibge_code)` filtra automaticamente. Aggregations por UF estão OK.

Detectado em: 2026-05-18 via cross-table consistency audit.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions