Tüm Ürünler
Search
Belge Merkezi

Lindorm:Ortak zaman serisi işlevleri

Son Güncelleme:Oct 07, 2026

LindormTSDB SQL; toplama, seçme, dönüştürme ve yapay zeka destekli analizi kapsayan bir dizi yerleşik zaman serisi işlevini destekler. Bu sayfada her bir işlevin sözdizimi, parametreleri ve çalıştırılabilir örneklerle kullanımı açıklanmaktadır.

Uygulanabilen altyapılar ve sürümler

İşlev listesi


Kategori


İşlev


Açıklama


Zaman Damgası


CURRENT_TIMESTAMP


Geçerli sistem saatini döndürür.


Toplama


SUM


Bir alan sütunundaki değerlerin toplamını hesaplar.


Toplama


AVG


Bir alan sütunundaki değerlerin ortalamasını hesaplar.


Toplama


COUNT


Bir alan sütunundaki değer sayısını döndürür.


Seçme


MIN


Bir alan sütunundaki en küçük değeri döndürür.


Seçme


MAX


Bir alan sütunundaki en büyük değeri döndürür.


Seçme


FIRST


Bir alan sütunundaki en eski değeri döndürür.


Seçme


LAST


Bir alan sütunundaki en yeni değeri döndürür.


Seçme


PERCENTILE


Bir alan sütununda belirtilen yüzdelik dilime karşılık gelen değeri döndürür.


Dönüştürme


RATE


Bir alan sütununda ardışık değerler arasındaki değişim oranını (eğim) hesaplar.


Dönüştürme


DELTA


Bir alan sütununda her değer ile önceki değer arasındaki farkı hesaplar.


Dönüştürme


LATEST


Bir alan sütunundaki en son N değeri döndürür.


Yapay Zeka


ANOMALY_DETECT


Bir alan sütunundaki anomalileri algılar.


Yapay Zeka


BINS


Bir alan sütunundaki değerleri gruplara ayırır (özellik gruplama).

Veri hazırlığı

Bu sayfadaki tüm örnekler aşağıdaki şemaya sahip sensor adlı bir tablo kullanır:

+-------------+-----------+------------+
| columnName  | typeName  | columnKind |
+-------------+-----------+------------+
| device_id   | VARCHAR   | TAG        |
| region      | VARCHAR   | TAG        |
| time        | TIMESTAMP | TIMESTAMP  |
| temperature | DOUBLE    | FIELD      |
| humidity    | DOUBLE    | FIELD      |
+-------------+-----------+------------+

Tablo şu satırları içerir:

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

Tabloda iki zaman serisi bulunur:

  • Zaman serisi 1: device_id=F07A1260, region=north-cn, temperature ve humidity alanlarına sahiptir.

  • Zaman serisi 2: device_id=F07A1261, region=south-cn, temperature ve humidity alanlarına sahiptir.

Zaman serisi kavramları hakkında daha fazla bilgi için bkz. Terimler .

Sorgu kalıpları

Bu sayfadaki örneklerde, her ikisi de LindormTSDB'ye özgü SQL sözdizimi olan iki SAMPLE BY kalıbı kullanılır:

  • SAMPLE BY <interval> — satırları sabit zaman pencerelerine gruplayarak verileri alt örnekleme yoluyla azaltır. Örneğin, SAMPLE BY 20s satırları 20 saniyelik aralıklara gruplar ve her aralık için toplama işlevini uygular.

  • SAMPLE BY 0 — alt örnekleme yapmadan her zaman serisi için tam zaman aralığında toplama işlemi gerçekleştirir.

Zaman damgası işlevi

CURRENT_TIMESTAMP

Lindorm örneğini çalıştıran sunucudan geçerli sistem saatini döndürür.

Sözdizimi

CURRENT_TIMESTAMP
Önemli
  • CURRENT_TIMESTAMP parametre almaz.

  • Döndürülen zaman damgası milisaniye düzeyinde hassastır. Örnek: 2023-04-23T21:13:15.819+08:00.

  • Üretim ortamındaki yazma işlemleri için zaman damgası oluşturmak amacıyla CURRENT_TIMESTAMP kullanmayın. Yalnızca test verisi oluşturmak için kullanın.

Örnek

Zaman damgası olarak geçerli sistem saatini kullanarak sensor tablosuna bir satır ekleyin:

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

Toplama işlevleri

SUM

Bir alan sütunundaki değerlerin toplamını hesaplar. DOUBLE veya BIGINT döndürür.

Sözdizimi

SUM(field_name)

Parametreler


Parametre


Açıklama


field_name


Alan sütununun adı. Sütun VARCHAR veya BOOLEAN türünde olamaz.

Örnekler

Örnek 1: 20 saniyelik aralıklarla alt örnekleme yapın, ardından cihaz başına aralık bazında temperature toplamını hesaplayın.

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;

Sonuç:

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

Örnek 2: Tam zaman aralığında cihaz başına toplam temperature toplamını hesaplayın.

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;

Sonuç:

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

Örnek 3: Tüm cihazlardaki toplam temperature toplamını hesaplayın.

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';

Sonuç:

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

AVG

Bir alan sütunundaki değerlerin ortalamasını hesaplar. DOUBLE döndürür.

Sözdizimi

AVG(field_name)

Parametreler


Parametre


Açıklama


field_name


Alan sütununun adı. Sütun VARCHAR veya BOOLEAN türünde olamaz.

Örnekler

Örnek 1: 20 saniyelik aralıklarla alt örnekleme yapın, ardından cihaz başına aralık bazında ortalama temperature değerini hesaplayın.

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;

Sonuç:

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

Örnek 2: Tam zaman aralığında cihaz başına ortalama temperature değerini hesaplayın.

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;

Sonuç:

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

Örnek 3: Tüm cihazlarda ortalama temperature değerini hesaplayın.

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';

Sonuç:

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

COUNT

Bir alan sütunundaki değer sayısını döndürür. BIGINT döndürür.

Sözdizimi

COUNT(field_name)

Parametreler


Parametre


Açıklama


field_name


Alan sütununun adı.

Örnekler

Örnek 1: 20 saniyelik aralıklarla alt örnekleme yapın, ardından cihaz başına aralık bazında temperature değerlerini sayın.

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;

Sonuç:

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

Örnek 2: Tam zaman aralığında cihaz başına toplam temperature değer sayısını hesaplayın.

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;

Sonuç:

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

Örnek 3: Tüm cihazlardaki toplam temperature değer sayısını hesaplayın.

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';

Sonuç:

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

Seçme işlevleri

Seçme işlevleri, hesaplanan skaler değerler yerine gerçek veri satırlarını döndürür. SUM ve AVG gibi toplama işlevlerinden farklı olarak, seçme işlevleri temel satırlardaki orijinal değeri ve bazı durumlarda ilişkili zaman damgasını korur.

MIN

Bir alan sütunundaki en küçük değeri döndürür. DOUBLE veya BIGINT döndürür.

Sözdizimi

MIN(field_name)

Parametreler


Parametre


Açıklama


field_name


Alan sütununun adı. Sütun VARCHAR veya BOOLEAN türünde olamaz.

Örnekler

Örnek 1: 20 saniyelik aralıklarla alt örnekleme yapın, ardından cihaz başına aralık bazında minimum temperature değerini bulun.

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;

Sonuç:

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

Örnek 2: Tam zaman aralığında cihaz başına minimum temperature değerini bulun.

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;

Sonuç:

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

Örnek 3: Tüm cihazlarda minimum temperature değerini bulun.

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';

Sonuç:

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

MAX

Bir alan sütunundaki en büyük değeri döndürür. DOUBLE veya BIGINT döndürür.

Sözdizimi

MAX(field_name)

Parametreler


Parametre


Açıklama


field_name


Alan sütununun adı. Sütun VARCHAR veya BOOLEAN türünde olamaz.

Örnekler

Örnek 1: 20 saniyelik aralıklarla alt örnekleme yapın, ardından cihaz başına aralık bazında maksimum temperature değerini bulun.

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;

Sonuç:

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

Örnek 2: Tam zaman aralığında cihaz başına maksimum temperature değerini bulun.

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;

Sonuç:

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

Örnek 3: Tüm cihazlarda maksimum temperature değerini bulun.

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';

Sonuç:

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

FIRST

Sorgu penceresi içinde bir alan sütunundaki en eski değeri döndürür. Dönüş türü alan sütunu türüyle eşleşir.

Sözdizimi

FIRST(field_name)

Parametreler


Parametre


Açıklama


field_name


Alan sütununun adı.

Örnekler

Örnek 1: 20 saniyelik aralıklarla alt örnekleme yapın, ardından cihaz başına aralık bazında ilk temperature değerini alın.

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;

Sonuç:

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

Örnek 2: Tam zaman aralığında cihaz başına ilk temperature değerini alın.

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;

Sonuç:

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

Sorgu penceresi içinde bir alan sütunundaki en yeni değeri döndürür. Dönüş türü alan sütunu türüyle eşleşir.

Sözdizimi

LAST(field_name)

Parametreler


Parametre


Açıklama


field_name


Alan sütununun adı.

Örnekler

Örnek 1: 20 saniyelik aralıklarla alt örnekleme yapın, ardından cihaz başına aralık bazında son temperature değerini alın.

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;

Sonuç:

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

Örnek 2: Tam zaman aralığında cihaz başına son temperature değerini alın.

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;

Sonuç:

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

Bir alan sütununda belirtilen yüzdelik dilime karşılık gelen değeri döndürür. DOUBLE döndürür.

Sözdizimi

PERCENTILE(field_name, P)

Parametreler


Parametre


Açıklama


field_name


Alan sütununun adı. Sütun VARCHAR veya BOOLEAN türünde olamaz.


P


Yüzdelik dilimi belirten bir tamsayı veya ondalık sayı. Geçerli aralık: 0 ila 100. Varsayılan: 50.

Örnekler

Örnek 1: 20 saniyelik aralıklarla alt örnekleme yapın, ardından cihaz başına aralık bazında temperature değerlerinin 90. yüzdelik dilimini hesaplayın.

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;

Sonuç:

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

Örnek 2: Tam zaman aralığında cihaz başına temperature değerlerinin 90. yüzdelik dilimini hesaplayın.

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;

Sonuç:

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

Dönüştürme işlevleri

RATE

Bir alan sütununda ardışık değerler arasındaki değişim oranını (eğim) hesaplar. DOUBLE döndürür.

(t1,v1), (t2,v2) ... (tN,vN) veri noktaları verildiğinde, RATE N−1 çıktı noktası üretir. Her çıktı zaman damgası ve değeri şu şekilde hesaplanır:

2023-03-20_10-29-38

burada interval saniye cinsinden belirtilen zaman aralığıdır.

Önemli

RATE, bir SQL ifadesindeki tek toplayıcı olmalıdır. Aynı sorguda AVG, DELTA veya LATEST gibi diğer toplayıcılarla birlikte kullanılamaz.

Sözdizimi

RATE(field_name, 'interval units')

Parametreler


Parametre


Açıklama


field_name


Alan sütununun adı. Sütun VARCHAR veya BOOLEAN türünde olamaz.


interval units


Eğim hesaplama için zaman aralığı. Varsayılan: 1s. Geçerli birimler: s (saniye), m (dakika), h (saat), d (gün).

Örnekler

Örnek 1: Her cihaz için temperature değerlerinin saniye başına değişim oranını hesaplayın.

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;

Sonuç:

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

Örnek 2: Her cihaz için temperature değerlerinin dakika başına değişim oranını hesaplayın.

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;

Sonuç:

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

Örnek 3: 20 saniyelik aralıklarla alt örnekleme yapın, aralık başına ortalama temperature değerini hesaplayın, ardından bu ortalamaların dakika başına değişim oranını hesaplayın.

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;

Sonuç:

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

Örnek 4: RATE başka toplayıcılarla birleştirilemediği için aşağıdaki sorgular başarısız olur.

-- Error: multiple aggregators in one statement
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
-- Error: mixing RATE with LATEST
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

Bir alan sütununda her değer ile önceki değer arasındaki farkı hesaplar. DOUBLE döndürür.

(t1,v1), (t2,v2) ... (tN,vN) veri noktaları verildiğinde, DELTA N−1 çıktı noktası üretir: (t2, v2−v1), (t3, v3−v2) ... (tN, vN−vN-1).

Önemli

DELTA, bir SQL ifadesindeki tek toplayıcı olmalıdır. Aynı sorguda AVG, RATE veya LATEST gibi diğer toplayıcılarla birlikte kullanılamaz.

Sözdizimi

DELTA(field_name)

Parametreler


Parametre


Açıklama


field_name


Alan sütununun adı. Sütun VARCHAR veya BOOLEAN türünde olamaz.

Örnekler

Örnek 1: Her cihaz için satır bazında temperature farklarını hesaplayın.

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;

Sonuç:

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

Örnek 2: 20 saniyelik aralıklarla alt örnekleme yapın, aralık başına ortalama temperature değerini hesaplayın, ardından bu ortalamaların satır bazında farklarını hesaplayın.

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;

Sonuç:

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

Örnek 3: DELTA başka toplayıcılarla birleştirilemediği için aşağıdaki sorgu başarısız olur.

-- Error: mixing DELTA with RATE
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

Bir alan sütunundaki en son N değeri, zaman damgasına göre sıralanmış şekilde döndürür. Dönüş türü alan sütunu türüyle eşleşir.

LATEST, bir SQL ifadesindeki tek toplayıcı olmalıdır.

Sözdizimi

LATEST(field_name, N)

Parametreler


Parametre


Açıklama


field_name


Alan sütununun adı.


N


Döndürülecek en son değer sayısını belirten bir tamsayı. Varsayılan: 1.

Örnekler

Örnek 1: Her cihaz için en son temperature değerini alın.

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;

Sonuç:

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

Örnek 2: Her cihaz için en son iki temperature değerini alın.

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;

Sonuç:

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

Örnek 3: LATEST başka toplayıcılarla birleştirilemediği için aşağıdaki sorgu başarısız olur.

-- Error: mixing LATEST with RATE
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

Yapay zeka işlevleri

FORECAST

Eğitilmiş bir model kullanarak bir zaman serisi tablosundaki gelecekteki alan değerlerini tahmin eder. DOUBLE döndürür.

Ön Koşullar

FORECAST, Lindorm AI'a bağlıdır. Bu işlevi kullanmadan önce örneğiniz için Lindorm AI'ı etkinleştirin.

Sözdizimi

FORECAST(field_name, model_name, options)

Parametreler


Parametre


Gerekli


Açıklama


field_name


Evet


Alan sütununun adı. Sütun VARCHAR veya BOOLEAN türünde olamaz.


model_name


Evet


Eğitilmiş modelin adı. VARCHAR türünde olmalıdır.


options


Hayır


Tahmin seçenekleri, key1=value1[, key2=value2] biçimindedir. Aşağıdaki seçeneklere bakın.

Seçenekler


Seçenek


Tür


Varsayılan


Açıklama


batch_size


INTEGER


Eğitimdeki zaman serisi sayısı


Çıkarım başına düşen zaman serisi sayısı. Önbelleğe alınan zaman serileri bu sayıya ulaştığında bir parti tahmini tetiklenir.


step


INTEGER


Eğitim sırasında ayarlanan PREDICTION_LENGTH değeri


Tahmin sonuçlarının çıktılanacağı adım uzunluğu.


quantile_output


DOUBLE


0,5


Çıktı tahmin sonucunun yüzdelik dilimi. Veritabanı içi makine öğrenimi, her veri noktası için bir dizi tahmin edilen değer sağlar; quantile_output bu diziden bir değer seçer. Kullanılan algoritmaya göre bunu ayarlayın: DeepAR için 0 ile 1 arasında bir değer kullanın; TFT için 0,1, 0,5 veya 0,9 kullanın.

Örnekler

Örnek 1: Belirli bir zaman aralığındaki temperature değerlerini tahmin edin.

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;

Sonuç:

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

Örnek 2: Her diğer adımda 90. yüzdelik dilim tahmini almak için step=2 ve quantile_output=0.9 ile tahmin yapın.

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;

Sonuç:

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

Yerleşik bir algoritma veya eğitilmiş bir model kullanarak bir alan sütunundaki anomalileri algılar. BOOLEAN döndürür.

Sözdizimi

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

Parametreler


Parametre


Gerekli


Açıklama


field_name


Evet


Alan sütununun adı. Sütun VARCHAR veya BOOLEAN türünde olamaz.


algo_name


Koşullu


DAMO Academy'den yerleşik bir algoritmanın adı. Lindorm AI etkinleştirilmemiş olduğunda bu parametreyi kullanın. Desteklenen değerler: esd (izleme eğrileri için ani yükselme algılama), nsigma (basit istatistiksel anomali analizi), ttest (ortalama değer kaymalarından kaynaklanan anomalileri algılar), istl-esd (periyodik veriler için anomali algılama).


model_name


Koşullu


Eğitilmiş bir anomali algılama modelinin adı. VARCHAR türünde olmalıdır. Lindorm AI etkinleştirildiğinde bu parametreyi kullanın. Daha fazla bilgi için bkz. Lindorm AI'ı Etkinleştirme.


options


Hayır


Algılama seçenekleri, key1=value1[, key2=value2] biçimindedir. Kullanılabilir seçenekler için bkz. Zaman Serisi Anomali Algılama.

Örnekler

Örnek 1: Tüm cihazlardaki temperature verilerindeki anomalileri algılamak için ESD algoritmasını kullanın.

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;

Sonuç:

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

Örnek 2: Yalnızca F07A1260 cihazındaki temperature verilerindeki anomalileri algılamak için ESD'yi kullanın.

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;

Sonuç:

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

Örnek 3: Özel seçeneklerle ESD'yi kullanın — lenHistoryWindow değerini 30, maxAnomalyRatio değerini ise 0,1 olarak ayarlayın.

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;

Sonuç:

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

Örnek 4: Anomalileri algılamak için Lindorm AI'dan eğitilmiş bir model kullanın.

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;

Sonuç:

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

Bir alan sütunundaki değerleri gruplara ayırır (özellik gruplama). Özellik gruplama — ayrık gruplama veya paketleme olarak da bilinir — bir veri ön işleme tekniğidir. VARCHAR döndürür.

Sözdizimi

BINS(field_name, options)

Parametreler


Parametre


Gerekli


Açıklama


field_name


Evet


Alan sütununun adı. Sütun VARCHAR veya BOOLEAN türünde olamaz.


options


Hayır


Gruplama ilkesi ve çıktı biçimi, key1=value1, key2=value2 biçimindedir.

Örnekler

Örnek 1: Belirtilen zaman aralığındaki tüm temperature değerlerini gruplara ayırın.

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;

Sonuç:

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

Örnek 2: F07A1260 cihazındaki temperature değerlerini gruplara ayırın.

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;

Sonuç:

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

Örnek 3: F07A1260 cihazındaki temperature değerlerini 2 eşit gruba ayırın ve sıralı etiketleri çıktılayın.

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;

Sonuç:

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