我对CKAN不熟悉,我正在努力使用R Cran存储库中的ckanr
包从加载到R中的CKAN数据API获取数据。从服务器的角度来看,下载限制为100,000个条目,因此尝试下载整个420,000个条目的返回次数不会超过前100,000个条目。该数据集提供了更新的丹麦消耗电力所产生的CO2排放历史记录,时间间隔为5分钟,单位为g / kWh。
使用下面的代码片段,我可以下载100,000个第一条目。我对特定日期范围内的大约20,000个值的间隔感兴趣。可以通过Web界面手动下载数据,但是由于我必须定期更新数据并每次都手动下载多个CSV文件,因此首选数据API下载。
任何帮助将不胜感激。
可以通过CKAN操作API的以下操作访问数据API。
查询:https://api.energidataservice.dk/datastore_search
require(ckanr)
start_date <- min(opladning$start)
end_date <- max(opladning$slut)
ckanr_setup(url = "https://energidataservice.dk")
pkco2emis <- package_show("6e05f3b6-fcd7-4b40-8100-4416b9803881", as
= "table")
temp <- tempfile(fileext=".csv")
download.file(pkco2emis$resources$url, temp)
co2emission <- read.csv(temp)
答案 0 :(得分:0)
通过通过ckanr
包中的 ds_search_sql 函数解析对REST API的URL SQL查询,我能够从API中提取数据。
#end_date and start_date represent interval.
url_base <- 'https://api.energidataservice.dk/datastore_search_sql?
sql='
query_co2 <- 'SELECT "Minutes5DK", "CO2Emission" from "b5a8e0bc-44af-
49d7-bb57-8f968f96932d" WHERE "Minutes5UTC" > timestamp\''
query_date_start <- format(with_tz(start_date, "UTC"), "%Y-%m-%d
%H:%S")
query_date_end <- format(with_tz(end_date, "UTC"), "%Y-%m-%d %H:%S")
query_co2 <- paste0(query_co2,query_date_start,
'\' AND \"Minutes5UTC\" < timestamp\'',
query_date_end,
'\' AND \"PriceArea\" = \'DK1\'')
co2emission <- ds_search_sql(query_co2,
url = url_base,
as = "table")$records