2016-12-12 1 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