2014-06-13 76 views
3

範圍在http://docs.ckan.org/en/ckan-2.2/datastore.html數據存儲API文檔描述瞭如何的方法,如「datastore_delete」或「datastore_search」可以包括「濾波器」參數來過濾的結果。過濾通過在數據存儲區API

過濾器(字典) - 刪除前應用的過濾器(例如{「name」: 「fred」})。如果缺少刪除整個表格和所有依賴視圖。 (可選)

考慮到{"name": "fred"}示例,似乎過濾基於完全匹​​配。但是,是否也可以指定一個範圍,例如,得到比給定值更大/更小的結果?

例如,如果我有一個名爲「date」的數據存儲,其值爲「2014-06-12T12:03:10.052000」(最早的)到「2014-06-12T16:08:39.542000」(最新)在我的記錄,我怎麼能得到例如記錄早於2014-06-12T14:00:00或更新的版本來2014-06-12T15:00:00?

的任何示例或指針文檔是受歡迎的。謝謝!

回答

3

答案是,截至CKAN 2.2,這是不可能的。的datastore_delete和datastore_search行爲才類型「字段=值」的過濾器。

對於datastore_search,有一個替代方案:datastore_search_sql它允許您提供自己的SQL查詢,從而實現範圍搜索。 (我認爲的限制是,這僅適用於公共數據集,需要一個只讀數據庫用戶,這CKAN只支持Postgres的9.1+)。

有一個實驗分支,1725目前正在開發中,它允許插件擴展由數據存儲區運行的SQL查詢。這將允許插件實現新類型的過濾器,例如範圍。如果您是開發人員,您可能想嘗試該分支。

+0

實際上,這個問題的動機是解決根據時間戳字段刪除數據存儲表中的舊行的問題。澄清API功能後(謝謝!)我再次要求重點關注該特定問題:http://stackoverflow.com/questions/24288744/deleting-rows-in-datastore-by-time-range – fgalan