我正在尝试使用带有此代码的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
。
答案 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);