带有多个过滤器的ckan datastore_search API

时间:2016-12-12 13:01:56

标签: ajax api ckan

我正在调用此数据集:

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}

我的搜索结果中是否有方法或其他参数可用于“打包”和“堆肥箱”?

1 个答案:

答案 0 :(得分: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