有没有办法不使用R中的ckanr下载整个CKAN数据包?

时间:2019-01-01 15:57:37

标签: r ckan

我对CKAN不熟悉,我正在努力使用R Cran存储库中的ckanr包从加载到R中的CKAN数据API获取数据。从服务器的角度来看,下载限制为100,000个条目,因此尝试下载整个420,000个条目的返回次数不会超过前100,000个条目。该数据集提供了更新的丹麦消耗电力所产生的CO2排放历史记录,时间间隔为5分钟,单位为g / kWh。

使用下面的代码片段,我可以下载100,000个第一条目。我对特定日期范围内的大约20,000个值的间隔感兴趣。可以通过Web界面手动下载数据,但是由于我必须定期更新数据并每次都手动下载多个CSV文件,因此首选数据API下载。

任何帮助将不胜感激。

网络界面: https://www.energidataservice.dk/dataset/co2emis/resource_extract/b5a8e0bc-44af-49d7-bb57-8f968f96932d

可以通过CKAN操作API的以下操作访问数据API。

查询:https://api.energidataservice.dk/datastore_search

查询(通过SQL):https://api.energidataservice.dk/datastore_search_sqlhttps://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)

1 个答案:

答案 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