Я получаю сообщение об ошибке Unrecognized arguments при попытке применить операцию <= к текстовому полю SoQL. Любая помощь очень ценится.
Я пытался применить несколько разных фильтров к этому текстовому полю, но работает только операция =. Когда я пытаюсь использовать любой другой, я получаю сообщение об ошибке «Неопознанные аргументы».
Например: https://data.sfgov.org/resource/bbb8-hzi6.json?start24=10:00 (отлично работает) но https://data.sfgov.org/resource/bbb8-hzi6.json?start24<=10:00 (сбой)
Согласно документации здесь https://dev.socrata.com/docs/datatypes/text.html#, <= оценивает строки, которые в алфавитном порядке предшествуют или равны. Я ожидаю, что эти операции будут работать с текстовыми строками, как указано.
Я бы порекомендовал вам связаться с [email protected] по этому вопросу. Похоже, что API ведет себя не так, как описано в документации. В том же наборе данных текстовый тип данных (но с более традиционной нумерацией) не работает https://data.sfgov.org/resource/bbb8-hzi6.json?block%3C=4807
. Другие перестановки также не работают.
@TomSchenkJr спасибо, что изучили это. Мой первоначальный URL-адрес действительно включает предложение where, однако оно было довольно сложным, поэтому я упростил его для примера. Я новичок в SoQL, поэтому я подумал, что может быть приведение типов или что-то еще, что я упустил, но я считаю, что вы правы в том, что API просто не ведет себя так, как описано в документации. Спасибо еще раз!
API Socrata использует обычные параметры GET. В вашем примере вы выполняете простая фильтрация, что позволяет вам просто выполнять точные совпадения.
https://data.sfgov.org/resource/bbb8-hzi6.json?start24=10:00
start24=10:00
имеет параметр GET start24
со значением 10:00
Однако в вашем примере с <=
. Это означает нечто совершенно иное в мире URL; это означает:
start24<=10:00
имеет параметр GET start24<
со значением 10:00
.Поскольку вы не можете использовать другие операторы, такие как <=
, Socrata использует запросы SoQL, в которых специальные ключевые слова начинаются с $
; например $where
.
https://data.sfgov.org/resource/bbb8-hzi6.json?$where=start24< = "10:00"
Теперь это переводится на:
$where=start24< = "10:00"
имеет параметр GET $where
со значением start24< = "10:00"
Теперь это Socrata может обработать и вернуть ваши результаты.
Вау, это отлично работает! Спасибо за ответ и разъяснение того, как правильно построить предложение where.
Это не ответ, но я копаюсь в этом и добился определенного прогресса. Для тестирования я использовал отдельный набор данных с четким числовым столбцом. Я обнаружил, что оператор «меньше чем» (
<=
) плохо работает без оператора$where
. То естьhttps://data.cityofchicago.org/resource/xzkq-xp2w.json?$where=typical_hours%3C=20
сработало там, гдеhttps://data.cityofchicago.org/resource/xzkq-xp2w.json?typical_hours%3C=20
нет. Однако это не решает вашу проблему, но заслуживает внимания.