Utilisation du service GetPropertyVTQCount
Le service GetPropertyVTQCount renvoie un décompte de propriétés d'objet définies sur un objet, un modèle d'objet ou une forme d'objet qui ont été ingérées ou définies dans ThingWorx à l'exécution. Le service lance une requête Select Count sur la table de base de données du fournisseur de persistance de propriétés property_vtq de ThingWorx Platform. Le résultat du décompte peut aider à déterminer comment optimiser les performances des requêtes ou l'ingestion des valeurs de propriété compte tenu du nombre total de valeurs de propriété indexées d'un nom donné, d'un type de base ThingWorx, sur un nom d'entité donné, etc. à l'exécution. Les requêtes et les ingestions peuvent être affectées par l'indexation en base de données de ces valeurs property_vtq.
Détails du service
Détails
Description
Renvoie un décompte de propriétés compte tenu des critères de requête spécifiés.
Paramètres
query
Type de base QUERY
Consultez la section Eléments de tuple de filtrage de requête pris en charge pour connaître les valeurs admises.
Résultat (paramètre de requête non valide)
Message d'erreur indiquant une requête non valide.
Résultat (paramètre de requête valide)
Nombre
Eléments de tuple de filtrage de requête pris en charge
Le service GetPropertyVTQCount prend en charge cinq types d'élément dans ses filtres de requête : entityNameMask, entityTypeMask, propertyNameMask, propertyBaseType et propertyIsIndexed.
* 
Ces types d'élément sont sensibles à la casse.
Des combinaisons des cinq types d'élément peuvent être transmises au service GetPropertyVTQCount, constituant ce que l'on appelle des tuples de filtrage. Ceux-ci sont implémentés en tant que collections de filtres ThingWorx comme suit :
{ "filters": [ {...}, {...}], "type": "AND" }
{...} correspond à un filtre de type d'élément. Dans cet exemple, deux filtres de type d'élément sont utilisés dans un tuple de filtrage qui doit être défini en tant que collection de filtres AND ThingWorx.
Dans le tableau ci-dessous :
Chacun des filtres de type d'élément ne peut exister qu'une seule fois au maximum fois par tuple de filtrage.
Dans un filtre de type d'élément, on définit trois champs (par exemple ici, fieldName, type, value).
Pour tout champ possédant un suffixe Mask, les valeurs peuvent contenir des caractères génériques/astérisques.
Nom de champ (type d'élément)
Type
Type de valeur
Description
Exemples de valeurs
Exemples de JSON
entityNameMask
LIKE
STRING
Champ facultatif. entityNameMask est un nom de champ implicite.
Sa valeur de type STRING spécifie le nom d'entité sur lequel filtrer les enregistrements de la table property_vtq pour ne sélectionner que ceux qui répondent au critère de value spécifié.
*
Thing1
*hing1*
{ "fieldName": "entityNameMask", "type": "LIKE", "value", "*" }
{ "fieldName": "entityNameMask", "type": "LIKE", "value", "Thing1" }
{ "fieldName": "entityNameMask", "type": "LIKE", "value", "*hing1*" }
entityTypeMask
LIKE
STRING
Champ facultatif. entityTypeMask est un nom de champ implicite.
Sa valeur de type STRING spécifie le type d'entité sur lequel filtrer les enregistrements de la table property_vtq pour ne sélectionner que ceux qui répondent au critère de value spécifié.
* 
Alors que de nombreuses valeurs de type ne filtrent qu'un seul type d'entité, Thing ou une version générique de cette chaîne renverra toutes les données de décompte. Pour les autres types d'entité, aucune correspondance n'est trouvée et un décompte égal à zéro est probable.
*
Objet
*hin*
{ "fieldName": "entityTypeMask", "type": "LIKE", "value", "*" }
{ "fieldName": "entityTypeMask", "type": "LIKE", "value", "Thing" }
{ "fieldName": "entityTypeMask", "type": "LIKE", "value", "*Thin*" }
propertyNameMask
LIKE
STRING
Champ facultatif. propertyNameMask est un nom de champ implicite.
Sa valeur de type STRING spécifie le nom de propriété sur lequel filtrer les enregistrements de la table property_vtq pour ne sélectionner que ceux qui répondent au critère de value spécifié.
*
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
Champ facultatif. propertyBasetype est un nom de champ implicite.
* 
Il ne s'agit pas d'une valeur NameMask autorisée.
Sa valeur de type STRING spécifie le nom de type de base valide sur lequel filtrer les enregistrements de la table property_vtq pour ne sélectionner que ceux qui répondent au critère de valeur spécifié.
Si propertyIsIndexed est défini sur "true", la valeur de propertyBaseType doit être définie sur l'un des noms de type de base indexable valide suivants :
STRING
NUMBER
INTEGER
LONG
BOOLEAN
DATETIME
THINGNAME
USERNAME
GROUPNAME
HYPERLINK
MASHUPNAME
MENUNAME
DASHBOARDNAME
TEXT
GUID
NOTIFICATIONCONTENTNAME
NOTIFICATIONDEFINITIONNAME
STYLETHEMENAME
THINGGROUPNAME
Si propertyIsIndexed est défini sur "false", vous pouvez spécifier l'un des types suivants :
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
Champ facultatif. propertyIsIndexed est un nom de champ implicite.
* 
Il ne s'agit pas d'une valeur NameMask autorisée.
Sa valeur de type BOOLEAN permet de filtrer les propriétés indexées et non indexées dans la table property_vtq en fonction du critère de value spécifié.
Les valeurs valides sont "true" et "false".
true
false
{ "fieldName": "propertyIsIndexed", "type": "EQ", "value", true}
{ "fieldName": "propertyIsIndexed", "type": "EQ", "value", false}
Cas d'utilisation des requêtes
Finalité
Contexte
Exemple de JSON de requête GetPropertyVTQCount
Déterminer le nombre de propriétés dans le runtime ThingWorx Platform qui contiennent une valeur ThingName indexée.
Vous souhaitez savoir combien de fois un objet donné (Thing1) est spécifié dans une propriété d'objet quelconque (*) pour déterminer combien de fois il est utilisé dans votre modèle d'application personnalisé sur la plateforme. Cela peut être utile pour une requête "Cas d'utilisation" plus optimisée sur la fonctionnalité des propriétés, qui pourrait être fournie comme paramètre de requête en entrée du service 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"
}
Déterminer le nombre de propriétés (et donc d'objets) dans le runtime ThingWorx Platform qui spécifient un numéro de modèle B-X42 qui n'est pas indexé et de type de base STRING.
Vous souhaitez connaître le nombre de batteries modélisées en tant qu'objets sur votre plateforme qui sont du nouveau type B-X42 en interrogeant leur numéro de modèle.
{
"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"
}
Déterminer le nombre de propriétés (et donc d'objets) dans le runtime ThingWorx Platform qui spécifient un numéro de modèle B-X* qui est indexé et de type de base STRING.
Vous souhaitez connaître le nombre de batteries modélisées en tant qu'objets sur votre plateforme qui sont de type B-X, quel que soit leur numéro de modèle (1, 2, 3, 41, 43, etc.).
{
"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"
}
Tuples de filtrage non valides
Pour éviter des résultats de requête non valides, veillez à ne pas utiliser les tuples de filtrage incorrects suivants :
Requête non valide
Exemple qui génère une erreur
Champs de tuple de filtrage qui spécifient des collections de filtres OR.
* 
Les tuples de filtrage doivent être combinés en tant que collections de filtres AND.
{
"filters": {
"filters": [
{
"fieldName": "propertyBaseType",
"type": "LIKE",
"value": "String"
},
{
"fieldName": "propertyIsIndexed",
"type": "EQ",
"value": true
}
],
"type": "OR"
},
"type": "SELF"
}
L'un des cinq types d'élément, ou noms de champ, existe plus d'une seule fois.
* 
Chacun des noms de champ pris en charge ne peut exister qu'une fois au maximum par tuple de filtrage.
{
"filters": {
"filters": [
{
"fieldName": "propertyBaseType",
"type": "LIKE",
"value": "String"
},
{
"fieldName": "propertyBaseType",
"type": "LIKE",
"value": "Long"
}
],
"type": "AND"
},
"type": "SELF"
}
Valeurs non valides pour propertyBaseType.
* 
Spécifiez uniquement l'un des types de base indiqués dans la colonne Description du tableau ci-dessus pour propertyBaseType, selon que propertyIsIndexed est défini sur "true" ou sur "false".
{
"filters": {
"filters": [
{
"fieldName": "propertyBaseType",
"type": "LIKE",
"value": "InvalidType"
},
{
"fieldName": "propertyIsIndexed",
"type": "EQ",
"value": true
}
],
"type": "AND"
},
"type": "SELF"
}
Valeurs non valides pour fieldName.
* 
Spécifiez uniquement l'un des noms suivants : entityNameMask, entityTypeMask, propertyNameMask, propertyBaseType ou propertyIsIndexed.
{
"filters": {
"filters": [
{
"fieldName": "invalidFieldName",
"type": "LIKE",
"value": "*"
}
],
"type": "AND"
},
"type": "SELF"
}
Est-ce que cela a été utile ?