Socata Soda Api Java错误:函数#LIKE未在SoQL中定义

时间:2016-08-10 17:53:45

标签: java socrata

我正在尝试使用带有此代码的soda-java api对socrata数据集进行类似查询

Soda2Consumer consumer = Soda2Consumer.newConsumer("https://data.cityofboston.gov");
SoqlQuery   departmentOfStateQuery = new SoqlQueryBuilder()
                .addSelectPhrase("entered")
                .addSelectPhrase("vendor_name")
                .addSelectPhrase("account_descr")
                .addSelectPhrase("dept_name")
                .setWhereClause("vendor_name like'IBM%'")
                .build();
consumer.query("gqai-h7bg",departmentOfStateQuery,Nomination.LIST_TYPE);

但是我收到了一个错误 Exception in thread "main" com.socrata.exceptions.MalformedQueryError: Error: function #LIKE is not defined in SoQL.: Error: function #LIKE is not defined in SoQL. 使用浏览器可以正常使用

https://data.cityofboston.gov/resource/gd7m-xsim.json?$where=vendor_name like 'IBM%'即使FF正在将其翻译为https://data.cityofboston.gov/resource/gd7m-xsim.json?$where=vendor_name%20like%20%27IBM%%27,我使用的编码也是python

1 个答案:

答案 0 :(得分:0)

LIKE仅在版本2.1 API端点上受支持:https://dev.socrata.com/docs/functions/like.html

幸运的是,该数据集存在2.1端点:https://dev.socrata.com/foundry/data.cityofboston.gov/gd7m-xsim

我能够使用以下代码获取LIKE查询:

    Soda2Consumer consumer = Soda2Consumer.newConsumer("https://data.cityofboston.gov");
    SoqlQuery query = new SoqlQueryBuilder()
            .addSelectPhrase("entered")
            .addSelectPhrase("vendor_name")
            .addSelectPhrase("account_descr")
            .addSelectPhrase("dept_name")
            .setWhereClause("vendor_name LIKE 'IBM%'")
            .build();

    System.out.println(query.toString());
    ClientResponse response = consumer.query("gd7m-xsim", HttpLowLevel.JSON_TYPE, query);
    String payload = response.getEntity(String.class);
    System.out.println(payload);