transparencia-mg / age7

https://transparencia-mg.github.io/age7/
1 stars 2 forks source link

erro atualização vetor script R #145

Closed Andrelamor closed 1 year ago

Andrelamor commented 1 year ago

Problema

A atualização do age-7 não roda desde 19/10, pois o script parse-sql-R obteve seguinte msg de erro:

Error: $ operator is invalid for atomic vectors
Execution halted

a partir do arquivo log/parse/ft_convenio.Rout.

Hipótese

Nas fontes^1 consultadas^2, a natureza do problema parece ser a tentativa de transformar um vetor com diversos valores (no caso, o datapackage.yaml, que vai retornar uma lista/array) em uma única variável:

sql_query <- dtamg::parse_sql("datapackage.yaml", gsub("-", "_", resource_name))
writeLines(sql_query, glue::glue("scripts/sql/{resource_name}.sql"))

Alternativa

Alterar o script do parse-sql-R para transformar a variável em dataframe antes de ser atribuída à variável sql_query:

x <- (dtamg::parse_sql("datapackage.yaml", gsub("-", "_", resource_name)))as.data.frame(x)
sql_query <- x
writeLines(sql_query, glue::glue("scripts/sql/{resource_name}.sql"))

Não parece ser tão simples assim, após consultar outra fonte: https://stackoverflow.com/questions/36459838/error-in-reading-yaml-files-as-data-frame-in-r. Se era necessário a conversão por que o script rodava antes?

gabrielbdornas commented 1 year ago

@Andrelamor, Segui a orientação do @fjuniorr e rodei localmente frictionless validate schemas/ft_convenio.yaml para ver se o arquivo estava válido. De fato não estava. No histórico de commits verifiquei que o mesmo ficou desformatado (identação incorreta) após este commit.

Coloquei a rodina para rodar ./docker.sh e verifiquei que a ação parse foi finalizada com sucesso (make: Nothing to be done for 'parse'), entrando as demais em execução:

gabriel.dornas@cge-pda:~/age7$ cat logs/all.txt                                                                         
Already up to date.                                                                                                     
rm -rf logs/extract/*                                                                                                   
rm -rf logs/parse/*                                                                                                     
rm -rf logs/tests/*                                                                                                     
rm -rf logs/update/*                                                                                                    
rm -f logs/full_extract.txt                                                                                             
rm -f logs/check_validation.txt                                                                                         
rm -f logs/check_empty_resource.txt                                                                                     
rm -f logs/ingest.txt                                                                                                   
rm -f logs/build.txt                                                                                                    
rm -f logs/create.txt                                                                                                   
rm -rf data/raw/*                                                                                                       
rm -f datapackage.json                                                                                                  
rm -rf build_datasets                                                                                                   
rm -rf reports.html                                                                                                     
make: Nothing to be done for 'parse'.                                                                                   
# python scripts/python/full-extract.py                                                                                 
python scripts/python/extract_csv_evento_etl_carga.py 2> logs/evento_etl_carga.txt                                      
dtamg-py etl-make full-extract 2> logs/full_extract.txt

Devemos conferir em 27/10/2022 se a mesma foi finalizada.