Repository navigation
feat(eixo1): fontes do Cultura em Números por DAG e IPCA 433 no BACEN - #146
Merged
Merged
Conversation
Contributor
There was a problem hiding this comment.
🟡 Changes recommended
Anos extras repetidos geram chamadas duplicadas ao BB Ágil, e faltam testes de integração de substituir_periodo para verificar recarga sem duplicação, preservação de outros períodos e rollback quando o COPY falha.
2 open issues
What changed in this PR
Integra ao pipeline as fontes do Eixo 1 do Cultura em Números, reduzindo a dependência de cargas manuais e preparando os dados para consumo pelo dbt.
Mudanças:
- Adiciona ingestões de IBGE, SIOP e Tesouro no fluxo raw → staging → seeds, com conferência de contagens.
- Inclui IPCA 433 no padrão do BACEN e permite anos extras por programa no BB Ágil.
- Acrescenta utilitários de carga, testes e atualiza o catálogo de documentação.
| File | Description |
|---|---|
tests/test_seeds_carga.py |
Testa normalização, CSV e conferência de contagens. |
tests/test_dags_fontes_eixo1.py |
Verifica dependências, parâmetros e saídas das DAGs. |
tests/test_cliente_tesouro_transparente.py |
Testa leitura do CSV e descoberta do recurso CKAN. |
tests/test_cliente_siop.py |
Testa consulta e conversão exata de valores monetários. |
tests/test_cliente_ibge_perfil.py |
Valida catálogo, abas, contagens e arquivos ZIP. |
tests/test_agencias_bbagil.py |
Testa períodos extras por programa. |
plugins/seeds_carga.py |
Implementa substituição por período e controle de carga. |
plugins/schemas_minc.py |
Centraliza identificadores das novas fontes. |
plugins/config_bsc_pnab.py |
Adiciona configuração de anos extras por programa. |
plugins/cliente_tesouro_transparente.py |
Obtém metadados e registros do Tesouro. |
plugins/cliente_siop.py |
Consulta execução federal e converte centavos em reais. |
plugins/cliente_ibge_perfil.py |
Cataloga e lê edições da MUNIC e ESTADIC. |
plugins/agencias_bbagil.py |
Combina períodos-base e extras por programa. |
helpers/datalakehouse.py |
Expõe gravação de registros em Parquet particionado. |
docs-pages/src/_data/dbt.json |
Atualiza descrições das séries BACEN no catálogo. |
docs-pages/src/_data/airflow.json |
Registra novas DAGs e clientes no catálogo. |
dbt/minc/models/bacen/schema.yml |
Documenta IPCA 433 e filtro por série. |
dags/data_ingest/tesouro/tesouro_transparente_dag.py |
Orquestra carga dos recursos do Tesouro em seeds. |
dags/data_ingest/siop/siop_execucao_dag.py |
Orquestra carga da execução federal por exercício. |
dags/data_ingest/ibge/ibge_perfil_dag.py |
Orquestra carga das planilhas por edição e aba. |
dags/data_ingest/bsc_pnab/extracao_bbagil_dag.py |
Aplica períodos extras às contas dos programas configurados. |
dags/data_ingest/bacen/bacen_sgs_ingest_dag.py |
Inclui IPCA 433 nas séries padrão. |
Review effort: Balanced
Comment on lines
+64
to
+65
| vistos = set(periodos) | ||
| return list(periodos) + [p for p in adicionais if p not in vistos] |
|
|
||
| alvo = f"{_ident(schema)}.{_ident(tabela)}" | ||
| lista = ", ".join(_ident(c) for c in colunas) | ||
| with psycopg2.connect(conn_str) as conn, conn.cursor() as cursor: |
ananunesv
requested review from
Arthrok,
CaioMelo25,
LuizaMaluf,
bottinolucas,
davi-aguiar-vieira and
devwallyson
November 3, 2026 14:26
devwallyson
approved these changes
Nov 3, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

Descrição
Traz para o pipeline as fontes do Eixo 1 do Cultura em Números que estavam fora dele, levantadas no relatório de cobertura das 65 análises do repositório
cultura-em-numeros-eixo-1.Ajustes em DAGs existentes
bacen_sgs_ingest_dag: o default passa a trazer o IPCA (SGS 433), deflator dos scripts do Eixo 1, além do IPCA-Serviços (10844).extracao_bbagil_dag: Variable novabsc_pnab_anos_extras_por_programa({"<codigo_programa>": [anos]}), que pede anos a mais só para as contas daquele programa. Serve para a LAB 1 de 2020 a 2022. Vazia por padrão: comportamento igual ao de hoje.DAGs novas (ADR 0012: raw → staging → seeds)
ibge_perfil_dag: 10 edições da MUNIC e da ESTADIC do FTP do IBGE, uma tabela por aba e edição (seeds.ibge_<edicao>_<aba>). O catálogo guarda as abas esperadas e o número de entes por aba; edição republicada com outra aba ou outra contagem faz a task falhar.siop_execucao_dag: execução orçamentária federal pelo SPARQL público do SIOP, por exercício (seeds.siop_execucao_orcamentaria). Substitui a planilha carregada à mão emsiop.execucao_orcamentaria. A soma é feita em centavos porque o Virtuoso arredondaSUMde decimal.tesouro_transparente_dag: RCL da União de 2000 ao 2º quadrimestre de 2018, do conjunto “Limites da LRF para a União: DCL” (seeds.tesouro_transparente_lrf_uniao_dcl).Apoio:
plugins/seeds_carga.py(carga genérica emseeds, DELETE + COPY por período, tabela de controle por fonte) edatalakehouse.gravar_parquet(staging dividido em partes abaixo do limite do proxy do MinIO).Issue relacionada
Closes #
Tipo de mudança
Impacto em dados
seeds.ibge_*(90 tabelas),seeds.siop_execucao_orcamentaria,seeds.tesouro_transparente_lrf_uniao_dcl,seeds.<fonte>_controle_carga;bacen.serie_sgsganha a série 433.ibge_perfil_dagcom{};siop_execucao_daguma vez com{"anos": [2003, ..., 2026]};tesouro_transparente_dagcom{};bacen_sgs_ingest_dag. Se a Variablebacen_series_sgsexistir no servidor, incluir"ipca": 433nela, porque ela vence o default.silver_serie_sgspassa a ter duas séries, e quem usar como deflator precisa filtrarcodigo_serie.Como testar
make testEvidências
munic.*eestadic.*, exceto uma data de 2006 que sai semT00:00:00. As 10 planilhas do FTP passam na conferência de abas e de entes.Checklist
make lintlocalmente — black, ruff e mypy nos arquivos alterados; os avisos que sobram já existiam na mainmake testlocalmente — na imagem do Airflow construída do Dockerfileorigin/mainmake docs-collect;entregas.jsonficou como na main)## DescriçãoTraz para o pipeline as fontes do Eixo 1 do Cultura em Números que estavam fora dele, levantadas no relatório de cobertura das 65 análises do repositório
cultura-em-numeros-eixo-1.Ajustes em DAGs existentes
bacen_sgs_ingest_dag: o default passa a trazer o IPCA (SGS 433), deflator dos scripts do Eixo 1, além do IPCA-Serviços (10844).extracao_bbagil_dag: Variable novabsc_pnab_anos_extras_por_programa({"<codigo_programa>": [anos]}), que pede anos a mais só para as contas daquele programa. Serve para a LAB 1 de 2020 a 2022. Vazia por padrão: comportamento igual ao de hoje.DAGs novas (ADR 0012: raw → staging → seeds)
ibge_perfil_dag: 10 edições da MUNIC e da ESTADIC do FTP do IBGE, uma tabela por aba e edição (seeds.ibge_<edicao>_<aba>). O catálogo guarda as abas esperadas e o número de entes por aba; edição republicada com outra aba ou outra contagem faz a task falhar.siop_execucao_dag: execução orçamentária federal pelo SPARQL público do SIOP, por exercício (seeds.siop_execucao_orcamentaria). Substitui a planilha carregada à mão emsiop.execucao_orcamentaria. A soma é feita em centavos porque o Virtuoso arredondaSUMde decimal.tesouro_transparente_dag: RCL da União de 2000 ao 2º quadrimestre de 2018, do conjunto “Limites da LRF para a União: DCL” (seeds.tesouro_transparente_lrf_uniao_dcl).Apoio:
plugins/seeds_carga.py(carga genérica emseeds, DELETE + COPY por período, tabela de controle por fonte) edatalakehouse.gravar_parquet(staging dividido em partes abaixo do limite do proxy do MinIO).Issue relacionada
Closes #
Tipo de mudança
Impacto em dados
seeds.ibge_*(90 tabelas),seeds.siop_execucao_orcamentaria,seeds.tesouro_transparente_lrf_uniao_dcl,seeds.<fonte>_controle_carga;bacen.serie_sgsganha a série 433.ibge_perfil_dagcom{};siop_execucao_daguma vez com{"anos": [2003, ..., 2026]};tesouro_transparente_dagcom{};bacen_sgs_ingest_dag. Se a Variablebacen_series_sgsexistir no servidor, incluir"ipca": 433nela, porque ela vence o default.silver_serie_sgspassa a ter duas séries, e quem usar como deflator precisa filtrarcodigo_serie.Como testar
make testEvidências
munic.*eestadic.*, exceto uma data de 2006 que sai semT00:00:00. As 10 planilhas do FTP passam na conferência de abas e de entes.Checklist
make lintlocalmente — black, ruff e mypy nos arquivos alterados; os avisos que sobram já existiam na mainmake testlocalmente — na imagem do Airflow construída do Dockerfileorigin/mainmake docs-collect;entregas.jsonficou como na main)