日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

常用時序函數

本文介紹時序SQL中支持的常用函數和使用示例。

引擎與版本

常用時序函數列表

函數

說明

CURRENT_TIMESTAMP函數

獲取系統當前運行時間。

SUM函數

計算時序數據表中Field列的和。

AVG函數

計算時序數據表中Field列的平均值。

COUNT函數

統計時序數據表中Field列值的個數。

MIN函數

查詢時序數據表中Field列的最小值。

MAX函數

查詢時序數據表中Field列的最大值。

FIRST函數

獲取時序數據表中Field列的第一個值。

LAST函數

獲取時序數據表中Field列的最后一個值。

PERCENTILE函數

計算時序數據表中與Field列關聯的第P個百分位字段值。

RATE函數

計算時序數據表中Field列值的斜率。

DELTA函數

計算時序數據表中Field列的值與前一行對應值的差。

LATEST函數

獲取時序數據表中Field列的最新的N條數據。

FORECAST函數(時序預測)

對時序數據表中的Field列進行時序預測。

ANOMALY_DETECT函數(時序異常檢測)

對時序數據表中Field列進行時序異常檢測。

BINS函數(特征分箱)

對時序數據表中Field列進行特征分箱。

數據準備

假設示例表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 |
+-----------+----------+---------------------------+-------------+-----------+

共包含以下兩條時間線:

  • 時間線1:Tag為device_id=F07A1260, region=north-cn。Field為temperature、humidity。

  • 時間線2:Tag為device_id=F07A1261, region=south-cn。Field為temperature、humidity。

說明

關于時間線的概念,請參見基本概念

時間處理函數

CURRENT_TIMESTAMP函數

說明

獲取系統當前運行時間。

語法

CURRENT_TIMESTAMP
重要
  • CURRENT_TIMESTAMP無參數,使用時直接通過關鍵字CURRENT_TIMESTAMP調用即可。

  • CURRENT_TIMESTAMP函數返回的時間戳精確至毫秒,例如2023-04-23T21:13:15.819+08:00

  • CURRENT_TIMESTAMP函數返回的是UTC+8格式的Lindorm實例服務端的系統時間,使用該函數前請確認系統時間是否滿足業務需求。

  • 請盡量避免在實際業務寫入數據時直接使用該函數的返回結果。建議在開發測試中需要大規模生成測試數據的場景下使用CURRENT_TIMESTAMP函數。

示例

在sensor表中插入一條數據,TAG為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函數

說明

計算時序數據表中Field列的和。

語法

SUM(field_name)
說明

SUM的返回類型為DOUBLE或長整型BIGINT。

參數

參數

描述

field_name

Field列名。

說明

Field列的類型不能是VARCHAR和BOOLEAN類型。

示例

  • 示例1:設備ID為F07A1260和F07A1261,對每條時間線進行降采樣操作,時間線按照20s時間窗口計算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,計算每個設備的溫度之和。

    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:計算所有設備的溫度之和。

    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函數

說明

計算時序數據表中Field列的平均值。

語法

AVG(field_name)
說明

AVG的返回類型為DOUBLE類型。

參數

參數

描述

field_name

Field列名。

說明

Field列的類型不能是VARCHAR和BOOLEAN類型。

示例

  • 示例1:設備ID為F07A1260和F07A1261,對每條時間線進行降采樣操作,時間線按照20s時間窗口計算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,計算每個設備的溫度的平均值。

    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:計算所有設備的溫度的平均值。

    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函數

說明

統計時序數據表中Field列的值個數。

語法

COUNT(field_name)
說明

COUNT的返回類型為BIGINT類型。

參數

參數

描述

field_name

Field列名。

示例

  • 示例1:設備ID為F07A1260和F07A1261,對每條時間線進行降采樣操作,時間線按照20s時間窗口統計各個窗口中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,統計每個設備的溫度的值個數。

    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:統計所有設備的溫度的值個數。

    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函數

說明

查詢時序數據表中Field列的最小值。

語法

MIN(field_name)
說明

MIN的返回類型為DOUBLE或長整型BIGINT。

參數

參數

描述

field_name

Field列名。

說明

Field列的類型不能是VARCHAR和BOOLEAN類型。

示例

  • 示例1:設備ID為F07A1260和F07A1261,對每條時間線進行降采樣操作,時間線按照20s時間窗口查詢各個窗口中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,查詢每個設備的溫度的最小值。

    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:查詢所有設備的溫度的最小值。

    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函數

說明

查詢時序數據表中Field列的最大值。

語法

MAX(field_name)
說明

MAX的返回類型為DOUBLE或長整型BIGINT。

參數

參數

描述

field_name

Field列名。

說明

Field列的類型不能是VARCHAR和BOOLEAN類型。

示例

  • 示例1:設備ID為F07A1260和F07A1261,對每條時間線進行降采樣操作,時間線按照20s時間窗口查詢各個窗口中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,查詢每個設備的溫度的最大值。

    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   |
    +-----------+----------+---------------------------+-------------+
  • 示例三:查詢所有設備的溫度的最大值。

    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函數

說明

獲取時序數據表中Field列的第一個值。

語法

FIRST(field_name)
說明

FIRST的返回類型與Field列的類型相同。

參數

參數

描述

field_name

Field列名。

示例

  • 示例1:設備ID為F07A1260和F07A1261,對每條時間線進行降采樣操作,時間線按照20s時間窗口獲取各個窗口中第一個溫度值。

    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,獲取每個設備第一個溫度值。

    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函數

說明

獲取時序數據表中Field列的最后一個值。

語法

LAST(field_name)
說明

LAST的返回類型與Field列的類型相同。

參數

參數

描述

field_name

Field列名。

示例

  • 示例1:設備ID為F07A1260和F07A1261,對每條時間線進行降采樣操作,時間線按照20s時間窗口獲取各個窗口中最后一個溫度值。

    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,獲取每個設備的最后一個溫度值。

    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函數

說明

計算時序數據表中與Field列關聯的第P個百分位字段值。

語法

PERCENTILE(field_name,P)
說明

PERCENTILE的返回類型為DOUBLE類型。

參數

參數

描述

field_name

Field列名。

說明

Field列的類型不能是VARCHAR和BOOLEAN類型。

P

取值為整數或浮點數,范圍為[0,100],默認值為50。

示例

  • 示例1:設備ID為F07A1260和F07A1261,對每條時間線進行降采樣操作,時間線按照20s時間窗口獲取各個窗口中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,獲取每個設備的溫度的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函數

說明

計算時序數據表中Field列值的斜率。

計算公式:每個數據點的時間戳和值分別是:(t1,v1),(t2,v2)...(tN,vN)。使用RATE函數后,返回N-1個數據點,每個數據點的時間戳和值分別是:

2023-03-20_10-29-38

說明

公式中interval是指定的變化率,單位為秒。

語法

RATE(field_name, 'interval units')
說明
  • RATE的返回類型為DOUBLE類型。

  • SQL語句中只支持RATE算子單獨使用。

參數

參數

描述

field_name

Field列名。

說明

Field列的類型不能是VARCHAR和BOOLEAN類型。

interval units

變化率。默認值為1s。單位包括s(秒)、m(分鐘)、h(小時)、d(天)。

示例

  • 示例1:設備ID為F07A1260和F07A1261,計算每個設備溫度的秒級變化率。

    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,計算每個設備溫度的分鐘變化率。

    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,先按照20s時間窗口計算temperature列的平均值,再對降采樣后的值計算分鐘變化率。

    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: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函數

說明

計算時序數據表中Field列的值與前一行對應值的差。

計算公式:每個數據點的時間戳和值分別是:(t1,v1),(t2,v2)...(tN,vN)。使用DELTA函數后,返回N-1個數據點,每個數據點的時間戳和值分別是:(t2,v2-v1),(t3,v3-v2)...(tN,vN-,vN-1)

語法

DELTA(field_name)
說明
  • DELTA的返回類型為DOUBLE類型。

  • SQL語句中只支持DELTA算子單獨使用。

參數

參數

描述

field_name

Field列名。

說明

Field列的類型不能是VARCHAR和BOOLEAN類型。

示例

  • 示例1:設備ID為F07A1260和F07A1261,計算每個設備溫度與前一行差值。

    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,先按照20s時間窗口計算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:SQL語句中只支持DELTA算子單獨使用,不支持以下混用方式。

    錯誤示例:

    錯誤示例: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函數

說明

獲取時序數據表中Field列的最新的N條數據。

語法

LATEST(field_name, N)
說明
  • LATEST的返回類型與Field列的類型相同。

  • SQL語句中只支持LATEST算子單獨使用。

參數

參數

描述

field_name

Field列名。

N

整型,用于指定查詢最新的N條數據。默認值為1,表示獲取最新的一條數據。

示例

  • 示例1:查詢設備F07A1260和F07A1261最新的溫度值。

    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:查詢設備F07A1260和F07A1261最新的兩條溫度值。

    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: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函數(時序預測)

前提條件

時序預測功能依賴于Lindorm AI引擎,在使用FORECAST函數前,請開通Lindorm AI引擎。開通方式,請參見開通指南

說明

對時序數據表中的Field列進行時序預測。

語法

FORECAST(field_name, model_name, options)
說明

FORECAST的返回類型為DOUBLE類型。

參數

參數

描述

field_name

Field列名。

說明

Field列的類型不能是VARCHAR和BOOLEAN類型。

model_name

模型名稱。

說明

model_name的類型為VARCHAR類型。

options

調整時序預測的結果。可選參數。格式為:key1=value1[, key2=value2]

  • batch_size:可選參數。一次推理所選取的時間線數量。當緩存的批量時間線數量達到batch_size時,執行一次批量預測。默認值為訓練階段時間線的數量,類型為INTEGER

  • step:可選參數。輸出預測結果的步長。默認值為訓練階段指定的PREDICTION_LENGTH參數的值,類型為INTEGER。

  • quantile_output:可選參數。輸出分位數。對于時間線上的一個數據點,深度模型產生的預測結果是一個數組,通過指定quantile_output可以在數組中篩選數據作為最終預測結果。默認值為0.5,類型為DOUBLE。不同算法下取值不同:

    • 使用DeepAR算法時,取值范圍為(0,1)。

    • 使用TFT算法時,取值為0.1,0.5或0.9。

示例

  • 示例1:對時序數據表sensor中指定時間段的溫度進行時序預測。

    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:對時序數據表sensor中指定時間段的溫度進行時序預測,同時指定預測步長為2,輸出分位數為0.9。

    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函數(時序異常檢測)

說明

對時序數據表中Field列進行時序異常檢測。

語法

ANOMALY_DETECT(field_name, [algo_name | model_name], options)
說明

ANOMALY_DETECT的返回類型為BOOLEAN類型。

參數

參數

描述

field_name

Field列名。

說明

Field列的類型不能是VARCHAR和BOOLEAN類型。

algo_name

異常檢測算法名稱。支持阿里達摩院自研在線異常檢測算法。

  • esd:適用于尖刺型異常(例如監控曲線出現尖刺的現象),對于數據點中有少量顯著離群點的情況比較適用。

  • nsigma:原理簡單,便于分析異常原因。

  • ttest:用于識別一個時間窗口內時序指標是否存在因均值變化而發生的異常。

  • istl-esd:適用于帶周期性信號的數據。

說明

algo_identifer參數適用于未開通數據庫內機器學習功能,但有使用時序異常檢測需求的場景。

model_name

模型名稱。

說明
  • model_name的類型為VARCHAR類型。

  • model_name參數僅適用于開通數據庫內機器學習功能后,使用時序異常檢測的場景。開通數據庫內機器學習的方法,請參見開通方式

options

調整異常檢測算法的檢測效果。可選參數。格式為:key1=value1[, key2=value2]。詳細說明,請參見時序異常檢測

示例

  • 示例1:對時序數據表sensor中指定時間范圍的溫度使用esd算法進行時序異常檢測。

    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:對時序數據表sensor中F07A1260設備指定時間范圍的溫度使用esd算法進行時序異常檢測。

    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:對時序數據表sensor中F07A1260設備指定時間范圍的溫度使用esd算法進行時序異常檢測,并自定義異常檢測算法的參數(異常檢測算法參考的時間窗口長度為30,異常檢測時值小于90%分位數的點被過濾)。

    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:使用在數據庫內機器學習功能中創建的時序異常檢測模型,對sensor表中指定時間范圍的溫度進行時序異常檢測。

    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 | 2022-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函數(特征分箱

說明

對時序數據表中Field列進行特征分箱,特征分箱(也稱為離散分箱或者離散分段)是一種數據預處理技術。

語法

BINS(field_name, options)
說明

BINS的返回類型為VARCHAR類型。

參數

參數

是否必選

描述

field_name

Field列名。

說明

Field列的類型不能是VARCHAR和BOOLEAN類型。

options

指定特征分箱策略和輸出方式,具體說明請參見特征分箱。格式為:key1=value1[, key2=value2]

示例

  • 示例1:對時序數據表sensor中指定時間范圍的溫度進行特征分箱。

    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中F07A1260設備指定時間范圍的溫度進行特征分箱。

    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中F07A1260設備指定時間范圍的溫度進行特征分箱,并自定義分箱算法的參數(生成分箱數為2的等寬分箱,結果以分箱區間的順序編碼形式輸出)。

    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                 |
    +-----------+----------+--------------------------------+--------------------+