ckan - 在数据存储 API 中按范围过滤

标签 ckan

数据存储 API 文档位于 http://docs.ckan.org/en/ckan-2.2/datastore.html描述了“datastore_delete”或“datastore_search”等方法如何包含“filter”参数来过滤结果。

filters (dictionary) – filters to apply before deleting (eg {“name”: “fred”}). If missing delete whole table and all dependent views. (optional)

考虑到 {"name": "fred"} 示例,过滤似乎基于精确匹配。但是,是否也可以指定一个范围,例如获得大于/小于给定值的结果?

例如,如果我有一个名为“日期”的字段的数据存储,其值从“2014-06-12T12:03:10.052000”(最旧)到“2014-06-12T16:08:39.542000”(最新)在我的记录中,我如何才能获得例如早于 2014-06-12T14:00:00 或晚于 2014-06-12T15:00:00 的记录?

欢迎提供任何示例或指向文档的指针。谢谢!

最佳答案

答案是,从 CKAN 2.2 开始,这是不可能的。 datastore_delete 和 datastore_search 操作仅采用“field = value”类型的过滤器。

对于 datastore_search,有一个替代方案:datastore_search_sql它允许您提供自己的 SQL 查询,从而实现范围搜索。 (我认为限制是这仅适用于公共(public)数据集,并且需要只读数据库用户,CKAN 仅支持 Postgres 9.1+)。

有一个实验分支,1725目前正在开发,它将允许插件扩展数据存储运行的 SQL 查询。这将允许插件实现新类型的过滤器,例如范围。如果您是开发人员,您可能想尝试该分支。

关于ckan - 在数据存储 API 中按范围过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24206728/

相关文章:

python - CKAN - 自定义数据字段

metadata - 项目开放数据 data.xml 格式在哪里定义

postgresql - CKAN搜索数据

python - 无法在 CKAN 中验证上传

jetty - 如何在 Ubuntu 16.04 中为 CKAN 设置 jetty.home

python - 如何在 CKAN 中添加新页面?

apache - CKAN可以支持Solr 7.0吗?

api - 通过单个 API 调用获取 CKAN 中资源的数据集 ID/名称?

CKAN 使用 jsonpdataproxy.appspot.com 而不是本地数据集

ckan - 为私有(private)数据集启用 CKAN 事件流?