Composer での ThingWorx モデルの定義 > モデル化 > Thing > Thing サービス > クエリーサービス用クエリーパラメータ
クエリーサービス用クエリーパラメータ
いくつかの ThingWorx サービスではオプションのクエリーパラメータを使用できます。クエリーパラメータは、リクエストされているクエリーのタイプに応じて設定が異なる値オブジェクトです。
可能なタイプは以下のとおりです。
Matches, NotMatches TaggedWith,
NotTaggedWith
GT, LT, GE, LE, NE, EQ, LIKE, NOTLIKE, IN, NOTIN
Between, NotBetween MissingValue,
NotMissingValue Near, NotNear
クエリーでは AND/OR を使用でき、並べ替えを含めることができます。
クエリーパラメータはクエリーで始まるすべてのサービスで使用されます。そのいくつかを以下に示します。
すべての Thing
QueryThingStreamEntries
すべてのストリーム
QueryStreamData
QueryStreamEntries
QueryStreamEntriesWithData
すべてのデータテーブル
QueryDataTableEntries
InfoTableFunctions リソース
Query
すべての Thing Template
QueryImplementingThings
QueryImplementingThingsWithData
すべての Thing Shape
QueryImplementingThings
QueryImplementingThingsWithData
コンフィギュレーション
クエリーパラメータには、フィルタとソーターという 2 つの設定可能なオプションがあります。クエリーパラメータを定義した後、これをクエリーサービスに渡すことができます。クエリーパラメータのフィルタオプションと並べ替えオプションの例を以下に示します。スクリプトコンフィギュレータでスクリプト作成ツールとスニペットを出発点として使用し、必要に応じてクエリーパラメータオブジェクトを手動で作成することをお勧めします。
単一フィルタオプション
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 を超え、タグフィールドで停電保守案件のタグが付いている行をフィルタしています。
var query =
{
"filters": {
"type": "And",
"filters": [
{
"type": "GT",
"fieldName": "Duration",
"value": "12"
},
{
"type": "TaggedWith",
"fieldName": "tags",
"tags": "MaintenanceIssues:PowerOutage"
}
]
}
};
And/Or タイプが異なるフィルタのネスト
And/Or タイプが異なるフィルタをネストするためには、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 の 3 つのパラメータを指定可能です。フィールド名のみが必須です。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 = like
BETWEEN
NOTBETWEEN