Как использовать предложение IN в запросе маршрута iot hub

Следующий запрос не работает в запросе маршрута: $body.Weather.Temperature в ['30','50']

введите здесь описание изображения

Я проверил документацию, и синтаксис выглядит правильно.


person Henrique    schedule 06.04.2018    source источник
comment
Температура является числовым типом, поэтому правильная строка запроса должна быть $body.Weather.Temperature IN [30, 50], но после этого изменения синтаксическая ошибка по-прежнему генерируется в процессе сохранения. Похоже, это либо ошибка, либо она не поддерживается в запросе маршрутов.   -  person Roman Kiss    schedule 06.04.2018


Ответы (1)


Оператор IN и NIN (not in) используется для проверки наличия или отсутствия элемента в константах массива, таких как ['wired', 'wifi'].

В вашем случае вам нужно использовать оператор сравнения: >= и <= следующим образом:

$body.Weather.Temperature >= 30 AND $body.Weather.Temperature <= 50

Подробную информацию можно найти по адресу "Язык запросов Центра Интернета вещей для двойников устройств, заданий и маршрутизации сообщений".

Обновление:

Для выбора точного значения 30/50 вы можете использовать следующую строку запроса в качестве обходного пути.

$body.Weather.Temperature = 30 OR $body.Weather.Temperature = 50

person Rita Han    schedule 09.04.2018
comment
Мое намерение - использовать точное значение, в этом случае я хотел отфильтровать только температуры 30 и 50. Как прокомментировал выше @roman-kiss, если температура была строковым значением, это вызвало синтаксическую ошибку. - person Henrique; 09.04.2018
comment
@Henrique Извините за непонимание, я могу воспроизвести вашу проблему. Я обновляю свой ответ, добавляя обходной путь, который вы можете проверить, помогает ли он. - person Rita Han; 10.04.2018
comment
Спасибо, это сработало правильно, хотя мне не понравилась структура, предложение IN должно работать и в запросах маршрута. Я найду способ сообщить об этом в Microsoft, чтобы обновить документацию по языку запросов IoT-хаба. - person Henrique; 10.04.2018
comment
@Henrique Вы можете оставить отзыв в нижней части этот документ после входа в систему или с помощью верхней кнопки на портале Azure :). - person Rita Han; 11.04.2018
comment
@Энрике Я получаю подтверждение этой проблемы. Оператор IN поддерживается для запроса двойника устройства, но не поддерживается для запроса маршрутизации. Из document, вы можете видеть, что оператор IN находится в разделе «Двойные запросы устройств». - person Rita Han; 24.04.2018