r - 有没有办法不用 R 中的 ckanr 下载整个 CKAN 数据包?
问题描述
我不熟悉 CKAN,我正在努力使用ckanr
R Cran 存储库中的包从加载到 R 中的 CKAN 数据 API 获取数据。在服务器方面,下载限制为 100,000 个条目,因此尝试下载全部 420,000 个条目不会返回超过前 100,000 个条目。该数据集提供了丹麦电力消耗的二氧化碳排放量的更新历史记录,以 5 分钟的时间间隔测量,以 g/kWh 为单位。
使用下面的代码片段,我可以下载 100,000 个第一个条目。我对特定日期范围内大约 20,000 个值的间隔感兴趣。可以通过网络界面手动下载数据,但由于我必须定期更新数据并每次手动下载多个 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)
解决方案
通过包中的ds_search_sql函数将 URL SQL 查询解析到 REST API ckanr
,我能够从 API 中提取数据。
#end_date and start_date represent interval.
library(ckanr)
library(lubridate)
start_date <- as.POSIXct("2019-01-01 00:00:00")
end_date <- as.POSIXct("2019-03-01 00:00:00")
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
推荐阅读
- windows - Windows java.exe -jar 带空格
- flutter - “$ flutter build web”抛出错误“Missing index.html”?
- postgresql - 启动错误索引 GENERATED BY DEFAULT AS IDENTITY postgresql
- sql - Oracle 子查询
- codenameone - 代号一个应用程序如何处理我的应用程序组件的手机屏幕分辨率以进行相应调整
- javascript - Material UI React中的表单验证 - 如何实现下拉列表的表单验证
- swift - 致命错误:在隐式展开可选值时意外发现 nil
- c# - WPF TreeView 分层数据绑定到对象模型
- python-3.x - 将文件传递给函数时,如何使用 Try except 来捕获 FileNotFoundError?
- react-native - 如何在本机反应中将常量作为参考?