時系列データのクエリ
時系列データはポイントという単位で時系列データベースに記録されています。 ポイントは IoT センサデータやログデータ、工場設備や産業機械の計測機器が上げる計測値など様々です。
ポイントから時系列データを取得するとき、以下のようなクエリをリクエストできます。
例:クエリのサンプル
- 指定範囲の期間データを取得する。(範囲:開始時刻以上~終了時刻未満)
- 期間データ内の最新値を取得する。
- 集計:期間データを 1 時間毎に区切って平均値を取得する。
- 集計:期間データを 1 時間毎に区切ってレコード件数を取得する。
- フィルタ:期間データの値を閾値と比較して一致するレコードを取得する。
- フィルタ:期間データの値が変化した時のレコードを取得する。
期間データ
期間は開始時刻以上、終了時刻未満で指定できます。
例えば期間1 日
のデータを取得する場合は当日 00:00 以上~翌日 00:00 未満
を指定します。
指定範囲の期間データに対する検索方法は以下のとおりです。
検索方法 | 内容 |
---|---|
全て(生値) | 指定範囲の期間データの全レコードを返す。何も加工していないローデータ。 |
最新値 | 指定範囲の期間データの最も新しいレコードを 1 件だけ返す。 |
最古値 | 指定範囲の期間データの最も古いレコードを 1 件だけ返す。 |
集計クエリ
期間データを任意の時間単位で集計できます。
例えば5 分
、30 分
、1 時間
、7 日
など任意の時間単位を指定できます。
集計クエリは、期間を時間単位で区切った集計区間毎に 1 件ずつレコードを返します。
例えば期間を1 日 (当日 00:00 以上~翌日 00:00 未満)
、集計時間を1 時間
にしたクエリをリクエストすると、レスポンスには24 件
のデータが含まれます。
集計方法は以下のとおりです。
集計方法 | 内容 |
---|---|
最新 | 集計区間毎に最も新しいレコードを返す。 |
最古 | 集計区間毎に最も古いレコードを返す。 |
合計 | 集計区間毎に数値の合計を計算して返す。 |
平均 | 集計区間毎に数値の平均を計算して返す。 |
最大 | 集計区間毎に最も大きい数値を返す。 |
最小 | 集計区間毎に最も小さい数値を返す。 |
件数
集計区間に含まれる集計前のローデータのレコード件数を取得できます。
タイムスタンプ
集計結果のタイムスタンプは集計区間ごとの時刻になります。
例えば期間を1 日 (当日 00:00 以上~翌日 00:00 未満)
、集計時間を1 時間
にしたクエリをリクエストすると、タイムスタンプは00:00
、01:00
、02:00
…22:00
、23:00
になります。
これを応用して時刻の揃っていないポイントのグループに対し、集計クエリを使うことでタイムスタンプを揃えることができます。
フィルタクエリ
閾値による絞り込み
数値の大小比較や文字列比較でフィルタします。以下の条件指定が可能です。
条件 | 内容 |
---|---|
以上 | 任意の閾値とレコードの数値を比較して閾値以上なら返す。 |
以下 | 任意の閾値とレコードの数値を比較して閾値以下なら返す。 |
より大きい | 任意の閾値とレコードの数値を比較して閾値より大きければ返す。 |
未満 | 任意の閾値とレコードの数値を比較して閾値未満なら返す。 |
数値一致 | 任意の閾値とレコードの数値を比較して一致すれば返す。 |
文字列一致 | 任意の閾値とレコードの文字列を比較して一致すれば返す。 |
RealBoard では最大 2 つの閾値と条件を組み合わせて指定できます。 組み合わせは、すべての条件を満たしたとき成立する AND 条件です。
- 例:
0 以上
AND100 以下
の数値を含むレコードのみ返す。
変化点の検出
時系列データの値が変化したときのレコードを検出して返します。 同じ値が連続している時間帯がある場合、その時間帯のレコードをレスポンスに含めないようフィルタする機能です。
フィルタと集計を組み合わせたときの処理順番
フィルタクエリと集計クエリを組み合わせた場合、ローデータに対してフィルタ処理が適用された後に集計処理が実行されます。