Dienst "GetPropertyVTQCount" verwenden
Der Dienst GetPropertyVTQCount gibt eine Anzahl von Dingeigenschaften zurück, die für ein Ding, eine Dingvorlage oder eine Dingform definiert sind und zur Laufzeit in ThingWorx erfasst oder festgelegt wurden. Der Dienst fragt eine ausgewählte Anzahl aus der Datenbanktabelle property_vtq mit Eigenschaft-Persistenzanbietern der ThingWorx Plattform ab. Mithilfe dieses Anzahlergebnisses kann ermittelt werden, wie die Leistung von Abfragen oder die Erfassung von Eigenschaftswerten aufgrund der Gesamtzahl indizierter Eigenschaftswerte eines bestimmten Namens, ThingWorx Basistyps, für einen bestimmten Entitätsnamen usw. zur Laufzeit optimiert werden kann. Abfrage und Erfassung können von der Datenbankindexierung dieser property_vtq-Werte beeinflusst werden.
Dienstdetails
Details
Beschreibung
Gibt die Anzahl der Eigenschaften zurück, die durch die Abfragekriterien angegeben werden.
Parameter
query
Basistyp QUERY
Zulässige Werte finden Sie unter Unterstützte Abfragefilter-Tupel-Elemente.
Ergebnis (ungültiger Abfrageparameter)
Fehlermeldung, die besagt, dass die Abfrage ungültig ist.
Ergebnis (gültiger Abfrageparameter)
Zahl
Unterstützte Abfragefilter-Tupel-Elemente
Der Dienst GetPropertyVTQCount unterstützt in seinen Abfragefiltern fünf Elementtypen: entityNameMask, entityTypeMask, propertyNameMask, propertyBaseType und propertyIsIndexed.
* 
Bei diesen Elementtypen wird die Groß-/Kleinschreibung beachtet.
Eine Kombination der fünf Elementtypen kann an den Dienst GetPropertyVTQCount übergeben werden. Diese werden als Filter-Tupel bezeichnet. Sie werden wie folgt als ThingWorx Filtersammlung implementiert:
{ "filters": [ {...}, {...}], "type": "AND" }
Hierbei ist {...} ein Elementtypfilter. In diesem Beispiel gibt es zwei Elementtypfilter innerhalb eines Filter-Tupels, die als eine AND ThingWorx Filtersammlung definiert werden müssen.
Für die Tabelle unten gilt Folgendes:
Jeder der folgenden Elementtypfilter kann nur 0 oder 1 Mal pro Filter-Tupel vorhanden sein.
Innerhalb eines Elementtypfilters werden drei Felder definiert (z.B. fieldName, type, value).
Für jedes Feld mit dem Suffix Mask können die Werte Platzhalterzeichen/Sternchen enthalten.
Feldname (Elementtyp)
Typ
Werttyp
Beschreibung
Beispielwert(e)
JSON-Beispiele
entityNameMask
LIKE
STRING
Optionales Feld. entityNameMask ist ein Name eines impliziten Felds.
Der Wert muss den Typ STRING aufweisen, eine Zeichenfolge, die den Namen der Entität als Wert enthält, um nur Datensätze in property_vtq auszuwählen, die dem angegebenen Wert ähneln.
*
Thing1
*hing1*
{ "fieldName": "entityNameMask", "type": "LIKE", "value", "*" }
{ "fieldName": "entityNameMask", "type": "LIKE", "value", "Thing1" }
{ "fieldName": "entityNameMask", "type": "LIKE", "value", "*hing1*" }
entityTypeMask
LIKE
STRING
Optionales Feld. entityTypeMask ist ein Name eines impliziten Felds.
Der Wert muss den Typ STRING aufweisen, eine Zeichenfolge, die den Typ der Entität als Wert enthält, um nur Datensätze in property_vtq auszuwählen, die dem angegebenen Wert ähneln.
* 
Während viele Entitätstypen nur einen Typ angeben können, gibt Thing oder die Platzhalterversion dieser Zeichenfolge eine beliebige Anzahl Daten zurück. Für andere Entitätstypen werden keine Übereinstimmungen gefunden, und die Anzahl 0 ist wahrscheinlich.
*
Thing
*hin*
{ "fieldName": "entityTypeMask", "type": "LIKE", "value", "*" }
{ "fieldName": "entityTypeMask", "type": "LIKE", "value", "Thing" }
{ "fieldName": "entityTypeMask", "type": "LIKE", "value", "*Thin*" }
propertyNameMask
LIKE
STRING
Optionales Feld. propertyNameMask ist ein Name eines impliziten Felds.
Der Wert muss den Typ STRING aufweisen, eine Zeichenfolge, die den Namen der Eigenschaft als Wert enthält, um nur Datensätze in property_vtq auszuwählen, die dem angegebenen Wert ähneln.
*
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
Optionales Feld. propertyBasetype ist ein Name eines impliziten Felds.
* 
Dies ist kein zulässiger NameMask-Wert.
Der Wert muss den Typ STRING aufweisen, eine Zeichenfolge, die den Namen eines gültigen Basistyps als Wert enthält, um nur Datensätze in property_vtq auszuwählen, die dem angegebenen Wert ähneln.
Wenn propertyIsIndexed auf "true" festgelegt ist, muss der propertyBaseType-Wert einer der folgenden gültigen indizierbaren Basistyp-Anzeigenamen sein:
STRING
NUMBER
INTEGER
LONG
BOOLEAN
DATETIME
THINGNAME
USERNAME
GROUPNAME
HYPERLINK
MASHUPNAME
MENUNAME
DASHBOARDNAME
TEXT
GUID
NOTIFICATIONCONTENTNAME
NOTIFICATIONDEFINITIONNAME
STYLETHEMENAME
THINGGROUPNAME
Wenn propertyIsIndexed auf "false" festgelegt ist, kann eine der folgenden Optionen angegeben werden:
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
Optionales Feld. propertyIsIndexed ist ein Name eines impliziten Felds.
* 
Dies ist kein zulässiger NameMask-Wert.
Sein Werttyp muss ein gültiger BOOLEAN-Wert sein, der verwendet wird, um indizierte und nicht indizierte Eigenschaften in property_vtq zu filtern, die gleich (EQ) dem angegebenen Wert sind.
Gültige Werte sind "true" und "false".
true
false
{ "fieldName": "propertyIsIndexed", "type": "EQ", "value", true}
{ "fieldName": "propertyIsIndexed", "type": "EQ", "value", false}
Anwendungsfälle für Abfragen
Was
Warum
JSON-Beispiel einer GetPropertyVTQCount-Abfrage
Bestimmen Sie die Anzahl der Eigenschaften in der ThingWorx Plattform-Laufzeit, die einen indizierten ThingName-Wert enthalten.
Sie möchten herausfinden, wie oft ein Ding (Thing1) in einer beliebigen (*) Dingeigenschaft angegeben wird, um zu ermitteln, wie oft es innerhalb des benutzerdefinierten Anwendungsmodells innerhalb der Plattform verwendet wird. Dies kann bei einer optimierteren "Wo verwendet"-Abfrage für die Funktionalität der Eigenschaften der Fall sein, die als Abfrageparameter-Eingabe für den Dienst QueryImplementingThingOptimized angegeben werden kann:
{
"filters": {
"fieldName": "*",
"type": "LIKE",
"value": "Thing1"
}
}
{
"filters": {
"filters": [
{
"fieldName": "propertyBaseType",
"type": "LIKE",
"value": "ThingName"
},
{
"fieldName": "propertyIsIndexed",
"type": "EQ",
"value": true
}
],
"type": "AND"
},
"type": "SELF"
}
Bestimmen Sie die Anzahl der Eigenschaften (und damit der Dinge) in der ThingWorx Plattform-Laufzeit, die die Modellnummer B-X42 enthalten, die nicht indiziert ist und den Basistyp STRING aufweist.
Sie möchten wissen, wie viele Batterien, die als Dinge in Ihrer Plattform modelliert sind, basierend auf der Modellnummer den neuen Batterietyp B-X42 aufweisen.
{
"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"
}
Bestimmen Sie die Anzahl der Eigenschaften (und damit der Dinge) in der ThingWorx Plattform-Laufzeit, die die Modellnummer B-X* enthalten, die indiziert ist und den Basistyp STRING aufweist.
Sie möchten wissen, wie viele Batterien, die als Dinge in Ihrer Plattform modelliert sind, den Batterietyp aufweisen, wobei jedoch die genaue Modellnummer (z.B. 1, 2, 3, 41, 43 usw.) irrelevant ist.
{
"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"
}
Ungültige Filter-Tupel
Verwenden Sie die folgenden ungültigen Filter-Tupel nicht, um ungültige Abfrageergebnisse zu vermeiden:
Ungültige Abfrage
Beispiel, das zu einem Fehlerergebnis führt
Filter-Tupel-Felder, die ODER-Filtersammlungen angeben.
* 
Filter-Tupel müssen als AND-Filtersammlung kombiniert werden.
{
"filters": {
"filters": [
{
"fieldName": "propertyBaseType",
"type": "LIKE",
"value": "String"
},
{
"fieldName": "propertyIsIndexed",
"type": "EQ",
"value": true
}
],
"type": "OR"
},
"type": "SELF"
}
Einer der fünf Feldnamen-Elementtypen ist mehrmals vorhanden.
* 
Jeder der unterstützten Feldnamen darf maximal einmal pro Filter-Tupel vorkommen.
{
"filters": {
"filters": [
{
"fieldName": "propertyBaseType",
"type": "LIKE",
"value": "String"
},
{
"fieldName": "propertyBaseType",
"type": "LIKE",
"value": "Long"
}
],
"type": "AND"
},
"type": "SELF"
}
Ungültige Werte für propertyBaseType.
* 
Geben Sie nur einen der Basistypen an, die in der Beschreibungsspalte der vorstehenden Tabelle für propertyBaseType aufgeführt sind, je nachdem, ob propertyIsIndexed auf "true" oder "false" festgelegt ist.
{
"filters": {
"filters": [
{
"fieldName": "propertyBaseType",
"type": "LIKE",
"value": "InvalidType"
},
{
"fieldName": "propertyIsIndexed",
"type": "EQ",
"value": true
}
],
"type": "AND"
},
"type": "SELF"
}
Ungültige Werte für fieldName.
* 
Geben Sie nur einen der Typen an: entityNameMask, entityTypeMask, propertyNameMask, propertyBaseType oder propertyIsIndexed.
{
"filters": {
"filters": [
{
"fieldName": "invalidFieldName",
"type": "LIKE",
"value": "*"
}
],
"type": "AND"
},
"type": "SELF"
}
War dies hilfreich?