Параметр запроса для сервиса запросов
Некоторые сервисы 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