すべてのプロダクト
Search
ドキュメントセンター

Lindorm:一般的な時系列関数

最終更新日:Jan 14, 2025

このトピックでは、LindormTSDB SQL でサポートされている一般的な関数について説明し、例を示します。

適用可能なエンジンとバージョン

一般的な時系列関数リスト

関数

説明

CURRENT_TIMESTAMP

この関数を呼び出して、現在のシステム時刻を取得できます。

SUM

この関数を呼び出して、フィールド列の値の合計を計算できます。

AVG

この関数を呼び出して、フィールド列の値の平均値を計算できます。

COUNT

この関数を呼び出して、フィールド列の値の数をカウントできます。

MIN

この関数を呼び出して、フィールド列の値の最小値をクエリできます。

MAX

この関数を呼び出して、フィールド列の値の最大値をクエリできます。

FIRST

この関数を呼び出して、フィールド列の値の最初の値をクエリできます。

LAST

この関数を呼び出して、フィールド列の値の最後の値をクエリできます。

PERCENTILE

この関数を呼び出して、フィールド列の値の指定されたパーセンタイルをクエリできます。

RATE

この関数を呼び出して、フィールド列の値の傾きを計算できます。

DELTA

この関数を呼び出して、同じフィールド列内の各値と前の行の値との差を計算できます。

LATEST

この関数を呼び出して、フィールド列の最新の N 個の値をクエリできます。

FORECAST

この関数を呼び出して、時系列テーブルの列のフィールド値を予測できます。

ANOMALY_DETECT

この関数を呼び出して、指定されたフィールド列の異常を検出できます。

BINS

この関数を呼び出して、時系列テーブルの指定されたフィールド列のデータに対して特徴量ビニングを実行できます。

データの準備

このトピックでは、sensor という名前の、以下のスキーマを持つサンプルテーブルを使用します。

+-------------+-----------+------------+
| columnName  | typeName  | columnKind |
+-------------+-----------+------------+
| device_id   | VARCHAR   | TAG        |
| region      | VARCHAR   | TAG        |
| time        | TIMESTAMP | TIMESTAMP  |
| temperature | DOUBLE    | FIELD      |
| humidity    | DOUBLE    | FIELD      |
+-------------+-----------+------------+
// このテーブルには、次のデータが設定されています。

このテーブルには、次のデータが設定されています。

+-----------+----------+---------------------------+-------------+-----------+
| device_id |  region  |           time            | temperature | humidity  |
+-----------+----------+---------------------------+-------------+-----------+
| F07A1260  | north-cn | 2021-04-22T15:33:00+08:00 | 12.100000   | 45.000000 |
| F07A1260  | north-cn | 2021-04-22T15:33:10+08:00 | 13.200000   | 47.000000 |
| F07A1260  | north-cn | 2021-04-22T15:33:20+08:00 | 10.600000   | 46.000000 |
| F07A1261  | south-cn | 2021-04-22T15:51:20+08:00 | 12.100000   | 51.000000 |
| F07A1261  | south-cn | 2021-04-22T15:51:21+08:00 | 13.200000   | 52.000000 |
| F07A1261  | south-cn | 2021-04-22T15:51:27+08:00 | 10.600000   | 53.000000 |
| F07A1261  | south-cn | 2021-04-22T15:51:47+08:00 | 20.600000   | 55.000000 |
+-----------+----------+---------------------------+-------------+-----------+
// sensor テーブルには、次の 2 つの時系列が含まれています。

sensor テーブルには、次の 2 つの時系列が含まれています。

  • device_id=F07A1260, region=north-cn タグを持ち、temperature フィールドと humidity フィールドを含む時系列 1。

  • device_id=F07A1261, region=south-cn タグを持ち、temperature フィールドと humidity フィールドを含む時系列 2。

説明

時系列の詳細については、「用語」をご参照ください。

タイムスタンプ関数

CURRENT_TIMESTAMP

概要

この関数を呼び出して、現在のシステム時刻を取得できます。

構文

CURRENT_TIMESTAMP
// 注意
重要
  • CURRENT_TIMESTAMP 関数を呼び出すときにパラメータを指定する必要はありません。

  • CURRENT_TIMESTAMP 関数によって返されるタイムスタンプはミリ秒単位まで正確です。例: 2023-04-23T21:13:15.819+08:00

  • CURRENT_TIMESTAMP 関数は、Lindorm インスタンスが実行されているサーバーのシステム時刻を返します。したがって、この関数によって生成される時刻データがビジネスの要件を満たしていることを確認してください。

  • 業務でデータを書き込むときは、この関数によって生成されたタイムスタンプを使用しないでください。テストおよび開発用の大量のテストデータを生成するために、この関数を使用することをお勧めします。テストおよび開発用の大量のテストデータを生成するために、この関数を使用することをお勧めします。

sensor テーブルにデータの行を追加します。データのタグは device_id=F07A1262, region=north-cn で、データのタイムスタンプは、データがテーブルに書き込まれたときの現在のシステム時刻です。

INSERT INTO sensor(device_id,region,time,temperature,humidity) VALUES ('F07A1262','north-cn',CURRENT_TIMESTAMP,19.9,42);

集計関数

SUM

概要

この関数を呼び出して、フィールド列の値の合計を計算できます。

構文

SUM(field_name)
// 注意:SUM 関数は DOUBLE または BIGINT 値を返します。
説明

SUM 関数は DOUBLE または BIGINT 値を返します。

パラメータ

パラメータ

説明

field_name

フィールド列の名前。

説明

指定されたフィールド列のデータは、VARCHAR 型または BOOLEAN 型にすることはできません。

  • 例 1: ID が F07A1260 と F07A1261 の 2 つのデバイスによって個別に生成されたデータを含む 2 つの時系列に対して、20 秒間隔でダウンサンプリングを実行します。次に、temperature 列の値の合計を計算します。

    SELECT device_id, region, time, sum(temperature) AS temperature FROM sensor WHERE time <= '2021-04-22T15:51:47+08:00' and time >= '2021-04-22T15:33:00+08:00' sample by 20s;
    // 返される結果は以下のとおりです。

    返される結果は以下のとおりです。

    +-----------+----------+---------------------------+-------------+
    | device_id |  region  |           time            | temperature |
    +-----------+----------+---------------------------+-------------+
    | F07A1260  | north-cn | 2021-04-22T15:33:00+08:00 | 25.300000   |
    | F07A1261  | south-cn | 2021-04-22T15:51:20+08:00 | 35.900000   |
    | F07A1260  | north-cn | 2021-04-22T15:33:20+08:00 | 10.600000   |
    | F07A1261  | south-cn | 2021-04-22T15:51:40+08:00 | 20.600000   |
    +-----------+----------+---------------------------+-------------+
  • 例 2: ID が F07A1260 と F07A1261 の 2 つのデバイスによって生成された temperature 値の合計を個別に計算します。

    SELECT device_id, region, time, sum(temperature) AS temperature FROM sensor WHERE time <= '2021-04-22T15:51:47+08:00' and time >= '2021-04-22T15:33:00+08:00' sample by 0;
    // 返される結果は以下のとおりです。

    返される結果は以下のとおりです。

    +-----------+----------+---------------------------+-------------+
    | device_id |  region  |           time            | temperature |
    +-----------+----------+---------------------------+-------------+
    | F07A1260  | north-cn | 1970-01-01T08:00:00+08:00 | 35.900000   |
    | F07A1261  | south-cn | 1970-01-01T08:00:00+08:00 | 56.500000   |
    +-----------+----------+---------------------------+-------------+
  • 例 3: すべてのデバイスによって生成された temperature 値の合計を計算します。

    SELECT sum(temperature) AS temperature FROM sensor WHERE time <= '2021-04-22T15:51:47+08:00' and time >= '2021-04-22T15:33:00+08:00';
    // 返される結果は以下のとおりです。

    返される結果は以下のとおりです。

    +-------------+
    | temperature |
    +-------------+
    | 92.400000   |
    +-------------+

AVG

概要

この関数を呼び出して、フィールド列の値の平均値を計算できます。

構文

AVG(field_name)
// 注意:AVG 関数は DOUBLE 値を返します。
説明

AVG 関数は DOUBLE 値を返します。

パラメータ

パラメータ

説明

field_name

フィールド列の名前。

説明

指定されたフィールド列のデータは、VARCHAR 型または BOOLEAN 型にすることはできません。

  • 例 1: ID が F07A1260 と F07A1261 の 2 つのデバイスによって個別に生成されたデータを含む 2 つの時系列に対して、20 秒間隔でダウンサンプリングを実行します。次に、temperature 列の値の平均値を計算します。

    SELECT device_id, region, time, avg(temperature) AS temperature FROM sensor WHERE time <= '2021-04-22T15:51:47+08:00' and time >= '2021-04-22T15:33:00+08:00' sample by 20s;
    // 返される結果は以下のとおりです。

    返される結果は以下のとおりです。

    +-----------+----------+---------------------------+-------------+
    | device_id |  region  |           time            | temperature |
    +-----------+----------+---------------------------+-------------+
    | F07A1260  | north-cn | 2021-04-22T15:33:00+08:00 | 12.650000   |
    | F07A1261  | south-cn | 2021-04-22T15:51:20+08:00 | 11.966667   |
    | F07A1260  | north-cn | 2021-04-22T15:33:20+08:00 | 10.600000   |
    | F07A1261  | south-cn | 2021-04-22T15:51:40+08:00 | 20.600000   |
    +-----------+----------+---------------------------+-------------+
  • 例 2: ID が F07A1260 と F07A1261 の 2 つのデバイスによって生成された temperature 値の平均値を個別に計算します。

    SELECT device_id, region, time, avg(temperature) AS temperature FROM sensor WHERE time <= '2021-04-22T15:51:47+08:00' and time >= '2021-04-22T15:33:00+08:00' sample by 0;
    // 返される結果は以下のとおりです。

    返される結果は以下のとおりです。

    +-----------+----------+---------------------------+-------------+
    | device_id |  region  |           time            | temperature |
    +-----------+----------+---------------------------+-------------+
    | F07A1260  | north-cn | 1970-01-01T08:00:00+08:00 | 11.966667   |
    | F07A1261  | south-cn | 1970-01-01T08:00:00+08:00 | 14.125000   |
    +-----------+----------+---------------------------+-------------+
  • 例 3: すべてのデバイスによって生成された temperature 値の平均値を計算します。

    SELECT avg(temperature) AS temperature FROM sensor WHERE time <= '2021-04-22T15:51:47+08:00' and time >= '2021-04-22T15:33:00+08:00';
    // 返される結果は以下のとおりです。

    返される結果は以下のとおりです。

    +-------------+
    | temperature |
    +-------------+
    | 13.200000   |
    +-------------+

COUNT

概要

この関数を呼び出して、フィールド列の値の数をカウントできます。

構文

COUNT(field_name)
// 注意:COUNT 関数は BIGINT 値を返します。
説明

COUNT 関数は BIGINT 値を返します。

パラメータ

パラメータ

説明

field_name

フィールド列の名前。

  • 例 1: ID が F07A1260 と F07A1261 の 2 つのデバイスによって個別に生成されたデータを含む 2 つの時系列に対して、20 秒間隔でダウンサンプリングを実行します。次に、各間隔内の temperature 列の値の数をカウントします。

    SELECT device_id, region, time, count(temperature) AS temperature FROM sensor WHERE time <= '2021-04-22T15:51:47+08:00' and time >= '2021-04-22T15:33:00+08:00' sample by 20s;
    // 返される結果は以下のとおりです。

    返される結果は以下のとおりです。

    +-----------+----------+---------------------------+-------------+
    | device_id |  region  |           time            | temperature |
    +-----------+----------+---------------------------+-------------+
    | F07A1260  | north-cn | 2021-04-22T15:33:00+08:00 | 2           |
    | F07A1261  | south-cn | 2021-04-22T15:51:20+08:00 | 3           |
    | F07A1260  | north-cn | 2021-04-22T15:33:20+08:00 | 1           |
    | F07A1261  | south-cn | 2021-04-22T15:51:40+08:00 | 1           |
    +-----------+----------+---------------------------+-------------+
  • 例 2: ID が F07A1260 と F07A1261 の 2 つのデバイスによって生成された temperature 値の数を個別にカウントします。

    SELECT device_id, region, time, count(temperature) AS temperature FROM sensor WHERE time <= '2021-04-22T15:51:47+08:00' and time >= '2021-04-22T15:33:00+08:00' sample by 0;
    // 返される結果は以下のとおりです。

    返される結果は以下のとおりです。

    +-----------+----------+---------------------------+-------------+
    | device_id |  region  |           time            | temperature |
    +-----------+----------+---------------------------+-------------+
    | F07A1260  | north-cn | 1970-01-01T08:00:00+08:00 | 3           |
    | F07A1261  | south-cn | 1970-01-01T08:00:00+08:00 | 4           |
    +-----------+----------+---------------------------+-------------+
  • 例 3: すべてのデバイスによって生成された temperature 値の数をカウントします。

    SELECT count(temperature) AS temperature FROM sensor WHERE time <= '2021-04-22T15:51:47+08:00' and time >= '2021-04-22T15:33:00+08:00';
    // 返される結果は以下のとおりです。

    返される結果は以下のとおりです。

    +-------------+
    | temperature |
    +-------------+
    | 7           |
    +-------------+

選択関数

MIN

概要

この関数を呼び出して、フィールド列の値の最小値をクエリできます。

構文

MIN(field_name)
// 注意:MIN 関数は DOUBLE または BIGINT 値を返します。
説明

MIN 関数は DOUBLE または BIGINT 値を返します。

パラメータ

パラメータ

説明

field_name

フィールド列の名前。

説明

指定されたフィールド列のデータは、VARCHAR 型または BOOLEAN 型にすることはできません。

  • 例 1: ID が F07A1260 と F07A1261 の 2 つのデバイスによって個別に生成されたデータを含む 2 つの時系列に対して、20 秒間隔でダウンサンプリングを実行します。次に、各間隔内の temperature 列の値の最小値をクエリします。

    SELECT device_id, region, time, min(temperature) AS temperature FROM sensor WHERE time <= '2021-04-22T15:51:47+08:00' and time >= '2021-04-22T15:33:00+08:00' sample by 20s;
    // 返される結果は以下のとおりです。

    返される結果は以下のとおりです。

    +-----------+----------+---------------------------+-------------+
    | device_id |  region  |           time            | temperature |
    +-----------+----------+---------------------------+-------------+
    | F07A1260  | north-cn | 2021-04-22T15:33:00+08:00 | 12.100000   |
    | F07A1261  | south-cn | 2021-04-22T15:51:20+08:00 | 10.600000   |
    | F07A1260  | north-cn | 2021-04-22T15:33:20+08:00 | 10.600000   |
    | F07A1261  | south-cn | 2021-04-22T15:51:40+08:00 | 20.600000   |
    +-----------+----------+---------------------------+-------------+
  • 例 2: ID が F07A1260 と F07A1261 の 2 つのデバイスによって生成された temperature 値の最小値を個別にクエリします。

    SELECT device_id, region, time, min(temperature) AS temperature FROM sensor WHERE time <= '2021-04-22T15:51:47+08:00' and time >= '2021-04-22T15:33:00+08:00' sample by 0;
    // 返される結果は以下のとおりです。

    返される結果は以下のとおりです。

    +-----------+----------+---------------------------+-------------+
    | device_id |  region  |           time            | temperature |
    +-----------+----------+---------------------------+-------------+
    | F07A1260  | north-cn | 2021-04-22T15:33:20+08:00 | 10.600000   |
    | F07A1261  | south-cn | 2021-04-22T15:51:27+08:00 | 10.600000   |
    +-----------+----------+---------------------------+-------------+
  • 例 3: すべてのデバイスによって生成された temperature 値の最小値をクエリします。

    SELECT min(temperature) AS temperature FROM sensor WHERE time <= '2021-04-22T15:51:47+08:00' and time >= '2021-04-22T15:33:00+08:00';
    // 返される結果は以下のとおりです。

    返される結果は以下のとおりです。

    +-------------+
    | temperature |
    +-------------+
    | 10.600000   |
    +-------------+

MAX

概要

この関数を呼び出して、フィールド列の値の最大値をクエリできます。

構文

MAX(field_name)
// 注意:MAX 関数は DOUBLE または BIGINT 値を返します。
説明

MAX 関数は DOUBLE または BIGINT 値を返します。

パラメータ

パラメータ

説明

field_name

フィールド列の名前。

説明

指定されたフィールド列のデータは、VARCHAR 型または BOOLEAN 型にすることはできません。

  • 例 1: ID が F07A1260 と F07A1261 の 2 つのデバイスによって個別に生成されたデータを含む 2 つの時系列に対して、20 秒間隔でダウンサンプリングを実行します。次に、各間隔内の temperature 列の値の最大値をクエリします。

    SELECT device_id, region, time, max(temperature) AS temperature FROM sensor WHERE time <= '2021-04-22T15:51:47+08:00' and time >= '2021-04-22T15:33:00+08:00' sample by 20s;
    // 返される結果は以下のとおりです。

    返される結果は以下のとおりです。

    +-----------+----------+---------------------------+-------------+
    | device_id |  region  |           time            | temperature |
    +-----------+----------+---------------------------+-------------+
    | F07A1260  | north-cn | 2021-04-22T15:33:00+08:00 | 13.200000   |
    | F07A1261  | south-cn | 2021-04-22T15:51:20+08:00 | 13.200000   |
    | F07A1260  | north-cn | 2021-04-22T15:33:20+08:00 | 10.600000   |
    | F07A1261  | south-cn | 2021-04-22T15:51:40+08:00 | 20.600000   |
    +-----------+----------+---------------------------+-------------+
  • 例 2: ID が F07A1260 と F07A1261 の 2 つのデバイスによって生成された temperature 値の最大値を個別にクエリします。

    SELECT device_id, region, time, max(temperature) AS temperature FROM sensor WHERE time <= '2021-04-22T15:51:47+08:00' and time >= '2021-04-22T15:33:00+08:00' sample by 0;
    // 返される結果は以下のとおりです。

    返される結果は以下のとおりです。

    +-----------+----------+---------------------------+-------------+
    | device_id |  region  |           time            | temperature |
    +-----------+----------+---------------------------+-------------+
    | F07A1260  | north-cn | 2021-04-22T15:33:10+08:00 | 13.200000   |
    | F07A1261  | south-cn | 2021-04-22T15:51:47+08:00 | 20.600000   |
    +-----------+----------+---------------------------+-------------+
  • 例 3: すべてのデバイスによって生成された temperature 値の最大値をクエリします。

    SELECT max(temperature) AS temperature FROM sensor WHERE time <= '2021-04-22T15:51:47+08:00' and time >= '2021-04-22T15:33:00+08:00';
    // 返される結果は以下のとおりです。

    返される結果は以下のとおりです。

    +-------------+
    | temperature |
    +-------------+
    | 20.600000   |
    +-------------+

FIRST

概要

この関数を呼び出して、フィールド列の値の最初の値をクエリできます。

構文

FIRST(field_name)
// 注意:FIRST 関数は、指定されたフィールド列のデータと同じ型のデータを返します。
説明

FIRST 関数は、指定されたフィールド列のデータと同じ型のデータを返します。

パラメータ

パラメータ

説明

field_name

フィールド列の名前。

  • 例 1: ID が F07A1260 と F07A1261 の 2 つのデバイスによって個別に生成されたデータを含む 2 つの時系列に対して、20 秒間隔でダウンサンプリングを実行します。次に、各間隔内の temperature 列の値の最初の値をクエリします。

    SELECT device_id, region, time, first(temperature) AS temperature FROM sensor WHERE time <= '2021-04-22T15:51:47+08:00' and time >= '2021-04-22T15:33:00+08:00' sample by 20s;
    // 返される結果は以下のとおりです。

    返される結果は以下のとおりです。

    +-----------+----------+---------------------------+-------------+
    | device_id |  region  |           time            | temperature |
    +-----------+----------+---------------------------+-------------+
    | F07A1260  | north-cn | 2021-04-22T15:33:00+08:00 | 12.100000   |
    | F07A1261  | south-cn | 2021-04-22T15:51:20+08:00 | 12.100000   |
    | F07A1260  | north-cn | 2021-04-22T15:33:20+08:00 | 10.600000   |
    | F07A1261  | south-cn | 2021-04-22T15:51:40+08:00 | 20.600000   |
    +-----------+----------+---------------------------+-------------+
  • 例 2: ID が F07A1260 と F07A1261 の 2 つのデバイスによって生成された temperature 値の最初の値を個別にクエリします。

    SELECT device_id, region, time, first(temperature) AS temperature FROM sensor WHERE time <= '2021-04-22T15:51:47+08:00' and time >= '2021-04-22T15:33:00+08:00' sample by 0;
    // 返される結果は以下のとおりです。

    返される結果は以下のとおりです。

    +-----------+----------+---------------------------+-------------+
    | device_id |  region  |           time            | temperature |
    +-----------+----------+---------------------------+-------------+
    | F07A1260  | north-cn | 2021-04-22T15:33:00+08:00 | 12.100000   |
    | F07A1261  | south-cn | 2021-04-22T15:51:20+08:00 | 12.100000   |
    +-----------+----------+---------------------------+-------------+

LAST

概要

この関数を呼び出して、フィールド列の値の最後の値をクエリできます。

構文

LAST(field_name)
// 注意:LAST 関数は、指定されたフィールド列のデータと同じ型のデータを返します。
説明

LAST 関数は、指定されたフィールド列のデータと同じ型のデータを返します。

パラメータ

パラメータ

説明

field_name

フィールド列の名前。

  • 例 1: ID が F07A1260 と F07A1261 の 2 つのデバイスによって個別に生成されたデータを含む 2 つの時系列に対して、20 秒間隔でダウンサンプリングを実行します。次に、各間隔内の temperature 列の値の最後の値をクエリします。

    SELECT device_id, region, time, last(temperature) AS temperature FROM sensor WHERE time <= '2021-04-22T15:51:47+08:00' and time >= '2021-04-22T15:33:00+08:00' sample by 20s;
    // 返される結果は以下のとおりです。

    返される結果は以下のとおりです。

    +-----------+----------+---------------------------+-------------+
    | device_id |  region  |           time            | temperature |
    +-----------+----------+---------------------------+-------------+
    | F07A1260  | north-cn | 2021-04-22T15:33:00+08:00 | 13.200000   |
    | F07A1261  | south-cn | 2021-04-22T15:51:20+08:00 | 10.600000   |
    | F07A1260  | north-cn | 2021-04-22T15:33:20+08:00 | 10.600000   |
    | F07A1261  | south-cn | 2021-04-22T15:51:40+08:00 | 20.600000   |
    +-----------+----------+---------------------------+-------------+
  • 例 2: ID が F07A1260 と F07A1261 の 2 つのデバイスによって生成された temperature 値の最後の値を個別にクエリします。

    SELECT device_id, region, time, last(temperature) AS temperature FROM sensor WHERE time <= '2021-04-22T15:51:47+08:00' and time >= '2021-04-22T15:33:00+08:00' sample by 0;
    // 返される結果は以下のとおりです。

    返される結果は以下のとおりです。

    +-----------+----------+---------------------------+-------------+
    | device_id |  region  |           time            | temperature |
    +-----------+----------+---------------------------+-------------+
    | F07A1260  | north-cn | 2021-04-22T15:33:20+08:00 | 10.600000   |
    | F07A1261  | south-cn | 2021-04-22T15:51:47+08:00 | 20.600000   |
    +-----------+----------+---------------------------+-------------+

PERCENTILE

概要

この関数を呼び出して、フィールド列の値の指定されたパーセンタイルをクエリできます。

構文

PERCENTILE(field_name,P)
// 注意:PERCENTILE 関数は DOUBLE 値を返します。
説明

PERCENTILE 関数は DOUBLE 値を返します。

パラメータ

パラメータ

説明

field_name

フィールド列の名前。

説明

指定されたフィールド列のデータは、VARCHAR 型または BOOLEAN 型にすることはできません。

P

整数または浮動小数点数。有効な値: 0 ~ 100。デフォルト値: 50。

  • 例 1: ID が F07A1260 と F07A1261 の 2 つのデバイスによって個別に生成されたデータを含む 2 つの時系列に対して、20 秒間隔でダウンサンプリングを実行します。次に、各間隔内の temperature 列の値の 90 パーセンタイルをクエリします。

    SELECT device_id, region, time, percentile(temperature, 90) AS temperature FROM sensor WHERE time <= '2021-04-22T15:51:47+08:00' and time >= '2021-04-22T15:33:00+08:00' sample by 20s;
    // 返される結果は以下のとおりです。

    返される結果は以下のとおりです。

    +-----------+----------+---------------------------+-------------+
    | device_id |  region  |           time            | temperature |
    +-----------+----------+---------------------------+-------------+
    | F07A1260  | north-cn | 2021-04-22T15:33:00+08:00 | 13.200000   |
    | F07A1261  | south-cn | 2021-04-22T15:51:20+08:00 | 13.200000   |
    | F07A1260  | north-cn | 2021-04-22T15:33:20+08:00 | 10.600000   |
    | F07A1261  | south-cn | 2021-04-22T15:51:40+08:00 | 20.600000   |
    +-----------+----------+---------------------------+-------------+
  • 例 2: ID が F07A1260 と F07A1261 の 2 つのデバイスによって生成された temperature 値の 90 パーセンタイルを個別にクエリします。

    SELECT device_id, region, time, percentile(temperature, 90) AS temperature FROM sensor WHERE time <= '2021-04-22T15:51:47+08:00' and time >= '2021-04-22T15:33:00+08:00' sample by 0;
    // 返される結果は以下のとおりです。

    返される結果は以下のとおりです。

    +-----------+----------+---------------------------+-------------+
    | device_id |  region  |           time            | temperature |
    +-----------+----------+---------------------------+-------------+
    | F07A1260  | north-cn | 1970-01-01T08:00:00+08:00 | 13.200000   |
    | F07A1261  | south-cn | 1970-01-01T08:00:00+08:00 | 20.600000   |
    +-----------+----------+---------------------------+-------------+

変換関数

RATE

概要

この関数を呼び出して、フィールド列の値の傾きを計算できます。

時系列に次のデータポイントが格納されているとします: (t1,v1), (t2,v2) ... (tN,vN)。RATE 関数を使用してデータポイントの傾きを計算すると、N-1 個のデータポイントが返されます。これらのタイムスタンプと値は、次の式を使用して計算されます。

2023-03-20_10-29-38

説明

上記の式の interval パラメータは、傾きの計算に使用される指定された間隔を示します。このパラメータの値は秒単位で測定されます。

構文

RATE(field_name, 'interval units')
// 注意
説明
  • RATE 関数は DOUBLE 値を返します。

  • RATE 演算子は、SQL ステートメントで個別に使用する必要があります。

パラメータ

パラメータ

説明

field_name

フィールド列の名前。

説明

指定されたフィールド列のデータは、VARCHAR 型または BOOLEAN 型にすることはできません。

interval units

傾きの計算に基づく間隔。デフォルト値: 1s。有効な単位: s (秒)、m (分)、h (時間)、d (日)。

  • 例 1: ID が F07A1260 と F07A1261 の 2 つのデバイスによって生成された temperature 値の傾きを、1 秒間隔で個別に計算します。

    SELECT device_id, region, time, rate(temperature) AS temperature FROM sensor WHERE time <= '2021-04-22T15:51:47+08:00' and time >= '2021-04-22T15:33:00+08:00' sample by 0;
    // 返される結果は以下のとおりです。

    返される結果は以下のとおりです。

    +-----------+----------+---------------------------+-------------+
    | device_id |  region  |           time            | temperature |
    +-----------+----------+---------------------------+-------------+
    | F07A1260  | north-cn | 2021-04-22T15:33:10+08:00 | 0.110000    |
    | F07A1260  | north-cn | 2021-04-22T15:33:20+08:00 | -0.260000   |
    | F07A1261  | south-cn | 2021-04-22T15:51:21+08:00 | 1.100000    |
    | F07A1261  | south-cn | 2021-04-22T15:51:27+08:00 | -0.433333   |
    | F07A1261  | south-cn | 2021-04-22T15:51:47+08:00 | 0.500000    |
    +-----------+----------+---------------------------+-------------+
  • 例 2: ID が F07A1260 と F07A1261 の 2 つのデバイスによって生成された temperature 値の傾きを、1 分間隔で個別に計算します。

    SELECT device_id, region, time, rate(temperature, '1m') AS temperature FROM sensor WHERE time <= '2021-04-22T15:51:47+08:00' and time >= '2021-04-22T15:33:00+08:00' sample by 0;
    // 返される結果は以下のとおりです。

    返される結果は以下のとおりです。

    +-----------+----------+---------------------------+-------------+
    | device_id |  region  |           time            | temperature |
    +-----------+----------+---------------------------+-------------+
    | F07A1260  | north-cn | 2021-04-22T15:33:10+08:00 | 6.600000    |
    | F07A1260  | north-cn | 2021-04-22T15:33:20+08:00 | -15.600000  |
    | F07A1261  | south-cn | 2021-04-22T15:51:21+08:00 | 66.000000   |
    | F07A1261  | south-cn | 2021-04-22T15:51:27+08:00 | -26.000000  |
    | F07A1261  | south-cn | 2021-04-22T15:51:47+08:00 | 30.000000   |
    +-----------+----------+---------------------------+-------------+
  • 例 3: ID が F07A1260 と F07A1261 の 2 つのデバイスによって個別に生成されたデータを含む 2 つの時系列に対して、20 秒間隔でダウンサンプリングを実行します。次に、20 秒間隔ごとに temperature 列の値の平均値を計算します。最後に、1 分間隔で平均値の傾きを計算します。

    SELECT device_id, region, time, rate(avg(temperature), '1m') AS temperature FROM sensor WHERE time <= '2021-04-22T15:51:47+08:00' and time >= '2021-04-22T15:33:00+08:00' sample by 20s;
    // 返される結果は以下のとおりです。

    返される結果は以下のとおりです。

    +-----------+----------+---------------------------+-------------+
    | device_id |  region  |           time            | temperature |
    +-----------+----------+---------------------------+-------------+
    | F07A1260  | north-cn | 2021-04-22T15:33:20+08:00 | -6.150000   |
    | F07A1261  | south-cn | 2021-04-22T15:51:40+08:00 | 25.900000   |
    +-----------+----------+---------------------------+-------------+
  • 例 4: RATE 演算子は、SQL ステートメントで個別に使用する必要があります。次の例に示す方法で RATE 演算子を使用しないでください。

    • エラー例 1:

      SELECT region, time, rate(temperature), rate(humidity) FROM sensor WHERE time <= '2021-04-22T15:51:47+08:00' and time >= '2021-04-22T15:33:00+08:00' sample by 0;
      // 返される結果は以下のとおりです。

      返される結果は以下のとおりです。

      ERROR 9001 (0A000): UNSUPPORTED: latest/rate/delta must be the only aggregator in a single SQL statement
    • エラー例 2:

      SELECT region, time, rate(temperature), latest(humidity) FROM sensor WHERE time <= '2021-04-22T15:51:47+08:00' and time >= '2021-04-22T15:33:00+08:00' sample by 0;
      // 返される結果は以下のとおりです。

      返される結果は以下のとおりです。

      ERROR 9001 (0A000): UNSUPPORTED: latest/rate/delta must be the only aggregator in a single SQL statement

DELTA

概要

この関数を呼び出して、同じフィールド列内の各値と前の行の値との差を計算できます。

時系列に次のデータポイントが格納されているとします: (t1,v1), (t2,v2) ... (tN,vN)。DELTA 関数を使用すると、次の N-1 個のデータポイントが返されます: (t2,v2-v1), (t3,v3-v2) ... (tN,vN-,vN-1)

構文

DELTA(field_name)
// 注意
説明
  • DELTA 関数は DOUBLE 値を返します。

  • DELTA 演算子は、SQL ステートメントで個別に使用する必要があります。

パラメータ

パラメータ

説明

field_name

フィールド列の名前。

説明

指定されたフィールド列のデータは、VARCHAR 型または BOOLEAN 型にすることはできません。

  • 例 1: ID が F07A1260 と F07A1261 の 2 つのデバイスによって生成された temperature 値の同じ列内にある各値と前の行の値との差を個別に計算します。

    SELECT device_id, region, time, delta(temperature) AS temperature FROM sensor WHERE time <= '2021-04-22T15:51:47+08:00' and time >= '2021-04-22T15:33:00+08:00' sample by 0;
    // 返される結果は以下のとおりです。

    返される結果は以下のとおりです。

    +-----------+----------+---------------------------+-------------+
    | device_id |  region  |           time            | temperature |
    +-----------+----------+---------------------------+-------------+
    | F07A1260  | north-cn | 2021-04-22T15:33:10+08:00 | 1.100000    |
    | F07A1260  | north-cn | 2021-04-22T15:33:20+08:00 | -2.600000   |
    | F07A1261  | south-cn | 2021-04-22T15:51:21+08:00 | 1.100000    |
    | F07A1261  | south-cn | 2021-04-22T15:51:27+08:00 | -2.600000   |
    | F07A1261  | south-cn | 2021-04-22T15:51:47+08:00 | 10.000000   |
    +-----------+----------+---------------------------+-------------+
  • 例 2: ID が F07A1260 と F07A1261 の 2 つのデバイスによって個別に生成されたデータを含む 2 つの時系列に対して、20 秒間隔でダウンサンプリングを実行します。次に、20 秒間隔ごとに temperature 列の値の平均値を計算します。最後に、平均値の列内にある各値と前の行の値との差を計算します。

    SELECT device_id, region, time, delta(avg(temperature)) AS temperature FROM sensor WHERE time <= '2021-04-22T15:51:47+08:00' and time >= '2021-04-22T15:33:00+08:00' sample by 20s;
    // 返される結果は以下のとおりです。

    返される結果は以下のとおりです。

    +-----------+----------+---------------------------+-------------+
    | device_id |  region  |           time            | temperature |
    +-----------+----------+---------------------------+-------------+
    | F07A1260  | north-cn | 2021-04-22T15:33:20+08:00 | -2.050000   |
    | F07A1261  | south-cn | 2021-04-22T15:51:40+08:00 | 8.633333    |
    +-----------+----------+---------------------------+-------------+
  • 例 3: DELTA 演算子は、SQL ステートメントで個別に使用する必要があります。次の例に示す方法で DELTA 演算子を使用しないでください。

    エラー例:

    Error example: SELECT region, time, delta(temperature), rate(humidity) FROM sensor WHERE time <= '2021-04-22T15:51:47+08:00' and time >= '2021-04-22T15:33:00+08:00' sample by 0;
    // 返される結果は以下のとおりです。

    返される結果は以下のとおりです。

    ERROR 9001 (0A000): UNSUPPORTED: latest/rate/delta must be the only aggregator in a single SQL statement

LATEST

概要

この関数を呼び出して、フィールド列の最新の N 個の値をクエリできます。

構文

LATEST(field_name, N)
// 注意
説明
  • LATEST 関数は、指定されたフィールド列のデータと同じ型のデータを返します。

  • LATEST 演算子は、SQL ステートメントで個別に使用する必要があります。

パラメータ

パラメータ

説明

field_name

フィールド列の名前。

N

フィールド列でクエリする最新の値の数を指定する整数。このパラメータのデフォルト値は 1 で、フィールド列の最新の値のみがクエリされることを示します

  • 例 1: ID が F07A1260 と F07A1261 のデバイスによって生成された最新の temperature 値を個別にクエリします。

    SELECT device_id, region, time, latest(temperature) AS temperature FROM sensor WHERE time <= '2021-04-22T15:51:47+08:00' and time >= '2021-04-22T15:33:00+08:00' sample by 0;
    // 返される結果は以下のとおりです。

    返される結果は以下のとおりです。

    +-----------+----------+---------------------------+-------------+
    | device_id |  region  |           time            | temperature |
    +-----------+----------+---------------------------+-------------+
    | F07A1261  | south-cn | 2021-04-22T15:51:47+08:00 | 20.600000   |
    | F07A1260  | north-cn | 2021-04-22T15:33:20+08:00 | 10.600000   |
    +-----------+----------+---------------------------+-------------+
  • 例 2: ID が F07A1260 と F07A1261 のデバイスによって生成された最新の 2 つの temperature 値を個別にクエリします。

    SELECT device_id, region, time, latest(temperature, 2) AS temperature FROM sensor WHERE time <= '2021-04-22T15:51:47+08:00' and time >= '2021-04-22T15:33:00+08:00' sample by 0;
    // 返される結果は以下のとおりです。

    返される結果は以下のとおりです。

    +-----------+----------+---------------------------+-------------+
    | device_id |  region  |           time            | temperature |
    +-----------+----------+---------------------------+-------------+
    | F07A1261  | south-cn | 2021-04-22T15:51:27+08:00 | 10.600000   |
    | F07A1261  | south-cn | 2021-04-22T15:51:47+08:00 | 20.600000   |
    | F07A1260  | north-cn | 2021-04-22T15:33:10+08:00 | 13.200000   |
    | F07A1260  | north-cn | 2021-04-22T15:33:20+08:00 | 10.600000   |
    +-----------+----------+---------------------------+-------------+
  • 例 3: LATEST 演算子は、SQL ステートメントで個別に使用する必要があります。次の例に示す方法で LATEST 演算子を使用しないでください。

    エラー例:

    SELECT region, time, latest(temperature), rate(humidity) FROM sensor WHERE time <= '2021-04-22T15:51:47+08:00' and time >= '2021-04-22T15:33:00+08:00' sample by 0;
    // 返される結果は以下のとおりです。

    返される結果は以下のとおりです。

    ERROR 9001 (0A000): UNSUPPORTED: latest/rate/delta must be the only aggregator in a single SQL statement

FORECAST

前提条件

FORECAST 関数は Lindorm AI に依存します。 FORECAST 関数を使用するには、まずインスタンスの Lindorm AI をアクティブ化する必要があります。

概要

この関数を呼び出して、時系列テーブルの列のフィールド値を予測できます。

構文

FORECAST(field_name, model_name, options)
// 注意:FORECAST 関数は DOUBLE 値を返します。
説明

FORECAST 関数は DOUBLE 値を返します。

パラメータ

パラメータ

説明

field_name

フィールド列の名前。

説明

指定されたフィールド列のデータは、VARCHAR 型または BOOLEAN 型にすることはできません。

model_name

値の予測に使用するモデルの名前。

説明

model_name パラメータの値は VARCHAR 型です。

options

予測結果を調整するために構成できるオプション。このパラメータは省略可能です。このパラメータの値は key1=value1[, key2=value2] 形式です。

  • batch_size: 推論の実行対象となる時系列の数です。これはオプションです。 キャッシュ内の時系列の数がこのオプションの値に達すると、バッチ予測が実行されます。このパラメーターのデフォルト値は、トレーニングにおける時系列の数です。このパラメーターの値は、INTEGER 型です。

  • step: 予測結果を出力するステップ長。このオプションは省略可能です。このパラメーターのデフォルト値は、トレーニングで指定した PREDICTION_LENGTH パラメーターの値です。このパラメーターの値は、INTEGER 型です。

  • quantile_output: 出力予測結果のパーセンタイル。このオプションは省略可能です。データベース内機械学習は、指定されたモデルに基づいて時系列のデータポイントの予測結果として配列を提供します。 quantile_output オプションを指定して、配列からデータポイントを選択し、最終結果とすることができます。このパラメータの値は DOUBLE 型です。デフォルト値: 0.5。結果を生成するために使用されるアルゴリズムに基づいて、このパラメータの値を設定する必要があります。

    • DeepAR アルゴリズムを使用する場合は、このパラメーターを 0 ~ 1 の範囲の値に設定します。

    • TFT アルゴリズムを使用する場合は、このパラメータを次のいずれかの値に設定します: 0.1、0.5、または 0.9。

  • 例 1: sensor という名前の時系列テーブルの指定された時間範囲内の temperature 値を予測します。

    SELECT device_id, region, `time`, forecast(temperature, forecast_model) AS forecast_result FROM sensor WHERE `time` >= '2022-01-01T00:00:00+08:00' and `time` < '2022-01-01T00:01:00+08:00' sample by 0;
    // 返される結果は以下のとおりです。

    返される結果は以下のとおりです。

    +-----------+----------+---------------------------+------------------+
    | device_id |  region  |           time            |  forecast_result |
    +-----------+----------+---------------------------+------------------+
    | F07A1260  | north-cn | 2022-01-01T00:00:00+08:00 |  12.40307807     |
    | F07A1260  | north-cn | 2022-01-01T00:00:20+08:00 |  11.36715841     |
    | F07A1260  | north-cn | 2022-01-01T00:00:40+08:00 |  10.12969923     |
    | F07A1261  | south-cn | 2022-01-01T00:00:00+08:00 |  26.51369649     |
    | F07A1261  | south-cn | 2022-01-01T00:00:20+08:00 |  25.54403301     |
    | F07A1261  | south-cn | 2022-01-01T00:00:40+08:00 |  24.46405267     |
    +-----------+----------+---------------------------+------------------+
  • 例 2: step オプションを 2 に、quantile_output オプションを 0.9 に設定して、sensor テーブルの指定された時間範囲内の temperature 値を予測します。

    SELECT device_id, region, `time`, forecast(temperature, forecast_model, 'step=2,quantile_output=0.9') AS forecast_result FROM sensor WHERE `time` >= '2022-01-01T00:00:00+08:00' and `time` < '2022-01-01T00:01:00+08:00' sample by 0;
    // 返される結果は以下のとおりです。

    返される結果は以下のとおりです。

    +-----------+----------+---------------------------+------------------+
    | device_id |  region  |           time            |  forecast_result |
    +-----------+----------+---------------------------+------------------+
    | F07A1260  | north-cn | 2022-01-01T00:00:00+08:00 |  13.12353792     |
    | F07A1260  | north-cn | 2022-01-01T00:00:20+08:00 |  12.14833554     |
    | F07A1261  | south-cn | 2022-01-01T00:00:00+08:00 |  26.73869304     |
    | F07A1261  | south-cn | 2022-01-01T00:00:20+08:00 |  24.92990853     |
    +-----------+----------+---------------------------+------------------+

ANOMALY_DETECT

概要

この関数を呼び出して、指定されたフィールド列の異常を検出できます。

構文

ANOMALY_DETECT(field_name, [algo_name | model_name], options)
// 注意:ANOMALY_DETECT 関数は BOOLEAN 値を返します。
説明

ANOMALY_DETECT 関数は BOOLEAN 値を返します。

パラメータ

パラメータ

説明

field_name

フィールド列の名前。

説明

指定されたフィールド列のデータは、VARCHAR 型または BOOLEAN 型にすることはできません。

algo_name

異常の検出に使用されるアルゴリズムの名前。DAMO Academy によって開発されたオンライン異常検出アルゴリズムがサポートされています。

  • esd: 監視カーブのスパイクや、少数のデータポイントが他のデータポイントと大きく異なるシナリオなど、スパイク状の異常に適用できるアルゴリズム。

  • nsigma: 異常の原因を分析するのが簡単でシンプルなアルゴリズム。

  • ttest: 時系列データに関連するメトリックが平均値の変化によって異常であるかどうかを識別するために使用されるアルゴリズム。

  • istl-esd: 周期的なデータの異常の検出に適用できるアルゴリズム。

説明

algo_identifier パラメータは、データベース内機械学習が有効になっておらず、時系列データに関連する異常を検出する必要があるシナリオに適用できます。

model_name

値の予測に使用するモデルの名前。

説明
  • model_name パラメータの値は VARCHAR 型です。

  • model_name パラメータは、データベース内機械学習が有効になっており、時系列データに関連する異常を検出する必要があるシナリオに適用できます。詳細については、「Lindorm AI をアクティブ化する」をご参照ください。

options

検出効果を調整するために使用されるオプション。このパラメータは省略可能です。このパラメータの値は key1=value1[, key2=value2] 形式です。詳細については、「時系列の異常検出」をご参照ください。

  • 例 1: ESD アルゴリズムを使用して、sensor という名前の時系列テーブルの指定された時間範囲内の temperature データの異常を検出します。

    SELECT device_id, region, time, anomaly_detect(temperature, 'esd') AS detect_result FROM sensor WHERE time >= '2022-01-01T00:00:00+08:00' and time < '2022-01-01T00:01:00+08:00' sample by 0;
    // 返される結果は以下のとおりです。

    返される結果は以下のとおりです。

    +-----------+----------+---------------------------+---------------+
    | device_id |  region  |           time            | detect_result |
    +-----------+----------+---------------------------+---------------+
    | F07A1260  | north-cn | 2022-01-01T00:00:00+08:00 | true          |
    | F07A1260  | north-cn | 2022-01-01T00:00:20+08:00 | false         |
    | F07A1260  | north-cn | 2022-01-01T00:00:40+08:00 | true          |
    | F07A1261  | south-cn | 2022-01-01T00:00:00+08:00 | false         |
    | F07A1261  | south-cn | 2022-01-01T00:00:20+08:00 | false         |
    | F07A1261  | south-cn | 2022-01-01T00:00:40+08:00 | false         |
    +-----------+----------+---------------------------+---------------+
  • 例 2: ESD アルゴリズムを使用して、sensor テーブルの指定された時間範囲内にある F07A1260 デバイスの temperature データの異常を検出します。

    SELECT device_id, region, time, anomaly_detect(temperature, 'esd') AS detect_result FROM sensor WHERE device_id in ('F07A1260') and time >= '2022-01-01T00:00:00+08:00' and time < '2022-01-01T00:01:00+08:00' sample by 0;
    // 返される結果は以下のとおりです。

    返される結果は以下のとおりです。

    +-----------+----------+---------------------------+---------------+
    | device_id |  region  |           time            | detect_result |
    +-----------+----------+---------------------------+---------------+
    | F07A1260  | north-cn | 2022-01-01T00:00:00+08:00 | true          |
    | F07A1260  | north-cn | 2022-01-01T00:00:20+08:00 | false         |
    | F07A1260  | north-cn | 2022-01-01T00:00:40+08:00 | true          |
    +-----------+----------+---------------------------+---------------+
  • 例 3: ESD アルゴリズムを使用して、sensor テーブルの指定された時間範囲内にある F07A1260 デバイスの temperature データの異常を検出します。また、lenHistoryWindow オプションを 30 に、maxAnomalyRatio オプションを 0.1 に設定します。

    SELECT device_id, region, time, anomaly_detect(temperature, 'esd', 'lenHistoryWindow=30,maxAnomalyRatio=0.1') AS detect_result FROM sensor where device_id in ('F07A1260') and time >= '2022-01-01T00:00:00+08:00' and time < '2022-01-01T00:01:00+08:00' sample by 0;
    // 返される結果は以下のとおりです。

    返される結果は以下のとおりです。

    +-----------+----------+---------------------------+---------------+
    | device_id |  region  |           time            | detect_result |
    +-----------+----------+---------------------------+---------------+
    | F07A1260  | north-cn | 2022-01-01T00:00:00+08:00 | false         |
    | F07A1260  | north-cn | 2022-01-01T00:00:20+08:00 | false         |
    | F07A1260  | north-cn | 2022-01-01T00:00:40+08:00 | true          |
    +-----------+----------+---------------------------+---------------+
  • 例 4: データベース内機械学習機能で作成した異常検出モデルを使用して、センサーテーブル内の特定の期間における温度データの異常を検出します。

    SELECT device_id, region, `time`, raw(temperature) as temperature, anomaly_detect(temperature, ad_model) AS detect_result FROM sensor WHERE time >= '2022-01-01T00:00:00+08:00' and time < '2022-01-01T00:01:00+08:00' sample by 0;
    // 返される結果は以下のとおりです。

    返される結果は以下のとおりです。

    +-----------+----------+---------------------------+-------------+---------------+
    | device_id |  region  |           time            | temperature | detect_result |
    +-----------+----------+---------------------------+-------------+---------------+
    | F07A1260  | north-cn | 202-01-01T00:00:00+08:00 | 59.100000   | true          |
    | F07A1260  | north-cn | 2022-01-01T00:00:20+08:00 | 13.200000   | false         |
    | F07A1260  | north-cn | 2022-01-01T00:00:40+08:00 | 64.600000   | true          |
    | F07A1261  | south-cn | 2022-01-01T00:00:00+08:00 | 12.100000   | false         |
    | F07A1261  | south-cn | 2022-01-01T00:00:20+08:00 | 13.200000   | false         |
    | F07A1261  | south-cn | 2022-01-01T00:00:40+08:00 | 10.600000   | false         |
    +-----------+----------+---------------------------+-------------+---------------+

BINS

概要

この関数を呼び出して、時系列テーブルの指定されたフィールド列のデータに対して特徴量ビニングを実行できます。特徴量ビニングは、離散ビニングまたは離散バケットとも呼ばれ、データを前処理するために使用される手法です。

構文

BINS(field_name, options)
// 注意:BINS 関数は VARCHAR 値を返します。
説明

BINS 関数は VARCHAR 値を返します。

パラメータ

パラメータ

必須

説明

field_name

はい

フィールド列の名前。

説明

指定されたフィールド列のデータは、VARCHAR 型または BOOLEAN 型にすることはできません。

options

いいえ

機能ビニングポリシーと出力モード。 このパラメーターの値は、key1=value1, key2=value2 形式で指定します。

  • 例 1: sensor という名前の時系列テーブルの指定された時間範囲内の temperature データに対して特徴量ビニングを実行します。

    SELECT device_id, region, time, bins(temperature) AS temperature_bin FROM sensor WHERE time >= '2021-04-22 00:00:00' AND time < '2022-04-23 00:01:00' sample by 0;
    // 返される結果は以下のとおりです。

    返される結果は以下のとおりです。

    +-----------+----------+--------------------------------+--------------------+
    | device_id |  region  |           time                 |  temperature_bin   |
    +-----------+----------+--------------------------------+--------------------+
    | F07A1260  | north-cn | 2021-04-22T15:33:00+08:00      |    [10.60,12.10)   |
    | F07A1260  | north-cn | 2021-04-22T15:33:10+08:00      |    [12.10,13.20]   |
    | F07A1260  | north-cn | 2021-04-22T15:33:20+08:00      |    [10.60,10.60)   |
    | F07A1261  | south-cn | 2021-04-22T15:51:20+08:00      |    [10.60,12.10)   |
    | F07A1261  | south-cn | 2021-04-22T15:51:21+08:00      |    [12.10,13.20)   |
    | F07A1261  | south-cn | 2021-04-22T15:51:27+08:00      |    [10.60,10.60)   |
    | F07A1261  | south-cn | 2021-04-22T15:51:47+08:00      |    [13.20,20.60]   |
    +-----------+-----------+-------------------------------+--------------------+
  • 例 2: sensor という名前の時系列テーブルの指定された時間範囲内にある、ID が F07A1260 のデバイスの temperature データに対して特徴量ビニングを実行します。

    SELECT device_id, region, time, bins(temperature) AS temperature_bin FROM sensor WHERE device_id in ('F07A1260') AND time >= '2021-04-22 00:00:00' AND time < '2022-04-23 00:01:00' sample by 0;
    // 返される結果は以下のとおりです。

    返される結果は以下のとおりです。

    +-----------+----------+--------------------------------+--------------------+
    | device_id |  region  |           time                 |  temperature_bin   |
    +-----------+----------+--------------------------------+--------------------+
    | F07A1260  | north-cn | 2021-04-22T15:33:00+08:00      |    [10.60,12.10)   |
    | F07A1260  | north-cn | 2021-04-22T15:33:10+08:00      |    [12.10,13.20]   |
    | F07A1260  | north-cn | 2021-04-22T15:33:20+08:00      |    [10.60,10.60)   |
    +-----------+----------+--------------------------------+--------------------+
  • 例 3: sensor という名前の時系列テーブルの指定された時間範囲内にある、ID が F07A1260 のデバイスの temperature データに対して特徴量ビニングを実行します。また、n_bins オプションを 2 に、output_type オプションを ordinal に、strategy オプションを uniform に指定します。

    SELECT device_id, region, time, bins(temperature, 'n_bins=2, output_type=ordinal, strategy=uniform') AS temperature_bin FROM sensor WHERE device_id in ('F07A1260') AND time >= '2021-04-22 00:00:00' AND time < '2022-04-23 00:01:00' sample by 0;
    // 返される結果は以下のとおりです。

    返される結果は以下のとおりです。

    +-----------+----------+--------------------------------+--------------------+
    | device_id |  region  |           time                 |  temperature_bin   |
    +-----------+----------+--------------------------------+--------------------+
    | F07A1260  | north-cn | 2021-04-22T15:33:00+08:00      |  1                 |
    | F07A1260  | north-cn | 2021-04-22T15:33:10+08:00      |  1                 |
    | F07A1260  | north-cn | 2021-04-22T15:33:20+08:00      |  0                 |
    +-----------+----------+--------------------------------+--------------------+