Определение модели ThingWorx в Composer > Моделирование > Вещи > Сервисы вещи > Параметр запроса для сервиса запросов
Параметр запроса для сервиса запросов
Некоторые сервисы ThingWorx принимают дополнительный параметр запроса. Параметр запроса является объектом значений, который настраивается по-разному в зависимости от требуемого типа запроса.
Возможные типы:
Matches, NotMatches TaggedWith,
NotTaggedWith
GT, LT, GE, LE, NE, EQ, LIKE, NOTLIKE, IN, NOTIN
Between, NotBetween MissingValue,
NotMissingValue Near, NotNear
Запросы могут использовать операторы AND/OR и включать инструкцию Sort.
Параметр запроса используется во всех сервисах, которые начинаются с инструкции Query, среди них:
Все вещи
QueryThingStreamEntries
Все потоки
QueryStreamData
QueryStreamEntries
QueryStreamEntriesWithData
Все таблицы данных
QueryDataTableEntries
Ресурс InfoTableFunctions
Query
Все шаблоны вещи
QueryImplementingThings
QueryImplementingThingsWithData
Все профили вещи
QueryImplementingThings
QueryImplementingThingsWithData
Подсистема аудита
Конфигурация
Параметр запроса имеет две конфигурируемые опции: фильтры и сортировщики. После определения параметра запроса его можно передать в сервис запросов. Ниже приведены примеры фильтров и опций сортировки для параметра запроса. Рекомендуется использовать инструменты написания сценариев и фрагменты кода в конфигураторе сценариев как стартовую точку, а затем вручную создать подходящий объект параметра запроса.
Опции единственного фильтра
Фильтр Matches или NotMatches
var query =
{
"filters": {
"type": "Matches|NotMatches",
"fieldName": "Source",
"expression": "(Kettle)|(Filler)"
}
};
Фильтр TAGGED или NOTTAGGED
var query = {
"fieldName": "tags",
"type": "NOTTAGGED",
"tags": [
{
"vocabulary": "Applications",
"vocabularyTerm": "Testing"
},
{
"vocabulary": "Plants",
"vocabularyTerm": "Sedona"
}
]
};
Одиночный оператор сравнения
* 
При использовании инструкций LIKE/NOTLIKE необходимо добавить собственные подстановочные знаки (%, * или ? для односимвольного подстановочного знака). Например, чтобы найти ThingWorx, используйте "LIKE % Th"
var query = {
"filters":{
"type": "GT, LT, GE, LE, NE, EQ, LIKE, NOTLIKE",
"fieldName": "<field_name>",
"value": "Th\\+*"
}
};
Фильтр In или Not In
var jsonArray = [12,14];
var query = {
"filters": {
"type": "IN, NOTIN",
"fieldName": "Duration",
"values": jsonArray
}
};
Фильтр Between или NotBetween
var query =
{
"filters": {
"type": "Between, NotBetween",
"fieldName": "Duration",
"from": "2",
"to": "12"
}
};
Фильтр MissingValue или NotMissingValue
var query =
{
"filters": {
"type": "MissingValue, NotMissingValue",
"fieldName": "OrderQuantity"
}
};
Фильтр Near или NotNear
var query =
{
"filters": {
"type": "Near, NotNear",
"fieldName": "fieldName",
"distance": "50",
"units": "M(iles), K(ilometers), N(autical miles)",
"location": {
"latitude": "40.12",
"longitude": "51.24",
"elevation": "300",
"units": "WGS84"
}
}
};
Опции составного фильтра
Можно комбинировать различные фильтры с помощью типа фильтра And или Or. В примере ниже будут отбираться строки, которые имеют длину больше 12 символов и помечены тегом проблемы технического обслуживания при перебоях в питании в поле tags.
var query =
{
"filters": {
"type": "And",
"filters": [
{
"type": "GT",
"fieldName": "Duration",
"value": "12"
},
{
"type": "TaggedWith",
"fieldName": "tags",
"tags": "MaintenanceIssues:PowerOutage"
}
]
}
};
Вложенные фильтры с различным типами And/Or
Для вложения фильтров с различными типами And/Or требуются ключевые слова type и filters для каждого уровня объекта JSON. Следующий синтаксис JSON для запроса получает желаемые результаты (отличные от пустой строки, которая заменяется на empty в примере ниже).
var query3 = {
"filters": {
"type": "AND",
"filters": [
{
"type": "OR",
"filters": [
{ "fieldName": "Status", "type": "LIKE", "value": "*-none-*" }
,
{ "fieldName": "Status", "type": "LIKE", "value": "empty" }
]
},
{ "fieldName": "IsDeleted", "type": "EQ", "value": false }
]
}
};
Опции сортировки
Опция сортировщиков представляет массив объектов. Существует три возможных параметра для каждого из объектов сортировки в массиве сортировщиков: fieldName, isAscending, isCaseSensitive. Обязательным является только имя поля. Параметры isAscending и isCaseSensitive по умолчанию получают значение true.
Одиночная опция сортировки
var query =
{
"sorts": [
{
"fieldName": "Material"
}
]
}
Составная опция сортировки
var query =
{
"sorts": [
{
"fieldName": "Material"
},
{
"fieldName": "OrderDate",
"isAscending": false
}
]
}
Сортировка и фильтрация
Можно применить сортировку и фильтр к тому же сервису запросов, как в следующем примере:
var query =
{
"sorts": [
{
"fieldName": "LotID",
"isAscending": false,
"isCaseSensitive": false
},
{
"fieldName": "Plant"
}
],
"filters": {
"type": "And",
"filters": [
{
"type": "GT",
"fieldName": "Duration",
"value": "12"
},
{
"type": "TaggedWith",
"fieldName": "tags",
"tags": "MaintenanceIssues:PowerOutage"
}
]
}
};
Возможные типы
Возможные типы:
EQ = равно
NE = не равно
GT = больше
GE = больше или равно
LT = меньше
LE = меньше или равно
LIKE = подобно
BETWEEN
NOTBETWEEN
Было ли это полезно?