レコード検索書式

レコードのリストを取得するときには、取得するレコードを絞り込むために検索条件を指定できます。この章では、どのような検索条件を使用することができるのかを説明します。

始めに、全ての検索条件は、検索可能なカラムに対してのみ働きます。あるカラムの値で検索したい場合には、そのカラムを検索可能にしてください。カラムを検索可能にするには、Platio Studioで、そのカラムに関連づいたフィールドを検索可能にします。

全てのカラムの値で検索

最も単純な検索条件は、fooです。この検索条件は、いずれかの検索可能なカラムの値として”foo”を含むレコードにマッチします。スペースで区切られた複数の検索条件は、論理積を意味します。つまり、foo barは、“foo”と”bar”を含むレコードにマッチします。スペースを含んだ文字列を指定するには、文字列を""で括ります。たとえば、"foo bar" bazは、“foo bar”と”baz”を含むレコードにマッチします。

特定のカラムの値で検索

特定のカラムの値で検索するには、検索条件の前に:で区切ってカラム名を指定します。例えば、Name:fooは、Nameカラムの値として”foo”を含むレコードにマッチします。カラム名がスペースなどを含む場合には、カラム名を""で括ります。Name:"foo bar" "Body Temperature":36.4は、Nameカラムの値が”foo bar”を含み、Body Temperatureカラムの値が36.4のレコードにマッチします。

カラムを名前でなくIDで指定するには、$の後ろにカラムのIDを指定します。例えば、$c002c2c0:fooは、IDがc002c2c0のカラムの値が”foo”を含むレコードにマッチします。なお、$から始まるカラムを名前で指定するには、カラム名を""で括ります。

:の前後に空白文字を入れないように注意してください。空白文字を入れると異なる意味になります。

比較演算子での検索

カラム名を指定する時に:の代わりに比較演算子を指定することで、検索条件をより細かく指定することができます。例えば、Name=fooは、Nameカラムの値が”foo”のレコードにマッチし、"Body Temperature">=37.0は、Body Temperatureカラムの値が37.0以上のレコードにマッチします。

値が設定されているかどうかを条件にするには、値として空の値を指定します。例えば、Name=はNameカラムに値が指定されていないレコードにマッチし、Name!=はNameカラムになんらかの値が指定されているレコードにマッチします。

演算子の前後に空白文字を入れないように注意してください。空白文字を入れると異なる意味になります。

使用できる比較演算子は以下のとおりです。

=

カラムの値が指定した値に等しい時にマッチします。ただし、値として空文字列を指定した時には、そのカラムに何も値が設定されていない場合にマッチします。

!=

カラムの値が指定した値に等しくない時にマッチします。ただし、値として空文字列を指定した時には、そのカラムになんらかの値が設定されている場合にマッチします。

<

カラムの値が指定した値より小さい時にマッチします。

<=

カラムの値が指定した値以下の時にマッチします。

>

カラムの値が指定した値より大きい時にマッチします。

>=

カラムの値が指定した値以上の時にマッチします。

特殊文字のエスケープ

検索文字列やカラム名として、空白文字や特殊文字(:=!<>()+/|\"'$)を使用する場合には、""で括る必要があります。

""で括った中で"を使用するには、\でエスケープします。また、\自身を使用するにも、\でエスケープします。例えば、"\"\\1,000\""は、’“\1,000”’を意味します。

更新時刻での検索

レコードの更新時刻で検索することもできます。指定した日時よりも新しいレコードを検索するには、$from:2017-01-13のように、$fromを使用して日付または日時を指定します。日付を指定するときには、YYYY-MM-DD形式で、日時を指定するときには、YYYY-MM-DD'T'HH:mm:ss形式で指定します。例えば、$from:2017-01-13は、2017年1月13日の0時よりも新しい(この時刻を含む)レコードにマッチし、$from:2016-10-03T15:00:00は、2016年10月3日の15時よりも新しい(この時刻を含む)レコードにマッチします。

詳細な日付を指定した場合には、YYYY-MM-DD'T'HH:mm:ss.SSS'Z'形式でミリ秒を含めて指定することができます。この場合、タイムゾーンは常にUTCになります。

同様に、指定した日時より古いレコードを検索するには、$to:2017-01-13のように、$toを使用して日付または日時を指定します。日付を指定するときには、YYYY-MM-DD形式で、日時を指定するときには、YYYY-MM-DD'T'HH:mm:ss形式で指定します。例えば、$to:2017-01-13は、2017年1月14日の0時よりも古い(この時刻を含まない)レコードにマッチし、$to:2016-10-03T15:00:00は、2016年10月3日の15時よりも古い(この時刻を含まない)レコードにマッチします。日付を指定した場合には、次の日の0時よりも古いレコードにマッチすることに注意して下さい。

指定された日時は、APIのtimezoneパラメーターで指定されたタイムゾーンで指定されたと解釈されます。timezoneパラメーターが指定されなかった場合には、アプリケーションのタイムゾーンが指定されたものとして扱います。

これらを組み合わせて指定することもできます。$from:2017-01-13 $to:2017-10-08T13:30:00は、2017年01月13日の0時から2017年10月8日の13時半の間に更新されたレコードにマッチします。

これらの検索条件は、通常の検索条件と組み合わせることもできます。例えば、Name:"foo bar" "Body Temperature":36.4 $from:2017-01-13は、Nameカラムの値が”foo bar”を含み、Body Temperatureカラムの値が36.4で、2017年01月13日の0時以降に更新されたレコードにマッチします。

タイムスタンプでの検索

Platio APIを使用してレコードを検索する場合には、レコードの更新時刻と同様に、レコードのタイムスタンプで検索することもできます。

レコードのタイムスタンプは、レコードの更新時間とは異なり、レコードがサーバー上で変更されたタイミングで更新されます。例えば、Platioアプリを使用してオフラインでレコードを保存し、後でオンラインになりサーバーにレコードが送られた場合、更新時間はレコードを保存した時間に、タイムスタンプはサーバーがレコードを受け取った時間になります。

タイムスタンプでのレコードの検索は、更新時刻での検索と同様の書式を使用しますが、$fromの代わりに$fromTimestampを、$toの代わりに$toTimestampを使用します。例えば、$fromTimestamp:2016-10-03T15:00:00は、2016年10月3日の15時よりもタイムスタンプが新しい(この時刻を含む)レコードにマッチします。

タイムスタンプでの検索は、Platio APIを使用してレコードを検索する時にのみ使用することができます。Platioアプリやデータビューアーでの検索には使用できません。

複合検索

複数の検索条件を組み合わせる時に、スペースで区切ると、全ての検索条件にマッチしたレコードにマッチします。例えば、foo barは、“foo”と”bar”を含むレコードにマッチします。

いずれかの検索条件にマッチしたレコードを検索したい場合には、foo OR barのように、ORで検索条件を区切ります。この場合、“foo”または”bar”を含むレコードにマッチします。

これらの検索条件を組み合わせる時には、括弧で検索条件を囲みます。例えば、( foo OR bar ) bazは、“foo”または”bar”と、“baz”を含むレコードにマッチします。括弧の前後にはスペースを入れる必要があることに注意してください。

値のマッチ

検索条件で指定された値がどのようにマッチするかは、カラムの型と、演算子に依って異なります。

指定された値は、対象のカラムの型の値に変換され、その後比較されます。例えば、30という値を検索条件で指定した場合、String型のカラムを対象に検索するときには”30”という文字列として、Number型のカラムを検索するときには30という数値として扱われます。

比較演算子を使用しない場合、前者は”30”を含むString型の値にマッチし、後者は30というNumber型の値にマッチします。比較演算子を使用する場合には、その比較演算子に基いて比較されます。

対象のカラムの型の値に変換できなかった場合には、どの値にもマッチしません。

String型

String型のカラムでは、検索条件で指定した値をそのまま比較します。

比較演算子を使用しない場合には、カラムの値が検索条件の値を、大文字小文字を区別せずに含む場合にマッチします。例えば、"foo""foo bar""aFoo"は、fooという検索条件にマッチします。

比較演算子を使用する場合には、大文字と小文字を区別して、辞書順で比較します。

テキスト:東京
テキスト:"田中 一郎"
テキスト<K

Number型

Number型のカラムでは、検索条件で指定した値を、数値に変換して比較します。

比較演算子を使用しない場合には、カラムの値が検索条件の値に等しい場合にマッチします。例えば、3030という検索条件にマッチし、16.316.3という検索条件にマッチします。

比較演算子を使用する場合には、数値として比較します。

数値:30
数値=16.3
数値>10

Boolean型

Boolean型のカラムでは、検索条件で指定した値がtrueの場合には真に、falseの場合には偽に変換して比較します。

比較演算子を使用しない場合には、カラムの値が検索条件の値に等しい場合にマッチします。

比較演算子を使用した場合、真は偽よりも大きいとして比較します。

スイッチ:true
スイッチ:false

DateTime型

DateTime型のカラムでは、検索条件を、日時または日付で指定することができます。

日時で指定するには、ISO8601のYYYY-MM-DD'T'HH:mm:ss.sss'Z'形式を使用して、UTCで指定します。また、現在の時刻からの差分を指定することもできます。差分を指定するには、+または-から始まる、ASP.NETのTimeSpan形式の期間を指定します。例えば、-00:30は30分前を、+00:00:25は25秒後を意味します。

日付で指定するには、YYYY-MM-DD形式で指定します。また、todaytomorrow、またはyesterdayを指定すると、それぞれ、今日、明日、昨日を表します。

比較演算子を使用しない場合、検索条件が日時で指定された時には、カラムの値の日時が、検索条件の日時に等しい場合にマッチします。検索条件が日付で指定された場合には、カラムの値の日時から取り出した日付が、検索条件の日付に等しい場合にマッチします。カラムの値の日時から日付を取り出す時には、指定されたタイムゾーンを使用します。例えば、カラムの値が2023-12-31T20:00:00.000Zで、タイムゾーンがAsia/Tokyoの時、取り出された日付は2024-01-01となり、検索条件が2024-01-01の場合にマッチします。

比較演算子を使用した場合、検索条件を日時に変換して、カラムの値の日時と比較します。検索条件が日時で指定された場合には、その値がそのまま比較に使用されます。検索条件が日付で指定された場合には、指定されたタイムゾーンにおける0時0分を指定したものとみなされます。例えば、日時>=2020-01-01という検索条件を指定した場合、タイムゾーンがAsia/Tokyoであれば、日時>=2019-12-31T15:00:00.000Zと指定したことと同じになります。

いずれの場合も、タイムゾーンが指定されなかった場合には、アプリケーションのタイムゾーンを使用します。

日時:today
日時>=-00:30
日時:2020-01-01
日時>"2020-01-01T00:00:00.000Z"

Date型

Date型のカラムでは、検索条件で指定した値を、ISO8601のYYYY-MM-DD形式で日付に変換して比較します。

また、todaytomorrow、またはyesterdayを指定すると、それぞれ今日、明日、昨日の日付となります。

現在の日付からの差分を指定するには、+または-から始まる整数を指定します。例えば、+5は5日後を、-30は30日前を意味します。

比較演算子を使用しない場合には、カラムの値が検索条件の値に等しい場合にマッチします。

比較演算子を使用した場合、日付として比較します。

日付:yesterday
日付>=-3
日付>2020-01-01

Time型

Date型のカラムでは、検索条件で指定した値を、ISO8601のHH:mm:ss形式で時間に変換して比較します。

比較演算子を使用しない場合には、カラムの値が検索条件の値に等しい場合にマッチします。

比較演算子を使用した場合、時間として比較します。

時刻:10:00:00
時刻>9:00:00

Location型

Location型のカラムの値は検索できません。

Attachment型

Attachment型のカラムでは、検索条件で指定した値を、添付ファイルの名前と比較します。

比較演算子を使用しない場合には、添付ファイルの名前が、検索条件の値を大文字小文字を区別せずに含む場合にマッチします。例えば、"foo.jpeg""FOO.PNG""xfoo.txt"という名前の添付ファイルは、fooという検索条件にマッチします。

比較演算子を使用する場合には、大文字と小文字を区別して、辞書順で比較します。

画像:image.jpeg

User型

User型のカラムでは、検索条件で指定した値を、ユーザー名と比較します。

比較演算子を使用しない場合には、ユーザー名が、検索条件の値を大文字小文字を区別せずに含む場合にマッチします。例えば、"foo""Foo""foobar"という名前のユーザーは、fooという検索条件にマッチします。

比較演算子を使用する場合には、大文字と小文字を区別して、辞書順で比較します。

いずれの場合も、ユーザー名として_selfを指定した場合、現在のユーザーにマッチします。

ユーザー:_self
ユーザー:田中

Object型

Object型のカラムの値は検索できません。

Array型

Array型のカラムでは、検索条件で指定した値を、各要素と比較します。

比較演算子を使用しない場合には、いずれかの要素が検索条件にマッチする場合にマッチします。個々の要素のマッチは、要素の型に応じて行われます。例えば、要素の型がString型の場合には、いずれかの要素が、検索条件の値を大文字小文字を区別せずに含む場合にマッチします。

比較演算子を使用した場合には、どの値にもマッチしません。ただし、演算子が=または!=で値が空(複数テキスト選択=複数テキスト選択!=など)の場合には、前者は値が指定されていない場合にマッチし、後者は値が指定されている場合にマッチします。

複数テキスト選択:東京

ReferenceString型

ReferenceString型のカラムでは、検索条件で指定した値を、参照先の値と比較します。比較方法は、String型のカラムと同じです。

ReferenceNumber型

ReferenceNumber型のカラムでは、検索条件で指定した値を、数値に変換して、参照先の値と比較します。比較方法は、Number型のカラムと同じです。

ReferenceUser型

ReferenceUser型のカラムでは、検索条件で指定した値を、参照先の値と比較します。比較方法は、User型のカラムと同じです。