wilsonfreitas / rbcb

R interface to Brazilian Central Bank web services
https://wilsonfreitas.github.io/rbcb/
Other
91 stars 20 forks source link

Erro eventual ao usar função get_series() #57

Closed victorrssx closed 2 years ago

victorrssx commented 2 years ago

Eventualmente, ao rodar o código no qual uso a função get_series() para puxar dados do BCB, recebo a seguinte notificação de erro:

Erro: lexical error: invalid char in json text. <?xml version="1.0" encoding="p (right here) ------^

Geralmente, após umas duas ou três tentativas, o código volta a rodar novamente sem problema. Só que existem vezes - como hoje por exemplo - que não consigo de jeito nenhum puxar os dados. O traceback que retorna é (onde a linha 1. é um exemplo de código):

7. parse_string(txt, bigint_as_char) 
6. parseJSON(txt, bigint_as_char) 
5. parse_and_simplify(txt = txt, simplifyVector = simplifyVector, 
    simplifyDataFrame = simplifyDataFrame, simplifyMatrix = simplifyMatrix, 
    flatten = flatten, ...) 
4. jsonlite::fromJSON(json_) at D:\Users\VICLI\AppData\Local\Temp\RtmpqeOEym\rstudio-scratch-2e38e8271ba.R#5
3. (new("functionWithTrace", .Data = function (json_, x, as) 
{
    if (as == "text") 
        return(json_) ... 
2. mapply(create_series, series, objs, MoreArgs = list(as = as), 
    SIMPLIFY = FALSE, USE.NAMES = FALSE) 
1. rbcb::get_series(c(IPCA = 433, IGPM = 189), last = 12, as = "ts")

Tentei reiniciar o R e mexer nos pacotes, mas sem sucesso. Não tenho muito ideia do que pode ser, se o problema é no meu R ou se na função em si. Peço desculpas se for alguma bobeira. Grato desde já pela ajuda!

wilsonfreitas commented 2 years ago

Oi @victorrssx, foi um erro temporário, parece que já normalizou. Obrigado pelo aviso. Vou fechar essa issue, se voltar o problema, ela será reaberta.

luketesser commented 6 months ago

Venho encontrando o mesmo erro eventualmente: Error in map(): ℹ In index: 1. ℹ With name: ibcbr. Caused by error in parse_con(): ! lexical error: invalid char in json text. <?xml version="1.0" encoding="p (right here) ------^ Backtrace: ▆

  1. └─rbcb::get_series(c(ibcbr = 24364))
  2. ├─rbcb::rbcb_get(objs, start_date, end_date, last)
  3. └─rbcb:::rbcb_get.sgs(objs, start_date, end_date, last)
  4. └─purrr::map_dfr(...)
  5. └─purrr::map(.x, .f, ...)
  6. └─purrr:::map_("list", .x, .f, ..., .progress = .progress)
  7. ├─purrr:::with_indexed_errors(...)
  8. │ └─base::withCallingHandlers(...)
  9. ├─purrr:::call_with_cleanup(...)
    1. └─rbcb (local) .f(.x[[i]], ...)
    2. └─rbcb:::sgs_create_series(ser, f)
    3. └─jsonlite::fromJSON(json)
    4. └─jsonlite:::parse_and_simplify(...)
    5. └─jsonlite:::parseJSON(txt, bigint_as_char)
    6. └─jsonlite:::parse_con(txt, bigint_as_char)
jgpds commented 6 months ago

Também venho enfrentando o mesmo erro, esse erro acontecia esporadicamente e era resolvido quando rodava o código novamente, mas recentemente tá acontecendo mais frequentemente e não está resolvendo quando roda novamente. No meu caso, tem alguns meses que não é possível puxar o indexador e outros meses funciona normalmente.

> df_indexador_bcb <- rbcb::get_series(código_indexador, start_date = (as.Date(paste(ano_reavaliacao, mes_reavaliacao, dia_reavaliacao, sep = "-")) %m-% months(13)),
+                                      end_date = (as.Date(paste(ano_reavaliacao, mes_reavaliacao, dia_reavaliacao, sep = "-")) %m-% months(1))) # Últimas 12 Variações do indexador
Skipping download - using cached version
Error in `map()`:
ℹ In index: 1.
ℹ With name: 433.
Caused by error in `parse_con()`:
! lexical error: invalid char in json text.
                                       <?xml version="1.0" encoding="p
                     (right here) ------^
Run `rlang::last_trace()` to see where the error occurred.
> rlang::last_trace()
<error/purrr_error_indexed>
Error in `map()`:
ℹ In index: 1.
ℹ With name: 433.
Caused by error in `parse_con()`:
! lexical error: invalid char in json text.
                                       <?xml version="1.0" encoding="p
                     (right here) ------^
---
Backtrace:
     ▆
  1. └─rbcb::get_series(...)
  2.   ├─rbcb::rbcb_get(objs, start_date, end_date, last)
  3.   └─rbcb:::rbcb_get.sgs(objs, start_date, end_date, last)
  4.     └─purrr::map_dfr(...)
  5.       └─purrr::map(.x, .f, ...)
  6.         └─purrr:::map_("list", .x, .f, ..., .progress = .progress)
  7.           ├─purrr:::with_indexed_errors(...)
  8.           │ └─base::withCallingHandlers(...)
  9.           ├─purrr:::call_with_cleanup(...)
 10.           └─rbcb (local) .f(.x[[i]], ...)
 11.             └─rbcb:::sgs_create_series(ser, f)
 12.               └─jsonlite::fromJSON(json)
 13.                 └─jsonlite:::parse_and_simplify(...)
 14.                   └─jsonlite:::parseJSON(txt, bigint_as_char)
 15.                     └─jsonlite:::parse_con(txt, bigint_as_char)
wilsonfreitas commented 5 months ago

Esse erro acontece toda vez que a API do SGS do Bacen fica fora. Não tem o que fazer do lado do rbcb, a não ser colocar uma mensagem de erro pra ficar evidente que a API está indisponível. Fora isso é aguardar que estabilize.

diegomsg commented 2 days ago

Também enfrentei o erro, pontualmente. Na minha experiência só aconteceu com IPCA, série 433, como o exemplo de jgpds.

indices_bcb <- rbcb::get_series(
  c(ipca = 433,
    inpc = 188,
    igpm = 189,
    igpdi = 190,
    ipcbr = 191,
    incc = 192,
    sinapi = 7495,
    ivgr = 21340),
  start_date = "2004-01-01")
#> Error in `map()`:
#> ℹ In index: 1.
#> ℹ With name: ipca.
#> Caused by error in `parse_con()`:
#> ! lexical error: invalid char in json text.
#>                                        <?xml version="1.0" encoding="p
#>                      (right here) ------^
Session info ``` r sessioninfo::session_info() #> ─ Session info ─────────────────────────────────────────────────────────────── #> setting value #> version R version 4.3.2 (2023-10-31 ucrt) #> os Windows 10 x64 (build 19045) #> system x86_64, mingw32 #> ui RTerm #> language (EN) #> collate Portuguese_Brazil.utf8 #> ctype Portuguese_Brazil.utf8 #> tz America/Fortaleza #> date 2024-10-02 #> pandoc 3.1.1 @ C:/Users/f153699/AppData/Local/Programs/RStudio/resources/app/bin/quarto/bin/tools/ (via rmarkdown) #> #> ─ Packages ─────────────────────────────────────────────────────────────────── #> package * version date (UTC) lib source #> cli 3.6.3 2024-06-21 [1] CRAN (R 4.3.3) #> curl 5.2.3 2024-09-20 [1] CRAN (R 4.3.3) #> digest 0.6.37 2024-08-19 [1] CRAN (R 4.3.3) #> dplyr 1.1.4 2023-11-17 [2] CRAN (R 4.3.2) #> evaluate 1.0.0 2024-09-17 [2] CRAN (R 4.3.3) #> fansi 1.0.6 2023-12-08 [1] CRAN (R 4.3.3) #> fastmap 1.2.0 2024-05-15 [2] CRAN (R 4.3.3) #> fs 1.6.4 2024-04-25 [2] CRAN (R 4.3.3) #> generics 0.1.3 2022-07-05 [2] CRAN (R 4.3.2) #> glue 1.8.0 2024-09-30 [1] CRAN (R 4.3.2) #> htmltools 0.5.8.1 2024-04-04 [2] CRAN (R 4.3.3) #> httr 1.4.7 2023-08-15 [1] CRAN (R 4.3.3) #> jsonlite 1.8.9 2024-09-20 [1] CRAN (R 4.3.3) #> knitr 1.48 2024-07-07 [2] CRAN (R 4.3.3) #> lattice 0.22-6 2024-03-20 [2] CRAN (R 4.3.3) #> lifecycle 1.0.4 2023-11-07 [1] CRAN (R 4.3.3) #> magrittr 2.0.3 2022-03-30 [1] CRAN (R 4.3.3) #> pillar 1.9.0 2023-03-22 [1] CRAN (R 4.3.3) #> pkgconfig 2.0.3 2019-09-22 [1] CRAN (R 4.3.3) #> purrr 1.0.2 2023-08-10 [1] CRAN (R 4.3.3) #> R6 2.5.1 2021-08-19 [1] CRAN (R 4.3.3) #> rbcb 0.1.14 2024-01-25 [1] CRAN (R 4.3.3) #> reprex 2.1.1 2024-07-06 [2] CRAN (R 4.3.3) #> rlang 1.1.4 2024-06-04 [1] CRAN (R 4.3.3) #> rmarkdown 2.28 2024-08-17 [2] CRAN (R 4.3.3) #> rstudioapi 0.16.0 2024-03-24 [2] CRAN (R 4.3.2) #> sessioninfo 1.2.2 2021-12-06 [2] CRAN (R 4.3.2) #> tibble 3.2.1 2023-03-20 [1] CRAN (R 4.3.3) #> tidyselect 1.2.1 2024-03-11 [2] CRAN (R 4.3.3) #> utf8 1.2.4 2023-10-22 [1] CRAN (R 4.3.3) #> vctrs 0.6.5 2023-12-01 [1] CRAN (R 4.3.3) #> withr 3.0.1 2024-07-31 [2] CRAN (R 4.3.3) #> xfun 0.47 2024-08-17 [2] CRAN (R 4.3.3) #> xml2 1.3.6 2023-12-04 [1] CRAN (R 4.3.3) #> xts 0.14.0 2024-06-05 [1] CRAN (R 4.3.3) #> yaml 2.3.10 2024-07-26 [2] CRAN (R 4.3.3) #> zoo 1.8-12 2023-04-13 [1] CRAN (R 4.3.3) #> #> [1] C:/Users/f153699/AppData/Local/R/library #> [2] C:/Program Files/R/R-4.3.2/library #> #> ────────────────────────────────────────────────────────────────────────────── ```

De imediato tirando IPCA de rbcb::get_series() a consulta é finalizada.

indices_bcb <- rbcb::get_series(
  c(#ipca = 433,
    inpc = 188,
    igpm = 189,
    igpdi = 190,
    ipcbr = 191,
    incc = 192,
    sinapi = 7495,
    ivgr = 21340),
  start_date = "2004-01-01")

Created on 2024-10-02 with reprex v2.1.1