クエリ
このセクションでは、フィールドの値をフィルタリングしてクエリを実行する方法について説明します。コレクションのGET操作中に、クエリに一致するエンティティのみがALM Octane REST APIによって返されます。
クロスフィルタリングの詳細については、クロスフィルターを参照してください。
クエリステートメント
フィルタリングするには、少なくとも1つのクエリフレーズで構成されるクエリステートメントを使用します。
クエリステートメントは、GETメソッドの最後に追加されます。
例: GET .../api/shared_spaces/<space_id>/workspaces/<workspace_id>/{entity}?query="query statement"
-
クエリステートメントは二重引用符で囲まれています。 "query statement"
-
クエリステートメントの構文は次のとおりです。
"
<query phrase>[[<logical operator><query phrase>]]
"つまり、クエリステートメントに複数のクエリフレーズが含まれている場合は、各クエリフレーズをAnd (;) またはOr (||) 論理演算子で区切ります。
注: フィールドメタデータをフィルタリングする場合、特定の制限があります。たとえば、Or (||) 論理演算子はサポートされていません。詳細については、URIを使用したフィールドメタデータのフィルタリングを参照してください。
クエリフレーズ
-
クエリステートメントのクエリフレーズの構文は次のとおりです。
( [negate keyword] ( "<field name> <comparison operator> <value>" ) )
注: クエリフレーズの構文の開き括弧と閉じ括弧に注意してください。
-
クエリフレーズは括弧で囲むことができます。
演算子
クエリで提供される値は、フィールドで宣言されたデータ型と一致している必要があります。
データ型 |
EQ |
LT |
GT |
LE |
GE |
IN |
BTW |
---|---|---|---|---|---|---|---|
Integer |
|||||||
Boolean |
|||||||
DateTime |
|||||||
String |
|||||||
Memo |
|||||||
Reference |
演算子の使用
括弧は他のすべての演算子の中で最も優先順位が高く、条件が評価される順序を制御します。
括弧で囲まれた式はネストできます。
演算子 |
ランク (低い数字=高いランク) |
例 |
---|---|---|
1 |
次のステートメントは同等です。
|
|
! |
2 |
|
; | 3 | |
|| | 4 |
値
タイプ | 説明 | 例 |
---|---|---|
Numeric |
Numericは、比較演算子の後に配置されます。
|
|
Boolean |
有効な値:trueまたはfalse。 /<some_entities>?query="<some_boolean_field_name> EQ true" |
has_attachments EQ true |
String / Memo |
キャレットで包む必要があります: ^ string ^ 文字列内の特殊文字のエスケープがサポートされています。特殊文字のエスケープを参照してください。 文字列に一重引用符、二重引用符、または曲折アクセント記号が含まれている場合は、円記号でエスケープします。たとえば、d'Artagnanを'd\'Artagnan 'として渡します。n ^ mをn\^ mとして渡します。4つの「スコア」と7年を4つの「スコア」と7年として渡します。 ワイルドカードがサポートされています。ワイルドカードの使用を参照してください。 リテラルはトリミングされません。たとえば、文字列リテラル^ A ^を送信すると、サーバーは「A」と一致しない3文字の長さの値を取得します。 |
フィーチャー:
フェーズ:
|
String-based | フィルタリングする場合、DateTime値は文字列のように動作します。DateTimeを参照してください。 | |
Reference |
参照値でのフィルタリングとは、参照されるエンティティのフィールド値でフィルタリングする機能を意味します。 参照値の構文は次のとおりです。
参照フィールドは、単一のエンティティまたは複数のエンティティ、つまり複数参照フィールドを参照できます。複数参照フィールドの場合、等式演算子は包含演算子として機能します。 |
不具合エンティティには、detected_in_releaseと呼ばれるリリースエンティティへの参照フィールドがあります。release1という名前のリリースで検出されたすべての不具合をフィルタリングします。
detected_in_releaseフィールドのリリースを参照していないすべての不具合をフィルタリングします。
(nullは中括弧で囲まれていることに注意してください。) |
"No Value" |
フィールドに値がないことを指定します。nullとして表されます。これは、ユーザーが (PUTを介して) 既存の値から文字列フィールドを無効にするたびに、クライアントはnullまたは空の文字列 ( "") を送信でき、サーバーはDB nullに格納することを意味します。これは、空の文字列が非有効な値であることを意味します。 -null許容フィールド。 "No Value" は、ブール値と文字列値を除くすべての値に関連します。文字列に "No Value" を指定する方法については、以下を参照してください。 たびに (不具合がまだ閉じられていないので、不具合の決算日が定義されていない場合には、例えば) 値が存在しない、特別なキーワードヌルが定義されるべきです。このnullキーワードは、"No Value" の概念を指定するためのフィルタリングでも使用できます。 サーバー側からの文字列 /メモフィールド値の唯一の操作は、出力サニタイズ機能のためにのみ発生する可能性があります。 REST APIは、文字列/メモフィールドをトリミングしません。 空の文字列は、NULL不可能なフィールドの有効な値ではありません。null許容文字列フィールドの場合、nullは空の文字列と一致しません。
|
|
DateTime |
キャレットで包む必要があります: ^ datetime ^ 予想される日付と時刻の形式はISO-8601です。
/<some_entities>?query =”<some_date_field_name> LT ^ 2015-02-25T16:42:11Z ^ フィルタリングする場合、DateTime値は文字列のように動作します。 |
文字列値での特殊文字のエスケープがサポートされています (検索する文字列に次の文字のいずれかが含まれていて、その文字でフィルタリングする場合)。
文字 |
エスケープ文字 (URIエンコード) |
コメント |
---|---|---|
" |
\" ( %5C%22 ) |
|
^ |
\^ ( %5C%5E ) |
|
\ |
\\ ( %5C%5C ) |
|
' |
\q ( %5Cq ) |
|
< |
\l ( %5Cl ) |
|
> |
\g ( %5Cg ) |
|
* |
N/A |
この文字によるフィルタリングはサポートされていません |
{ |
\{ ( %5C%7B ) |
|
( |
\( ( %5C( ) |
|
) |
\) ( %5C) ) |
|
[ |
\[ ( %5Cb ) |
|
? |
\? ( %5C%3F ) |
|
サポートされているワイルドカードは*アスタリスクです。すべての文字がアスタリスクに一致します。
その文字列をフィルタリングするには... | ワイルドカードを指定してください... | 一致... |
---|---|---|
endingで終わる | *ending | the_ending ; theending; ending |
startingで始まる | starting* | starting_here ; startinghere, starting |
例: 最初の例は、文字列の存在の直接一致を示しています。2番目の例は、testで始まる値を返します。
-
/<some_entities>?query="<some_string_field_name> EQ ^existence^"
-
/<some_entities>?query="<some_string_field_name> EQ ^test*^"
例
特定のユーザーによって検出されたすべての不具合をフィルタリングします
GET .../defects?query="detected_by EQ {[current_user]}"
GET .../defects?query="detected_by={ id IN 1001,1002,1003}"
GET .../defects?query="detected_by={ id BTW 1001...1003}"
GET .../defects?query="detected_by={ id IN [current_user],1001}"
ログインしたユーザーによって検出され、特定のチームの一部であるすべての不具合をフィルタリングします
GET .../defects/query="detected_by EQ {[current_user];teams EQ {id EQ 2005}}"
リリースがリリースのリストにあるすべての不具合をフィルタリングします
GET .../defects?query="release EQ {[current_release]}"
GET .../defects?query="release={id IN [current_release], 1002}"
GET .../defects?query="release={id IN 1001, 1002}"
不具合は複数のユーザータグでタグ付けされます:
{
“type”: “defect”,
“user_tags”: [
{
“id”: 1001,
“type”: “user_tag”
},
{
“id”: 2005,
“type”: “user_tag”
},
{
“id”: 3008,
“type”: “user_tag”
}
]
}
次のフィルタークエリは、上記のすべての不具合を取得します。
-
GET .../defects?query="user_tags EQ {id EQ 1001}"
-
GET .../defects?query="user_tags EQ {id EQ 1001||id EQ 2005}"
-
GET .../defects?query="user_tags EQ {id EQ 1001}||user_tags EQ {id EQ 2005}"
-
GET .../defects?query="user_tags EQ {id EQ 1001||id EQ 500000}"
-
GET .../defects?query="user_tags EQ {id EQ 1001}||user_tags EQ {id EQ 500000}"
-
GET .../defects?query="user_tags EQ {id EQ 1001;id EQ 3008}"
-
GET .../defects?query="user_tags EQ {id EQ 1001};user_tags EQ {id EQ 3008}"
-
GET .../defects?query="user_tags EQ {(id EQ 1001;id EQ 2005;id EQ 3008)||id EQ 50000000}"
-
GET .../defects?query="user_tags EQ {id EQ 1001;id EQ 2005;id EQ 3008}||user_tags EQ {id EQ 50000000}"
-
GET .../defects?query="user_tags EQ {id EQ 1001||(id EQ 2005;id EQ 50000000)}"
-
GET .../defects?query="user_tags EQ {id EQ 1001}||(user_tags EQ {id EQ 2005}; user_tags EQ {id EQ 50000000})"
-
GET .../defects?query="user_tags EQ {id EQ 1001}||user_tags EQ {null}"
次のフィルタークエリは、上記のすべての不具合を取得するわけではありません。
-
GET .../defects?query="user_tags EQ {id EQ 1001;id EQ 50000000}"
-
GET .../defects?query="user_tags EQ {id EQ 1001};user_tags EQ {id EQ 50000000}"
-
GET .../defects?query="user_tags EQ {id EQ 1001;(id EQ 5000000||id EQ 7000000)}"
-
GET .../defects?query="user_tags EQ {id EQ 1001};user_tags EQ {id EQ 5000000||id EQ 7000000}"
-
GET .../defects?query="user_tags EQ {id EQ 1001};(user_tags EQ {id EQ 5000000}|| user_tags EQ {id EQ 7000000})"
-
GET .../defects?query="user_tags EQ {id EQ 1001};user_tags EQ {null}"
参照情報: