Estou criando uma base de dados de preços originados da FIPE e fiquei na dúvida sobre como seria mais eficiente criar uma base de dados. Estou rodando o seguinte código (baseado na aula 1 do curso de WS):
library(httr)
library(httr2)
u_base <- "https://brasilapi.com.br/api"
endpoint_preco <- "/fipe/preco/v1/"
carro <- "004530-6"
u_fipe_preco <- paste0(u_base, endpoint_preco, carro)
q_tabela <- list(tabela_referencia = 285)
r_fipe_preco <- GET(u_fipe_preco, query = q_tabela)
preco <- r_fipe_preco |>
content(simplifyDataFrame = TRUE) |>
tibble::as_tibble()
É possível fazer múltiplas queries, ou devo fazer uma de cada vez para criar uma base de dados? Por exemplo, há alguma maneira de fazer um request de várias tabela_referencia, ou múltiplos códigos de carros? Ou o caminho seria fazer uma função em que estes parâmetros sejam definidos em uma lista e depois roda-se um apply ou loop (semelhante ao case da sabesp) ?
Olá Henrique,
Respondemos essa dúvida na nossa live lá no Youtube. Segue o código de exemplo para referência:
library(httr)
library(httr2)
u_base <- "https://brasilapi.com.br/api"
endpoint_preco <- "/fipe/preco/v1/"
carro <- "004530-6"
u_fipe_preco <- paste0(u_base, endpoint_preco, carro)
q_tabela <- list(tabela_referencia = 282)
r_fipe_preco <- GET(u_fipe_preco, query = q_tabela)
preco <- r_fipe_preco |>
content(simplifyDataFrame = TRUE) |>
tibble::as_tibble()
preco
vetor_de_meses <- 100:280
baixa_um_mes <- function(mes){
print(mes)
carro <- "004530-6"
u_fipe_preco <- paste0(u_base, endpoint_preco, carro)
q_tabela <- list(tabela_referencia = 282)
r_fipe_preco <- GET(u_fipe_preco, query = q_tabela)
r_fipe_preco |>
content(simplifyDataFrame = TRUE) |>
tibble::as_tibble()
}
tictoc::tic()
tabela_com_varios_meses <- purrr::map_dfr(
vetor_de_meses, baixa_um_mes)
tictoc::toc()
tictoc::tic()
tabela_com_varios_meses <- furrr::future_map_dfr(
vetor_de_meses, baixa_um_mes)
tictoc::toc()