Repository navigation
fix(mapas): descarta value acima de 100 KB na silver_agent_meta - #81
Merged
Merged
Conversation
O modelo abortava com "invalid memory alloc request size 1241514944". A bronze_agent_meta tem 29 valores de 131 KB a 155 MB, todos em rcv_links_coletivo e rcv_sede_realizaAtividades_outros_lista, que são a mesma string reescapada a cada gravação no Mapas: só barras invertidas. O trim do de 155 MB pede 1,2 GB de uma vez e passa do limite do Postgres. O tamanho agora é medido antes do trim, e o que passa de 100 KB vira NULL. O maior valor legítimo de qualquer chave tem 65 KB. A linha continua na silver, só o value fica nulo. Rodado no dbanalytics: 6.385.537 linhas, igual à bronze, 29 value nulos pelo limite, e os 4 testes do modelo passam.
bottinolucas
approved these changes
Oct 8, 2026
10 of 15 tasks
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
A
silver_mapas_agent_metanão materializava. Odbt runabortava cominvalid memory alloc request size 1241514944, e sem ela os agentes do Mapasficam sem município, UF e CEP na silver, porque esses dados moram nas chaves
En_Municipio,En_EstadoeEn_CEPdesta tabela.A causa está no dado de origem. A
mapas.bronze_agent_metatem 29 valores entre131 KB e 155 MB, todos nas chaves
rcv_links_coletivo(22) ercv_sede_realizaAtividades_outros_lista(7). O conteúdo é a mesma stringreescapada a cada gravação no Mapas, só barras invertidas, e o tamanho dobra a
cada vez. O
trimdo valor de 155 MB pede 155.189.368 × 8 = 1.241.514.944 bytesde uma vez, e o Postgres recusa qualquer alocação acima de 1 GB.
A correção mede o tamanho antes do
trime transforma em NULL ovalueacima de 100 KB. A linha continua na silver; só o
valuefica nulo. O limitefica longe dos dados legítimos: o maior valor legítimo dessas duas chaves tem
65 KB, e o de qualquer outra chave, 32 KB. A regra está documentada no
comentário do modelo e na descrição da coluna
valuenoschema.yml.Fora do escopo:
silver_mapas_agent,silver_mapas_spaceesilver_mapas_event_occurrencetambém falham, por outra causa. As colunaslocation,_geo_locationefrequencynão existem na bronze, porque a cargafoi feita por um Trino sem o
unsupported-type-handling=CONVERT_TO_VARCHARdocatálogo
mapas. Isso se resolve recarregando as três tabelas no Trino dehomologação, sem mudar código.
Issue relacionada
Refs #71
Tipo de mudança
Impacto em dados
mapas.silver_agent_meta.dbt run --select silver_mapas_agent_meta. Nodbanalytics, o modelo já foi rodado a partir desta branch.Como testar
Evidências
No
dbanalytics, a partir desta branch:dbt runERROR—invalid memory alloc request size 1241514944OK created … [SELECT 6385537 in 27.09s]iddistintosvaluenulo pelo limitevaluedbt testPASS=4(uniqueenot_nullemid,not_nullemobject_idekey)Checklist
make lintlocalmente — ou justifiquei abaixo por que nãomake testlocalmente — ou justifiquei abaixo por que nãoschema.yml, se criei ou alterei modeloorigin/mainLint e testes: a máquina onde a mudança foi feita não tem o Poetry instalado,
então
make lintemake testnão rodaram. O que rodou:sqlfmt --checknomodelo alterado, sem erro;
dbt parseedbt compile; edbt runedbt testdomodelo, com o resultado acima. O PR não muda Python, então o
make testnão exercitanada do que foi alterado.
Testes dbt: os quatro testes existentes cobrem o modelo. O limite de 100 KB
não ganhou teste próprio.
Documentação: o
make docs-collectnão rodou. A descrição dovaluemudou no
schema.yml, e o site só reflete isso depois de uma nova coleta.Arquitetura: o
verificar.pyaponta R1, R3 e R7 neste arquivo, mas as três jáexistiam na
main: a pastamapas_dbt/silvere a silver lendosource(). Este PRnão acrescenta nenhuma. A migração de pasta está na branch
refactor/mapas-estrutura-adr-0010.