Ежедневный запрос API в базу данных RSQLite на R - PullRequest
0 голосов
/ 12 февраля 2020

Я пытаюсь ежедневно получать данные из API и отправлять эти результаты в базу данных SQLite для последующего использования в блестящем приложении. Я выяснил, как подключиться к API и получить данные, но у меня возникают проблемы с попыткой запускать сценарий каждый день и каждый день отправлять данные API в таблицу SQLite. Вот что я попробовал до сих пор:

library(httr)
library(jsonlite)
library(tidyverse)
library(RSQLite)
# Url to feed into GET function
url<-"https://urldefense.com/v3/__http://files.airnowtech.org/airnow/yesterday/daily_data_v2.dat__;!!J30X0ZrnC1oQtbA!Yh5wIss-mzbpMRXugALJoWEKLKcg1-7VmERQwcx2ESK0PZpM5NWNml5s9MVgwHr5LD1i5w$ "
# Sends request to AirNow API to get access to data
my_raw_result<-httr::GET(url)
# Retrieve contents of a request
my_content<-httr::content(my_raw_result,as="text")
# Parse content into a dataframe 
my_content_from_delim <- my_content %>% textConnection %>% readLines %>% read.delim(text = ., sep = "|",header = FALSE)
# Set column names and filter for organizations we want
all_states_df<-my_content_from_delim%>%
  dplyr::rename("Date"="V1","AQS Code"="V2","Site Name"="V3","Parameter"="V4",
         "Concentration(PPB)"="V6","State"="V8")%>%
  dplyr::filter(Parameter=="OZONE-8HR",State %in% c("New Jersey Dept. of Environmental Protection",
                                                  "New York Dept. of Environmental Conservation",
                                                  "Delaware Dept. of Natural Resources and Environment",
                                                  "Connecticut Dept. of Energy and Environmental Protection",
                                                  "Pennsylvania Dept. of Environmental Protection",
                                                  "Maryland Department of the Environment"))%>%
  dplyr::select(Date, `AQS Code`,`Site Name`,`Concentration(PPB)`,State)
# Create database
conn <- dbConnect(RSQLite::SQLite(), "test.db")

#dbExecute(conn, "CREATE TABLE Air_Data(
#                  Date INTEGER,
#                  AQS_Code TEXT,
#                  Site_Name TEXT,
#                  Concentration INTEGER,
#                  State TEXT
#                  )")

dbWriteTable(conn, "Air_Data", all_states_df, append = T)


dbDisconnect(conn) 

Я решил, что с помощью этого скрипта я могу использовать пакет taskscheduleR и настроить его на ежедневную работу в 9 утра. Однако, когда я проверил на следующий день, чтобы увидеть, работает ли он, это не так. Любая помощь или руководство будет высоко ценится.

...