Использование сервиса GetPropertyVTQCount
Сервис GetPropertyVTQCount возвращает количество свойств вещи, определенных для вещи, шаблона вещи или профиля вещи, которые были приняты или заданы в ThingWorx во время выполнения. Сервис запрашивает значение счетчика выборки из таблицы базы данных поставщика хранилища данных свойства property_vtq платформы ThingWorx Platform. Этот результат подсчета помогает определить, как во время выполнения оптимизировать производительность запросов или прием значений свойств с учетом общего числа значений индексированных свойств для конкретного имени, базового типа ThingWorx, конкретного наименования сущности и т. д. Индексирование и прием могут зависеть от индексирования базы данных этих значений property_vtq.
Сведения о сервисе
Сведения
Описание
Возвращает число свойств, указанных в критериях запроса.
Параметры
query
Базовый тип QUERY
Допустимые значения см. в разделе Поддерживаемые элементы кортежа фильтра запроса.
Результат (недопустимый параметр запроса)
Сообщение об ошибке, указывающее на недопустимый запрос.
Результат (допустимый параметр запроса)
Число
Поддерживаемые элементы кортежа фильтра запроса
Сервис GetPropertyVTQCount поддерживает в своих фильтрах запросов пять типов элементов: entityNameMask, entityTypeMask, propertyNameMask, propertyBaseType и propertyIsIndexed.
* 
Эти типы элементов чувствительны к регистру.
В сервис GetPropertyVTQCount можно передать комбинации из пяти типов элементов, которые называют кортежами фильтров. Они реализуются как набор фильтров ThingWorx, подобный следующему:
{ "filters": [ {...}, {...}], "type": "AND" }
Здесь {...} - фильтр одного типа. В этом примере в кортеже фильтра имеется два элемента типа фильтра, которые должны быть определены как набор фильтров ThingWorx с условием "И".
В приведенной ниже таблице
Каждый из следующих элементов типа фильтров может отсутствовать или существовать только 1 раз в каждом кортеже фильтров.
В одном элементе типа фильтра определяются три поля (например, fieldName, type и value).
Для любого поля с суффиксом Maskзначения могут содержать подстановочные символы или звездочки.
Имя поля (тип элемента)
Тип
Тип значения
Описание
Примеры значений:
Примеры JSON
entityNameMask
LIKE
STRING
Необязательное поле. entityNameMask является именем неявного поля.
Значение должно иметь тип STRING и содержать имя сущности в качестве значения для выбора только тех записей в property_vtq, которые удовлетворяют условию LIKE для указанного значения value.
*
Thing1
*hing1*
{ "fieldName": "entityNameMask", "type": "LIKE", "value", "*" }
{ "fieldName": "entityNameMask", "type": "LIKE", "value", "Thing1" }
{ "fieldName": "entityNameMask", "type": "LIKE", "value", "*hing1*" }
entityTypeMask
LIKE
STRING
Необязательное поле. entityTypeMask является именем неявного поля.
Значение должно иметь тип STRING и содержать тип сущности в качестве значения для выбора записей в property_vtq, которые удовлетворяют условию LIKE для указанного значения value.
* 
В то время как многие типы сущностей могут указывать только один тип, строка Thing или ее версия с подстановочными знаками будет возвращать любое количество данных. Для других типов сущностей совпадения не будут найдены, и вероятным будет нулевой ответ.
*
Thing
*hin*
{ "fieldName": "entityTypeMask", "type": "LIKE", "value", "*" }
{ "fieldName": "entityTypeMask", "type": "LIKE", "value", "Thing" }
{ "fieldName": "entityTypeMask", "type": "LIKE", "value", "*Thin*" }
propertyNameMask
LIKE
STRING
Необязательное поле. propertyNameMask является именем неявного поля.
Значение должно иметь тип STRING и содержать имя свойства в качестве значения для выбора записей в property_vtq, которые удовлетворяют условию LIKE для указанного значения value.
*
prop1
*rop1*
*erialNumber
model*umbe*
{ "fieldName": "propertyNameMask", "type": "LIKE", "value", "*" }
{ "fieldName": "propertyNameMask", "type": "LIKE", "value", "prop1" }
{ "fieldName": "propertyNameMask", "type": "LIKE", "value", "*rop1*" }
{ "fieldName": "propertyNameMask", "type": "LIKE", "value", "*erialNumber" }
{ "fieldName": "propertyNameMask", "type": "LIKE", "value", "model*umbe" }
propertyBaseType
LIKE
STRING
Необязательное поле. propertyBasetype является именем неявного поля.
* 
Это не является допустимым значением NameMask.
Значение должно иметь тип STRING и содержать имя действительного базового типа в качестве значения для выбора записей в property_vtq, которые удовлетворяют условию LIKE для указанного значения value.
Если propertyIsIndexed имеет значение true, то значение propertyBaseType должно быть допустимым индексируемым базовым наименованием базового типа одного из следующих значений:
STRING
NUMBER
INTEGER
LONG
BOOLEAN
DATETIME
THINGNAME
USERNAME
GROUPNAME
HYPERLINK
MASHUPNAME
MENUNAME
DASHBOARDNAME
TEXT
GUID
NOTIFICATIONCONTENTNAME
NOTIFICATIONDEFINITIONNAME
STYLETHEMENAME
THINGGROUPNAME
Если propertyIsIndexed имеет значение false, можно указать один из следующих вариантов:
PASSWORD
INFOTABLE
LOCATION
IMAGE
XML
JSON
QUERY
HTML
BLOB
VEC2
VEC3
VEC4
THINGCODE
thingname
thingNaMe
THINGNAME
THINGNamE
String
STRING
BOOLean
Boolean
veC2
{ "fieldName": "propertyBaseType", "type": "LIKE", "value", "thingname" }
{ "fieldName": "propertyBaseType", "type": "LIKE", "value", "thingNaMe" }
{ "fieldName": "propertyBaseType", "type": "LIKE", "value", "THINGNAME" }
{ "fieldName": "propertyBaseType", "type": "LIKE", "value", "THINGNamE" }
{ "fieldName": "propertyBaseType", "type": "LIKE", "value", "String" }
{ "fieldName": "propertyBaseType", "type": "LIKE", "value", "STRING" }
{ "fieldName": "propertyBaseType", "type": "LIKE", "value", "BOOLean" }
{ "fieldName": "propertyBaseType", "type": "LIKE", "value", "Boolean" }
{ "fieldName": "propertyBaseType", "type": "LIKE", "value", "veC2" }
propertyIsIndexed
EQ
BOOLEAN
Необязательное поле. propertyIsIndexed является именем неявного поля.
* 
Это не является допустимым значением NameMask.
Его тип значения должен быть допустимым значением BOOLEAN, которое используется для фильтрации индексированных и неиндексированных свойств в property_vtq, которые удовлетворяют условию EQ для указанного значения value.
Допустимыми значениями являются true и false.
true
false
{ "fieldName": "propertyIsIndexed", "type": "EQ", "value", true}
{ "fieldName": "propertyIsIndexed", "type": "EQ", "value", false}
Варианты использования запросов
Действия
Причины
Пример запроса JSON GetPropertyVTQCount
Определить во время выполнения платформы ThingWorx число свойств, содержащих индексированное значение наименования вещи.
Вы хоитите занать, сколько раз вещь (Thing1) указана в любом (*) свойстве вещи, чтобы определить, сколько раз оно используется в пользовательской модели приложения в платформе. Это может быть примером большей оптимизации запроса "Где используется" для функциональности свойств, которые могут быть предоставлены как входные параметры запроса для сервиса QueryImplementingThingOptimized:
{
"filters": {
"fieldName": "*",
"type": "LIKE",
"value": "Thing1"
}
}
{
"filters": {
"filters": [
{
"fieldName": "propertyBaseType",
"type": "LIKE",
"value": "ThingName"
},
{
"fieldName": "propertyIsIndexed",
"type": "EQ",
"value": true
}
],
"type": "AND"
},
"type": "SELF"
}
Определите во время выполнения платформы ThingWorx число свойств (и, соответственно, вещей), содержащих обозначение модели B-X42, которые не индексируются и имеют базовый тип STRING.
Необходимо узнать, сколько аккумуляторов, моделируемых как вещи платформы, имеют новый тип аккумулятора B-X42 в соответствии с обозначением модели.
{
"filters": {
"fieldName": "modelNumber",
"type": "LIKE",
"value": "B-X42"
}
}
{
"filters": {
"filters": [
{
"fieldName": "propertyBaseType",
"type": "LIKE",
"value": "String"
},
{
"fieldName": "propertyIsIndexed",
"type": "EQ",
"value": false
},
{
"fieldName": "propertyNameMask",
"type": "LIKE",
"value": "B-X42"
}
],
"type": "AND"
},
"type": "SELF"
}
Определите во время выполнения платформы ThingWorx число свойств (и, соответственно, вещей), содержащих обозначение модели B-X*, которые индексируются и имеют базовый тип STRING.
Требуется узнать, сколько аккумуляторов, моделируемых как вещи в вашей платформе, имеют тип аккумулятора безотносительно к конкретному значению обозначения модели (т. е. 1, 2, 3, 41, 43 и т. д.).
{
"filters": {
"fieldName": "modelNumber",
"type": "LIKE",
"value": "B-X*"
}
}
{
"filters": {
"filters": [
{
"fieldName": "propertyBaseType",
"type": "LIKE",
"value": "String"
},
{
"fieldName": "propertyIsIndexed",
"type": "EQ",
"value": true
},
{
"fieldName": "propertyNameMask",
"type": "LIKE",
"value": "B-X*"
}
],
"type": "AND"
},
"type": "SELF"
}
Недопустимые кортежи фильтра
Чтобы не получить недействительные результаты запроса, не используйте следующие недопустимые кортежи фильтра:
Недопустимый запрос
Пример, который приведет к ошибочным результатам
Отфильтруйте поля кортежа, которые задают наборы фильтров с условием ИЛИ.
* 
Кортежи фильтра должны быть объединены как набор фильтров с условием И.
{
"filters": {
"filters": [
{
"fieldName": "propertyBaseType",
"type": "LIKE",
"value": "String"
},
{
"fieldName": "propertyIsIndexed",
"type": "EQ",
"value": true
}
],
"type": "OR"
},
"type": "SELF"
}
Один из пяти элементов типа в качестве имен полей встречается более одного раза.
* 
Каждое из поддерживаемых имен полей должно выполняться не более одного раза для каждого кортежа фильтра.
{
"filters": {
"filters": [
{
"fieldName": "propertyBaseType",
"type": "LIKE",
"value": "String"
},
{
"fieldName": "propertyBaseType",
"type": "LIKE",
"value": "Long"
}
],
"type": "AND"
},
"type": "SELF"
}
Недопустимые значения для propertyBaseType.
* 
Укажите только один из базовых типов, перечисленных в столбце описания в таблице выше для propertyBaseType, в зависимости от того, имеет ли propertyIsIndexed значение true или false.
{
"filters": {
"filters": [
{
"fieldName": "propertyBaseType",
"type": "LIKE",
"value": "InvalidType"
},
{
"fieldName": "propertyIsIndexed",
"type": "EQ",
"value": true
}
],
"type": "AND"
},
"type": "SELF"
}
Недопустимые значения для fieldname.
* 
Укажите только одну из опций entityNameMask, entityTypeMask, propertyNameMask, propertyBaseType, .propertyIsIndexed.
{
"filters": {
"filters": [
{
"fieldName": "invalidFieldName",
"type": "LIKE",
"value": "*"
}
],
"type": "AND"
},
"type": "SELF"
}
Было ли это полезно?