SOQL Socrata查询之间的日期时间

时间:2018-11-25 23:05:44

标签: python api socrata soda opendata

我可以知道下面的代码有什么问题吗?我想查询date_occ在'2015-01-10T12:00:00'和'2015-12-31T24:00:00'之间的所有地方

response  = requests.get('https://data.lacity.org/api/id/7fvc-faax.json?$select=*&$where = date_occ between 2015-01-10T12:00:00 and 2015-12-131T24:00:00')

我收到以下错误:  无法识别的参数[$ where]

我意识到以下内容也不可行

response  = requests.get('https://data.lacity.org/api/id/7fvc-faax.json?$select=*&vict_age >20')
data = response.json()
data = json_normalize(data)
data = pd.DataFrame(data)

但这可行:

response  = requests.get('https://data.lacity.org/api/id/7fvc-faax.json?$select=*&vict_sex=M')

我在这里想念什么?

1 个答案:

答案 0 :(得分:0)

在此问题中提出了一些问题和答案。首先从第二个查询开始;您要查看20岁以上的年龄的地方。查看元数据(单击向下箭头),受害者年龄不是数字,而是文本字符串。因此,您将无法使用大于,小于等运算符。但是,您可以查找“等于”。以下查询将起作用:

https://data.lacity.org/resource/7fvc-faax.json?$where=vict_age = '20'

注意:我删除了$select,而只是使用$where来简化显示。

您的第三个示例可以正常工作,因为您已将其设置为查询文本字段。如果要LA将其更改为数字,请单击省略号按钮下的“联系数据集所有者”。

您的第一个日期问题有一些更改。首先,您的单引号未对齐,并且有些缺少。其次,后一个日期是2015-12-131T24:00:00,该日期无效。最后,门户网站上的数据没有时间戳,因此您只需要年-月-日。这将起作用:

https://data.lacity.org/resource/7fvc-faax.json?$where=date_occ between '2015-01-10' and '2015-12-13'

最后,我建议您使用URL结构https://data.lacity.org/resource/7fvc-faax.json?而不是/api/id/。前者是基于Socrata的API的正确URL结构。