GetPropertyVTQCount サービスの使用
GetPropertyVTQCount サービスは、ランタイムに ThingWorx 内で取得または設定された Thing、Thing Template、または Thing Shape に定義されている Thing プロパティの数を返します。このサービスは、ThingWorx プラットフォームの property_vtq プロパティの永続化プロバイダデータベーステーブルから select count をクエリーします。この数の結果は、ランタイムで、指定された名前、ThingWorx ベースタイプ、指定されたエンティティ名などを持つインデックス付きプロパティの値の総数によって、クエリーやプロパティ値の取得のパフォーマンスを最適化する方法を決定するのに役立ちます。クエリーと取得は、これらの property_vtq の値のデータベースインデックシングによって影響を受ける可能性があります。
サービスの詳細
詳細
説明
クエリー基準によって指定されたプロパティの数を返します。
パラメータ
query
QUERY ベースタイプ
使用可能な値については、「サポートされているクエリーフィルタタプルエレメント」を参照してください。
結果 (無効なクエリーパラメータ)
クエリーが無効であることを示すエラーメッセージ。
結果 (有効なクエリーパラメータ)
数値
サポートされているクエリーフィルタタプルエレメント
GetPropertyVTQCount サービスは、そのクエリーフィルタ内で entityNameMaskentityTypeMaskpropertyNameMaskpropertyBaseType、および propertyIsIndexed の 5 つのエレメントタイプをサポートしています。
* 
これらのエレメントタイプでは大文字と小文字が区別されます。
5 つのエレメントタイプの組み合わせを GetPropertyVTQCount サービスに渡すことができ、これらはフィルタタプルと呼ばれます。これらは以下のような ThingWorx フィルタコレクションとして実装されます。
{ "filters": [ {...}, {...}], "type": "AND" }
ここで、{...} は 1 つのエレメントタイプフィルタです。この例では、AND ThingWorx フィルタコレクションとして定義する必要があるフィルタタプル内に、2 つのエレメントタイプフィルタがあります。
以下の表では、
次の各エレメントタイプフィルタは 1 つのフィルタタプルにつき 0 または 1 回だけ存在できます。
1 つのエレメントタイプフィルタ内で、3 つのフィールド (例: fieldNametypevalue) を定義します。
Mask という接尾辞が付いたフィールドでは、値にワイルドカード文字/アスタリスクを含めることができます。
フィールド名 (エレメントタイプ)
タイプ
値タイプ
説明
値の例
JSON の例
entityNameMask
部分一致
STRING
オプションのフィールド。entityNameMask は暗黙的なフィールドの名前です。
その値のタイプは STRING である必要があります。これには値としてエンティティの名前が含まれ、property_vtq 内の、指定された value と部分一致するレコードだけを選択します。
*
Thing1
*hing1*
{ "fieldName": "entityNameMask", "type": "LIKE", "value", "*" }
{ "fieldName": "entityNameMask", "type": "LIKE", "value", "Thing1" }
{ "fieldName": "entityNameMask", "type": "LIKE", "value", "*hing1*" }
entityTypeMask
部分一致
STRING
オプションのフィールド。entityTypeMask は暗黙的なフィールドの名前です。
その値のタイプは STRING である必要があります。これには値としてエンティティのタイプが含まれ、property_vtq 内の、指定された value と部分一致するレコードだけを選択します。
* 
多くのエンティティタイプでは 1 つのタイプしか指定できませんが、Thing またはその文字列のワイルドカードバージョンは数データを返します。その他のエンティティタイプの場合、一致は検出されず、数は 0 になると予想されます。
*
Thing
*hin*
{ "fieldName": "entityTypeMask", "type": "LIKE", "value", "*" }
{ "fieldName": "entityTypeMask", "type": "LIKE", "value", "Thing" }
{ "fieldName": "entityTypeMask", "type": "LIKE", "value", "*Thin*" }
propertyNameMask
部分一致
STRING
オプションのフィールド。propertyNameMask は暗黙的なフィールドの名前です。
その値のタイプは STRING である必要があります。これには値としてプロパティの名前が含まれ、property_vtq 内の、指定された 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
部分一致
STRING
オプションのフィールド。propertyBasetype は暗黙的なフィールドの名前です。
* 
これは NameMask に許容される値ではありません。
その値のタイプは STRING である必要があります。これには値として有効なベースタイプの名前が含まれ、property_vtq 内の、指定された値と部分一致するレコードだけを選択します。
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 内の、指定された value と等しいインデックス付きプロパティとインデックスなしプロパティをフィルタします。
有効な値は true および false です。
true
false
{ "fieldName": "propertyIsIndexed", "type": "EQ", "value", true}
{ "fieldName": "propertyIsIndexed", "type": "EQ", "value", false}
クエリーのユースケース
内容
説明
GetPropertyVTQCount クエリー JSON の例
ThingWorx プラットフォームのランタイムで、インデックス付き ThingName 値が含まれているプロパティの数を特定します。
任意 (*) の Thing プロパティで Thing (Thing1) が指定されている回数を調べて、それがプラットフォーム内のカスタムアプリケーションモデル内で使用されている回数を特定します。これは QueryImplementingThingOptimized サービスへのクエリーパラメータ入力として提供される可能性があるプロパティ機能に対して、さらに最適化された "Where Used" クエリーとなる可能性があります。
{
"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 プラットフォームのランタイムで、インデックシングされていない、STRING ベースタイプを持つ、モデル番号 B-X42 が含まれているプロパティの数 (つまり Thing の数) を特定します。
プラットフォームで新しい B-X42 バッテリタイプの Thing としてモデル化されているバッテリの数をモデル番号に基づいて調べます。
{
"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 プラットフォームのランタイムで、インデックシングされており、STRING ベースタイプを持つ、モデル番号 B-X* が含まれているプロパティの数 (つまり Thing の数) を特定します。
プラットフォームでモデル番号 (1、2、3、41、43 など) に関係なく、バッテリタイプの Thing としてモデル化されているバッテリの数を調べます。
{
"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"
}
無効なフィルタタプル
無効なクエリー結果を回避するため、次のような無効なフィルタタプルを使用しないでください。
無効なクエリー
エラー結果の原因となる例
フィルタタプルフィールドで OR フィルタコレクションが指定されている。
* 
フィルタのタプルは AND フィルタコレクションとして結合する必要があります。
{
"filters": {
"filters": [
{
"fieldName": "propertyBaseType",
"type": "LIKE",
"value": "String"
},
{
"fieldName": "propertyIsIndexed",
"type": "EQ",
"value": true
}
],
"type": "OR"
},
"type": "SELF"
}
フィールド名として 5 つのエレメントタイプのうちの 1 つが 2 回以上出現する。
* 
サポートされている各フィールド名はフィルタタプルごとに最大で 1 回出現する必要があります。
{
"filters": {
"filters": [
{
"fieldName": "propertyBaseType",
"type": "LIKE",
"value": "String"
},
{
"fieldName": "propertyBaseType",
"type": "LIKE",
"value": "Long"
}
],
"type": "AND"
},
"type": "SELF"
}
propertyBaseType の値が無効である。
* 
propertyIsIndexed が true または false のどちらに設定されているかに基づいて、propertyBaseType には上記の表の説明列に記載されているベースタイプのいずれか 1 つだけを指定します。
{
"filters": {
"filters": [
{
"fieldName": "propertyBaseType",
"type": "LIKE",
"value": "InvalidType"
},
{
"fieldName": "propertyIsIndexed",
"type": "EQ",
"value": true
}
],
"type": "AND"
},
"type": "SELF"
}
fieldName の値が無効である。
* 
entityNameMaskentityTypeMaskpropertyNameMaskpropertyBaseTypepropertyIsIndexed のいずれか 1 つだけを指定します。
{
"filters": {
"filters": [
{
"fieldName": "invalidFieldName",
"type": "LIKE",
"value": "*"
}
],
"type": "AND"
},
"type": "SELF"
}
これは役に立ちましたか?