2016-12-12 31 views
0

我打電話此數據集:CKAN datastore_search API以多個濾波器

http://data.edinburghopendata.info/api/action/datastore_search?resource_id=4cfb5177-d3db-4efc-ac6f-351af75f9f92

與AJAX調用:

var data = { 
     resource_id: '4cfb5177-d3db-4efc-ac6f-351af75f9f92', 
     filters: '{"BankTypeNa": "Packaging", "BankTypeNa": "Compost Bins"}', 
     limit : 4757 
    }; 

    $.ajax({ 
     url: 'http://data.edinburghopendata.info/api/action/datastore_search', 
     data: data, 
     dataType: 'jsonp', 
     success: function(data) { 
     markers = data.result.records;   
     showMarkers(); 
     } 
    }); 

即給予成績僅爲第二濾波器。

http://data.edinburghopendata.info/api/action/datastore_search?resource_id=4cfb5177-d3db-4efc-ac6f-351af75f9f92&filters={%22BankTypeNa%22:%20%22Packaging%22,%20%22BankTypeNa%22:%20%22Compost%20Bins%22}

有沒有一種方法,或者其他參數,我可以用得到我的搜索結果都「包裝」和「堆肥箱」?

回答

0

如果有人能證明我錯了,但這是不可能的。理論上,您只需將這兩個值放入數組中作爲BankTypeNa鍵的值,例如

filters: '{"BankTypeNa": ["Packaging", "Compost Bins"]}' 

但是這不適用於文本列(SQL錯誤結果)。它的確適用於數字[1]。最好在github.com/ckan/ckan處提交一個問題。

我會使用datastore_search_sql端點代替,即

var data = { 
    "resource_id": "4cfb5177-d3db-4efc-ac6f-351af75f9f92", 
    "sql": "SELECT * FROM \"4cfb5177-d3db-4efc-ac6f-351af75f9f92\" WHERE \"BankTypeNa\" LIKE 'Packaging' OR \"BankTypeNa\" LIKE 'Compost Bins'", 
    "limit": 4757 
}; 

[1] CKAN: delete a list of records within the DataStore in a single query