Skip to content

[chore] Atualizar todos os table.update.latest com os metadados da api do bigquery #1861

Description

@laura-l-amaral

Descrição

Levantamento do catálogo inteiro pra dar escopo a esta chore: cruzamos os 1171 registros de Table.Update (backend, via GraphQL — allUpdate(table_Id_Isnull: false, first: 1200), uma query só, sem paginação) contra o last_modified_time real de cada tabela no BigQuery (SELECT table_id, last_modified_time FROM basedosdados.<dataset>.__TABLES__, em lotes de UNION ALL, cobrindo os 228 datasets distintos — 0 GB de custo, é metadado puro, não um scan).

Isso é mais amplo que a verificação por Coverage/MAX() feita na #1806 (que cobriu as ~41 tabelas com flow monitorado) — aqui é o catálogo publicado inteiro, direto contra o campo que esta chore propõe corrigir.

Números gerais:

Categoria Qtd.
Tabelas com Update vinculado a uma Table 1171
Sem Table.Update registrado (latest nulo) 11
Sem tabela real encontrada no BigQuery (dataset ou tabela não existe mais) 63
Com os dois valores disponíveis 1099
Batem (diferença ≤ 2 dias) 869
Divergência > 2 dias 230

Das 230 divergentes: 219 têm o BigQuery mais recente que o metadado (caso normal — o metadado só não foi commitado na última run), e 11 têm o metadado registrado mais recente que o BigQuery real (suspeito — ver seção própria abaixo).

Já existe um script pronto para corrigir uma parte deste escopo: pipelines/utils/metadata/sync_table_update.py (dry-run por padrão, --apply grava via client.upsert_table_update), cobrindo as ~41 tabelas ligadas a flows monitorados levantadas na #1806. Ele exclui de propósito br_me_comex_stat (4 tabelas) e br_ms_cnes (13 tabelas) — esses dois usam um modelo de reconciliação de cobertura que grava Table.Update.latest como data de cobertura, não como last_modified físico; aplicar a correção genérica nelas reintroduziria o bug que a migração deles já corrigiu.

Escopo afetado

63 tabelas registradas sem contraparte real no BigQuery — 7 datasets concentram todas: br_b3_cotacoes, br_ibge_censo_agropecuario, br_mercadolivre_ofertas, us_cms_open_payments (datasets inteiros não existem mais no projeto basedosdados), test_dataset (esperado), br_bd_metadados e br_ibge_censo_2022/br_ibge_pib (datasets existem, mas os table_id registrados não batem com nenhuma tabela real). Mesmo padrão do achado br_me_cnpj da #1806 — metadado órfão, não dá pra aplicar last_modified a uma tabela que não existe. Fora do escopo de correção automática; precisa de limpeza de catálogo separada.

11 tabelas onde o metadado registrado é mais recente que o BigQuery real (suspeito):

Dataset.tabela Metadado registrado Materialização real (BigQuery) Diferença
br_ms_sim.municipio 2026-06-22 2021-07-12 -1806 dias
br_inep_indicadores_educacionais.escola_nivel_socioeconomico 2024-05-08 2021-07-21 -1021 dias
br_ibge_ppm.efetivo_rebanhos 2025-11-24 2024-05-07 -566 dias
br_ibge_ppm.producao_origem_animal 2025-11-24 2024-05-07 -566 dias
br_ibge_ppm.producao_aquicultura 2025-11-24 2024-05-07 -566 dias
br_ibge_ppm.producao_pecuaria 2025-11-24 2024-05-07 -566 dias
br_ibge_munic.atual_prefeito 2026-06-26 2026-06-22 -4 dias
br_ibge_munic.habitacao 2026-06-26 2026-06-22 -4 dias
br_ibge_munic.meio_ambiente 2026-06-26 2026-06-22 -4 dias
br_ibge_munic.recursos_gestao 2026-06-26 2026-06-22 -4 dias
br_ibge_munic.recursos_humanos 2026-06-26 2026-06-22 -4 dias

Os 5 br_ibge_munic são ruído de fronteira de dia (mesmo desvio de fuso de ~3h documentado na #1806). br_ms_sim.municipio (quase 5 anos na frente), br_ibge_ppm (4 tabelas) e br_inep_indicadores_educacionais.escola_nivel_socioeconomico são o achado real — antes de "corrigir" via last_modified, checar se há mais de uma CloudTable vinculada a essas Tables (uma pode apontar pra um table_id desatualizado/renomeado).

219 tabelas onde o BigQuery é mais recente que o metadado registrado (ordenado por magnitude — topo é o que mais precisa de correção; grupos com o mesmo valor de dias, ex. as ~35 de br_ibge_censo_demografico em +940d e as ~15 de br_tse_eleicoes em +600-628d, indicam uma run em lote que trouxe dado novo sem commitar metadado de nenhuma tabela):

Dataset.tabela Metadado registrado Materialização real (BigQuery) Diferença
br_inmet_bdmep.estacao 2021-09-01 2026-05-26 +1728 dias
br_inep_indicadores_educacionais.brasil_remuneracao_docentes 2021-07-25 2026-01-19 +1639 dias
br_cgu_pessoal_executivo_federal.terceirizados 2022-05-16 2026-06-28 +1503 dias
br_tse_eleicoes.local_secao 2020-11-25 2024-07-25 +1339 dias
world_wb_wdi.indicators 2022-12-30 2026-08-11 +1320 dias
world_wb_wdi.indicator_time 2022-12-30 2026-08-11 +1320 dias
world_wb_wdi.footnote 2022-12-30 2026-08-11 +1320 dias
world_wb_wdi.data 2022-12-30 2026-08-11 +1320 dias
world_wb_wdi.country_indicator 2022-12-30 2026-08-11 +1320 dias
br_inep_saeb.uf_taxa_alfabetizacao 2021-01-01 2024-07-10 +1286 dias
br_inep_saeb.brasil_taxa_alfabetizacao 2021-01-01 2024-07-10 +1286 dias
br_tse_filiacao_partidaria.microdados_antigos 2021-07-09 2024-10-18 +1197 dias
br_sp_seduc_fluxo_escolar.escola 2021-04-26 2024-07-25 +1186 dias
br_sp_seduc_fluxo_escolar.municipio 2021-04-26 2024-07-25 +1186 dias
br_bd_diretorios_brasil.municipio 2023-09-06 2026-06-22 +1020 dias
br_inep_indicador_nivel_socioeconomico.escola 2023-04-18 2026-01-19 +1007 dias
br_geobr_mapas.setor_censitario_2010 2023-09-26 2026-04-30 +946 dias
br_ibge_censo_demografico.* (35 tabelas — setores censitários e microdados 1970-2010) 2023-10-02 2026-04-29 +940 dias
br_cvm_administradores_carteira.responsavel 2024-05-06 2026-08-20 +836 dias
br_ibge_pnadc.dicionario 2024-05-08 2026-08-19 +833 dias
world_wb_wdi.dicionario 2024-05-08 2026-08-11 +825 dias
world_wb_mides.licitacao_item 2023-10-31 2026-01-27 +819 dias
br_ms_cnes.dicionario 2024-05-16 2026-07-31 +806 dias
br_rj_isp_estatisticas_seguranca.* (6 tabelas) 2023-07-21/26 2025-09-17 +784-789 dias
br_cgu_beneficios_cidadao.bolsa_familia_pagamento 2024-03-14 2026-04-28 +775 dias
br_bd_diretorios_comercio_internacional.sistema_harmonizado 2024-07-12 2026-08-12 +761 dias
br_bd_diretorios_brasil.cid_10 2024-07-08 2026-08-05 +758 dias
br_ons_estimativa_custos.custo_variavel_unitario_usinas_termicas 2024-04-05 2026-04-29 +754 dias
br_ms_sim.dicionario 2024-06-13 2026-06-30 +747 dias
world_iea_timss.* (10 tabelas) 2023-07-15 2025-07-24 +740 dias
br_bd_diretorios_brasil.etnia_indigena 2024-07-08 2026-06-24 +716 dias
mundo_transfermarkt_competicoes_internacionais.champions_league 2024-06-04 2026-04-30 +695 dias
br_bcb_sicor.dicionario 2024-05-08 2026-03-19 +680 dias
br_inep_indicadores_educacionais.escola/municipio/uf_remuneracao_docentes 2024-03-12/14 2026-01-19 +676-678 dias
br_ibge_censo_2022.cadastro_enderecos 2024-07-09 2026-04-30 +659 dias
br_bd_diretorios_mundo.pais 2024-07-25 2026-05-11 +655 dias
br_bd_indicadores.receitas_planejadas/contabilidade 2024-09-12 2026-06-15 +641 dias
br_tse_eleicoes.* (17 tabelas — candidatos, resultados, receitas, despesas, perfil eleitorado) 2024-11-22 a 2024-12-20 2026-08-12 +600-629 dias
br_me_rais.dicionario 2024-06-14 2026-02-13 +609 dias
br_inep_indicador_nivel_socioeconomico.dicionario 2024-06-13 2026-01-19 +585 dias
br_ibge_pof.servico_nao_monetario_pof2_2017 2023-03-13 2024-10-03 +570 dias
br_ibge_pam.lavoura_temporaria/lavoura_permanente 2024-04-13/15 2025-10-03 +536-538 dias
br_inep_saeb.brasil/municipio/uf/dicionario 2024-08-14/09-09 2025-12-16 +463-489 dias
br_rf_cno.dicionario 2024-08-06 2025-10-13 +433 dias
br_me_caged.microdados_antigos/microdados_antigos_ajustes 2022-06-21 2023-08-02 +407 dias
br_bd_indicadores.pessoas/equipes 2024-09-12 2025-10-09 +392 dias
br_inep_educacao_especial.tipo_deficiencia 2025-01-01 2026-01-27 +391 dias
br_ibge_censo_2022.* (9 tabelas — população, domicílio, território indígena/quilombola, setor censitário) 2024-01-09 a 2024-04-03 2024-11-11 a 2025-02-13 +290-384 dias
br_inep_censo_escolar.escola 2025-05-26 2026-01-26 +245 dias
br_bd_diretorios_brasil.empresa 2025-12-19 2026-08-13 +237 dias
br_sfb_sicar.area_imovel 2025-02-21 2025-10-15 +236 dias
br_mg_belohorizonte_smfa_iptu.iptu 2023-09-13 2024-05-03 +232 dias
br_ms_sia.dicionario 2024-05-08 2024-12-17 +223 dias
br_tse_eleicoes.receitas_orgao_partidario 2024-02-09 2024-09-19 +223 dias
br_inep_censo_educacao_superior.curso 2025-11-13 2026-06-22 +221 dias
br_ms_sinan.dicionario 2024-08-27 2025-04-02 +218 dias
br_inep_indicadores_educacionais.brasil 2025-12-08 2026-06-29 +203 dias
br_ms_sinan.microdados_dengue 2026-01-23 2026-08-04 +193 dias
br_inep_enem.dicionario/microdados 2024-05-08/06-13 2024-11-07 +147-183 dias
br_ibge_censo_2022.alfabetizacao_grupo_idade_sexo_raca 2024-06-13 2024-11-28 +168 dias
br_inep_indicadores_educacionais.uf_taxa_transicao 2025-12-08 2026-04-30 +142 dias
br_tse_eleicoes.receitas_comite 2024-06-05 2024-09-19 +107 dias
br_cgu_licitacao_contrato.contrato_compra/contrato_item/contrato_termo_aditivo 2026-04-04/05 2026-07-16 +102-103 dias
br_ms_sia.psicossocial 2026-04-30 2026-08-05 +97 dias
br_rj_isp_estatisticas_seguranca.evolucao_mensal_cisp 2026-05-04 2026-07-21 +78 dias
br_ans_beneficiario.informacao_consolidada 2026-06-01 2026-08-10 +71 dias
br_simet_educacao_conectada.escola 2024-12-12 2025-02-04 +54 dias
br_ms_cnes.* (11 tabelas, incl. leito) 2026-05-01/07-01 2026-06-17/08-18 +48-49 dias
br_me_comex_stat.* (4 tabelas) 2026-07-01 2026-08-07 +38 dias
br_mma_sinpatinhas.microdados 2026-02-21 2026-03-18 +25 dias
br_ibge_pnadc.microdados 2026-07-09 2026-07-28 +19 dias
br_ibge_populacao.brasil 2026-01-09 2026-01-28 +19 dias
br_seeg_emissoes.municipio/uf 2026-01-08 2026-01-26 +18 dias
br_inep_saeb.aluno_em_34ano 2025-03-05/12-19 2026-01-05 +18-307 dias
us_harvard_ned.presidential_elections/parliamentary_elections 2026-01-10 2026-01-27 +17 dias
br_rf_arrecadacao.itr/cnae 2024-11-04/05 2024-11-07/22 +3-17 dias
br_inep_sinopse_estatistica_educacao_basica.docente_regime_contrato 2025-05-08 2025-05-23 +16 dias
br_senado_dados_abertos.* (10 tabelas) 2026-08-06/07 2026-08-19 +12-13 dias
us_census_acs.* (10 tabelas) 2026-07-17 2026-07-30 +13 dias
world_dasanaike_sage.* (4 tabelas) 2026-07-14 2026-07-23 +9 dias
br_ms_sih.dicionario 2024-09-09 2024-09-17 +8 dias
br_ms_sim.microdados, br_ms_populacao.municipio, br_inpe_queimadas.microdados 2026-01-06 a 2026-06-24 +2-6 dias depois +6 dias
us_census_cbp.* (4 tabelas), br_bd_diretorios_us.naics_* (5 tabelas) 2026-07-17 2026-07-22 +5 dias
br_cgu_sancoes.dicionario, au_ato_abr.* (3 tabelas) 2026-08-14 2026-08-18 +4 dias
br_inep_enem.questionario_socioeconomico_2023, br_rf_arrecadacao.cnae 2024-11-04/08 2024-11-07/11 +3 dias

(Lista completa, tabela a tabela sem agrupamento, disponível no vault interno da auditoria — grupos com */faixa de dias foram condensados aqui só pra caber no corpo da issue.)

Leitura:

  • br_ms_cnes e br_me_comex_stat aparecem com diferença de 38-49 dias — esperado, não é bug: o Table.Update deles é gravado como data de cobertura (sync_table_coverage_task), não como last_modified físico. Não devem passar pelo sync_table_update.py.
  • Muitas tabelas dicionario aparecem na lista — normalmente atualizadas na mesma run que a tabela principal do dataset; a mesma causa ("metadado nunca comitado") se aplica a elas.
  • Os grandes clusters (br_ibge_censo_demografico, br_tse_eleicoes, world_iea_timss, br_ibge_censo_2022) sugerem migrações/backfills em lote feitos fora do fluxo padrão dos flows (script manual, carga única), não um bug recorrente.

Referências

  • Verificar a situação das datas de atualização #1806 — auditoria original que motivou esta chore (verificação por Coverage/MAX() nas ~41 tabelas com flow monitorado; achou br_ms_sinan com Coverage desatualizado)
  • feat: restaura compare_against em poll_source_for_update #1783 — restaura compare_against em poll_source_for_update, causa raiz do bug de comparação que motivou a auditoria inicial
  • pipelines/utils/metadata/sync_table_update.py — script pronto (dry-run por padrão) pra corrigir as ~41 tabelas de flow monitorado; não cobre as 219 tabelas fora desse escopo listadas acima

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

choreManutenção, infra, refactor, migração de dependências ou ajustes de CI

Type

No type

Projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions