全部产品
Search
文档中心

Lindorm:Deteksi anomali deret waktu

更新时间:Jul 06, 2025

Topik ini menjelaskan algoritma dan sintaksis yang digunakan untuk mendeteksi anomali pada data deret waktu.

Mesin dan versi yang berlaku

Sintaksis deteksi anomali deret waktu hanya berlaku untuk LindormTSDB dan didukung oleh semua versi LindormTSDB.

Batasan

Sintaksis deteksi anomali deret waktu harus digunakan bersama dengan klausa SAMPLE BY.

Ikhtisar

Deteksi anomali deret waktu menggunakan algoritma deteksi anomali online yang dikembangkan oleh Akademi DAMO untuk mengidentifikasi titik-titik abnormal dalam data deret waktu. Selama proses deteksi, algoritma terus mempelajari karakteristik data seperti tren atau periode untuk mendeteksi anomali pada titik-titik baru yang dimasukkan. Sebagai contoh, jika nilai suatu titik baru secara signifikan berbeda dari titik lainnya, algoritma akan menganggap titik tersebut sebagai potensi anomali.

Anda dapat menggunakan deteksi anomali deret waktu dengan klausa SAMPLE BY melalui metode berikut:

  • Gunakan klausa SAMPLE BY 0 untuk mendeteksi setiap titik data di seluruh deret waktu. Untuk detail lebih lanjut, lihat Contoh 1, Contoh 2, dan Contoh 3.

  • Gunakan klausa SAMPLE BY INTERVAL untuk menentukan interval downsampling dan menerapkan operator downsampling bertingkat seperti MIN, MAX, AVG, COUNT, dan SUM.

    Penting

    Nilai INTERVAL tidak boleh 0.

    Untuk informasi lebih lanjut, lihat Contoh 4.

  • Gunakan klausa SAMPLE BY 0 dan operator downsampling bertingkat seperti LATEST, DELTA, dan RATE untuk menanyakan data yang berbeda. Untuk detail lebih lanjut, lihat Contoh 5.

Sintaksis

select_sample_by_statement ::=  SELECT ( select_clause )
                                FROM table_identifier
                                WHERE where_clause
                                SAMPLE BY 0
select_clause              ::=  selector [ AS identifier ] ( ',' selector [ AS identifier ] )
selector                   ::=  tag_identifier, | time | anomaly_detect '(' field_identifier ',' algo_identifier | model_identifier [ ',' options] ')'
where_clause               ::=  relation ( AND relation )* (OR relation)*
relation                   ::=  ( field_identifier| tag_identifier, ) operator term
operator                   ::=  '=' | '<' | '>' | '<=' | '>=' | '!=' | IN | CONTAINS | CONTAINS KEY

Dalam sintaksis, anomaly_detect menunjukkan fungsi deteksi anomali. Tabel berikut menjelaskan parameter yang dapat dikonfigurasikan.

Parameter

Deskripsi

field_identifier

Nama kolom bidang.

Catatan

Data di kolom bidang yang ditentukan tidak boleh bertipe VARCHAR atau BOOLEAN.

algo_identifier

Nama algoritma yang digunakan untuk mendeteksi anomali. Algoritma deteksi anomali online yang dikembangkan oleh Akademi DAMO didukung.

  • esd: algoritma yang berlaku untuk anomali berpuncak, seperti lonjakan dalam kurva pemantauan dan skenario di mana sejumlah kecil titik data secara signifikan berbeda dari titik data lainnya.

  • nsigma: algoritma yang sederhana dan mudah untuk menganalisis penyebab anomali.

  • ttest: algoritma yang digunakan untuk mengidentifikasi apakah data deret waktu terkait abnormal karena perubahan nilai rata-rata.

  • istl-esd: algoritma yang berlaku untuk mendeteksi anomali dalam data periodik.

Catatan

Parameter algo_identifier berlaku untuk skenario di mana pembelajaran mesin dalam database tidak diaktifkan dan anomali terkait data deret waktu harus dideteksi.

model_identifier

Nama model yang digunakan untuk mendeteksi anomali.

Catatan
  • Nilai dari parameter model_identifier adalah bertipe VARCHAR.

  • Parameter model_identifier berlaku untuk skenario di mana pembelajaran mesin dalam database diaktifkan dan anomali terkait data deret waktu harus dideteksi. Untuk informasi lebih lanjut, lihat Pembelajaran mesin dalam database.

options

Opsi yang digunakan untuk menyesuaikan efek deteksi. Parameter ini opsional. Konfigurasikan opsi dalam format key1=value1 key2=value2.

Kategori

Tabel berikut menjelaskan algoritma deteksi anomali yang didukung oleh LindormTSDB beserta skenario aplikasinya.

Algoritma

Skenario

esd

  • Algoritma ini dapat mendeteksi titik abnormal tunggal.

  • Algoritma ini berlaku untuk mendeteksi data abnormal berpuncak. Algoritma ini dapat mendeteksi dengan akurat sejumlah kecil titik abnormal yang nilainya secara signifikan berbeda dari titik lainnya.

nsigma

  • Algoritma ini dapat mendeteksi titik abnormal tunggal.

  • Algoritma ini sederhana dan mudah digunakan. Anda dapat menggunakan hasil yang dikembalikan oleh algoritma ini untuk dengan mudah mengidentifikasi penyebab utama anomali yang terdeteksi.

Catatan

Kami merekomendasikan agar Anda tidak menggunakan algoritma ini untuk mendeteksi sejumlah kecil titik abnormal yang nilainya secara signifikan berbeda dari titik lainnya. Dalam hal ini, hasil deteksi yang dikembalikan oleh algoritma ini mungkin tidak akurat.

ttest

  • Algoritma ini dapat mendeteksi data deret waktu dalam jendela waktu tertentu.

  • Algoritma ini mendeteksi anomali yang disebabkan oleh variasi nilai rata-rata metrik yang ditentukan dalam jendela waktu tertentu. Sebagai contoh, algoritma dapat mendeteksi apakah nilai rata-rata array deret waktu dalam jendela waktu yang ditentukan secara signifikan berbeda dari nilai rata-rata array deret waktu dalam jendela waktu referensi.

    • Anda dapat memperoleh jendela waktu di mana Anda ingin mendeteksi anomali untuk data deret waktu dengan memeriksa panjang array yang ditentukan oleh lenDetectWindow.

    • Anda dapat memperoleh jendela waktu referensi dengan memeriksa panjang array yang ditentukan oleh lenHistoryWindow.

Incremental STL with ESD (istl-esd)

Algoritma ini berlaku untuk mendeteksi anomali dalam data periodik. Algoritma istl-esd adalah algoritma Incremental STL yang dikembangkan oleh Akademi DAMO. Algoritma Incremental STL dapat menguraikan data penambahan periodik menjadi komponen periodik, komponen tren, dan komponen residu. Algoritma istl-esd mengintegrasikan algoritma Incremental STL dengan algoritma esd. Algoritma Incremental STL digunakan untuk menguraikan data penambahan periodik, dan algoritma esd digunakan untuk mendeteksi anomali dalam komponen residu yang diuraikan dari data periodik. Algoritma esd dapat mendeteksi puncak non-periodik berdasarkan komponen residu yang diuraikan.

Incremental STL with Nsigma (istl-nsigma)

Algoritma ini berlaku untuk mendeteksi anomali dalam data periodik. Algoritma Incremental STL dapat menguraikan data penambahan periodik menjadi komponen periodik, komponen tren, dan komponen residu. Algoritma istl-nsigma mengintegrasikan algoritma Incremental STL dengan algoritma nsigma. Algoritma Incremental STL digunakan untuk menguraikan data penambahan periodik, dan algoritma nsigma digunakan untuk mendeteksi anomali dalam komponen residu yang diuraikan dari data periodik. Algoritma nsigma dapat mendeteksi puncak non-periodik berdasarkan komponen residu yang diuraikan.

Gambar-gambar berikut menunjukkan skenario aplikasi dari berbagai algoritma.

  • esd: Algoritma ini mendeteksi setiap titik data dalam deret waktu dan cocok untuk skenario dengan sejumlah kecil titik abnormal di antara banyak titik normal dengan nilai stabil.image.png

  • nsigma: Algoritma ini mendeteksi setiap titik data dalam deret waktu dan cocok untuk skenario di mana nilai-nilai titik abnormal berbeda signifikan dari nilai rata-rata historis. Parameter n dapat dikonfigurasi untuk menyesuaikan toleransi perbedaan.image.png

  • ttest: Algoritma ini mendeteksi anomali pada data deret waktu dalam jendela waktu tertentu dan cocok untuk skenario di mana nilai rata-rata metrik berubah secara signifikan antara dua jendela waktu berturut-turut.

    image.pngimage.png

  • istl-esd: Algoritma ini digunakan untuk mendeteksi anomali dalam data deret waktu periodik. Algoritma ini menghilangkan komponen periodik dari data asli, lalu menggunakan algoritma esd untuk mendeteksi anomali. Algoritma istl-esd cocok untuk skenario di mana terdapat sejumlah kecil titik data abnormal di antara banyak titik data periodik normal dengan nilai stabil.

    image.png

  • istl-nsigma: Algoritma ini mendeteksi anomali dalam data deret waktu periodik dengan menghilangkan komponen periodik dan menggunakan algoritma nsigma. Cocok untuk skenario di mana nilai-nilai titik abnormal berbeda signifikan dari nilai rata-rata historis.image.png

Parameter

Anda dapat mengonfigurasi parameter untuk algoritma deteksi anomali yang digunakan. Parameter ini mencakup parameter umum, pelatihan, dan inferensi. Parameter opsional options dapat ditentukan untuk menyesuaikan kinerja algoritma.

Catatan

Parameter umum

Parameter umum mengontrol debugging, diagnosis, dan perilaku lain selama deteksi anomali. Parameter ini berlaku untuk semua algoritma deteksi anomali yang didukung. Tabel berikut menjelaskan parameter umum yang dapat dikonfigurasikan.

Parameter

Tipe

Nilai default

Deskripsi

verbose

BOOLEAN

FALSE

Menentukan apakah akan mengembalikan informasi rinci dan mengidentifikasi hasil deteksi kolom yang ditentukan. Informasi yang dikembalikan bervariasi dengan algoritma yang Anda gunakan. Nilai valid:

  • TRUE

  • FALSE

Jika Anda menetapkan parameter ini ke TRUE, kolom tambahan ditampilkan dalam hasil yang dikembalikan untuk menunjukkan informasi rinci. Untuk informasi lebih lanjut, lihat bagian "Informasi rinci yang dikembalikan untuk parameter verbose".

adhoc_state

BOOLEAN

FALSE

Menentukan apakah status deteksi anomali algoritma hanya tersedia dalam kueri saat ini. Untuk informasi lebih lanjut tentang status deteksi anomali, lihat Status deteksi pengecualian.

direction

VARCHAR

UP

Jenis anomali yang ingin Anda deteksi. Nilai valid:

  • Up: Hanya peningkatan abnormal data deret waktu yang dideteksi sebagai anomali.

  • Down: Hanya penurunan abnormal data deret waktu yang dideteksi sebagai anomali.

  • Both: Peningkatan dan penurunan abnormal dalam data deret waktu dideteksi sebagai anomali.

Informasi rinci yang dikembalikan untuk parameter verbose

Algoritma

Kolom tambahan

Tipe

Nilai valid

Deskripsi

esd

anomaly

BOOLEAN

  • TRUE

  • FALSE

  • TRUE: Titik data saat ini abnormal.

  • FALSE: Titik data saat ini normal.

anomalyLevel

STRING

  • NORMAL

  • UNKNOW

  • NORMAL: Tidak ada anomali yang terdeteksi untuk titik data saat ini.

  • UNKNOW: Anomali terdeteksi untuk titik data saat ini dan tidak diklasifikasikan.

detectedDirection

STRING

  • UP

  • DOWN

  • NONE

  • UP: Nilai titik data saat ini lebih besar dari nilai statistik dalam jendela.

  • DOWN: Nilai titik data saat ini lebih kecil dari nilai statistik dalam jendela.

  • NONE: Titik data saat ini normal dan nilai dalam kolom anomali adalah FALSE.

anomalyScore

DOUBLE

[0, Double.MAX_VALUE]

Skor anomali yang terdeteksi. Nilai yang lebih besar menunjukkan bahwa anomali titik data saat ini lebih jelas.

threshold

DOUBLE

[0, Double.MAX_VALUE]

Ambang batas berdasarkan mana algoritma menentukan apakah titik data saat ini abnormal.

Jika nilai dalam kolom anomalyScore lebih besar dari nilai dalam kolom threshold, titik data saat ini abnormal. Jika nilai dalam kolom anomalyScore lebih kecil dari nilai dalam kolom threshold, titik data saat ini normal.

Ambang batas dihitung berdasarkan parameter alpha dan lenHistoryWindow. Ambang batas meningkat ketika nilai alpha menurun atau nilai lenHistoryWindow meningkat.

upperBound

DOUBLE

Semua nilai tipe DOUBLE

Batas atas untuk deteksi anomali.

Sebagai contoh, jika Anda menetapkan parameter maxAnomalyRatio ke 0.3, nilai dalam kolom upperBound adalah nilai distribusi 70% (dihitung dengan rumus berikut: 1 - maxAnomalyRatio) dari data yang diurutkan dalam jendela. Dalam hal ini, titik data yang nilainya lebih kecil dari nilai upperBound tidak dideteksi untuk anomali.

Catatan

Panjang jendela ditentukan oleh parameter lenHistoryWindow.

Jika nilai titik data berada dalam rentang [lowerBound, upperBound], algoritma menentukan bahwa titik data tersebut normal. Jika nilai titik data tidak berada dalam rentang tersebut, algoritma menghitung nilai anomalyScore untuk titik data tersebut. Jika anomalyScore titik data tersebut lebih besar dari nilai dalam kolom threshold, titik data tersebut ditentukan abnormal.

lowerBound

DOUBLE

Semua nilai tipe DOUBLE

Batas bawah untuk deteksi anomali.

Sebagai contoh, jika Anda menetapkan parameter maxAnomalyRatio ke 0.3, nilai dalam kolom lowerBound adalah nilai distribusi 30% dari data yang diurutkan dalam jendela. Dalam hal ini, titik data yang nilainya lebih besar dari nilai lowerBound tidak dideteksi untuk anomali.

Catatan

Panjang jendela ditentukan oleh parameter lenHistoryWindow.

Jika nilai titik data berada dalam rentang [lowerBound, upperBound], algoritma menentukan bahwa titik data tersebut normal. Jika nilai titik data tidak berada dalam rentang tersebut, algoritma menghitung nilai anomalyScore untuk titik data tersebut. Jika anomalyScore titik data tersebut lebih besar dari nilai dalam kolom threshold, titik data tersebut ditentukan abnormal.

mean

DOUBLE

Semua nilai tipe DOUBLE

Nilai rata-rata dari titik data dalam jendela.

median

DOUBLE

Semua nilai tipe DOUBLE

Median dari titik data dalam jendela.

std

DOUBLE

Semua nilai tipe DOUBLE

Standar deviasi dari titik data dalam jendela.

latestTimestamp

LONG

Bilangan bulat positif

Timestamp dari titik data terbaru dalam jendela.

warmup

BOOLEAN

  • TRUE

  • FALSE

  • TRUE: Algoritma sedang diinisialisasi dan tidak mendeteksi anomali.

  • FALSE: Algoritma telah diinisialisasi.

ttest

anomaly

BOOLEAN

  • TRUE

  • FALSE

  • TRUE: Titik data saat ini abnormal.

  • FALSE: Titik data saat ini normal.

anomalyLevel

STRING

  • NORMAL

  • UNKNOW

  • NORMAL: Tidak ada anomali yang terdeteksi untuk titik data saat ini.

  • UNKNOW: Anomali terdeteksi untuk titik data saat ini dan tidak diklasifikasikan.

detectedDirection

STRING

  • UP

  • DOWN

  • NONE

  • UP: Nilai titik data saat ini lebih besar dari nilai statistik dalam jendela.

  • DOWN: Nilai titik data saat ini lebih kecil dari nilai statistik dalam jendela.

  • NONE: Titik data saat ini normal dan nilai dalam kolom anomali adalah FALSE.

pValue

DOUBLE

(0, 1)

Rasio yang menunjukkan seberapa jauh nilai titik data saat ini menyimpang dari nilai statistik dalam jendela. Nilai yang lebih besar menunjukkan bahwa nilai titik data saat ini menyimpang lebih signifikan dari nilai statistik.

threshold

DOUBLE

(0, 1)

Ambang batas berdasarkan mana algoritma menentukan apakah titik data saat ini abnormal.

  • Jika nilai dalam kolom pValue lebih kecil dari nilai dalam kolom threshold, titik data saat ini abnormal.

  • Jika nilai pValue lebih besar dari nilai dalam kolom threshold, titik data saat ini normal.

trendScore

DOUBLE

Semua nilai tipe DOUBLE

Tingkat perubahan tren dari titik data. Semakin besar nilai absolutnya, semakin jelas perubahan tren.

  • Jika nilai dalam kolom trendScore lebih besar dari nol, tren titik data adalah naik.

  • Jika nilai dalam kolom trendScore lebih kecil dari nol, tren titik data adalah turun.

mean

DOUBLE

Semua nilai tipe DOUBLE

Nilai rata-rata dari titik data dalam jendela. Panjang jendela ditentukan oleh parameter lenHistoryWindow.

std

DOUBLE

Semua nilai tipe DOUBLE

Standar deviasi dari titik data dalam jendela.

latestTimestamp

LONG

Bilangan bulat positif

Timestamp dari titik data terbaru dalam jendela.

warmup

BOOLEAN

  • TRUE

  • FALSE

  • TRUE: Algoritma sedang diinisialisasi dan tidak mendeteksi anomali.

  • FALSE: Algoritma telah diinisialisasi.

nsigma

anomaly

BOOLEAN

  • TRUE

  • FALSE

  • TRUE: Titik data saat ini abnormal.

  • FALSE: Titik data saat ini normal.

anomalyLevel

STRING

  • NORMAL

  • UNKNOW

  • NORMAL: Tidak ada anomali yang terdeteksi untuk titik data saat ini.

  • UNKNOW: Anomali terdeteksi untuk titik data saat ini dan tidak diklasifikasikan.

detectedDirection

STRING

  • UP

  • DOWN

  • NONE

  • UP: Nilai titik data saat ini lebih besar dari nilai statistik dalam jendela.

  • DOWN: Nilai titik data saat ini lebih kecil dari nilai statistik dalam jendela.

  • NONE: Titik data saat ini normal dan nilai dalam kolom anomali adalah FALSE.

anomalyScore

DOUBLE

[0, Double.MAX_VALUE]

Skor anomali yang terdeteksi. Nilai yang lebih besar menunjukkan bahwa anomali titik data saat ini lebih jelas.

threshold

DOUBLE

[0, Double.MAX_VALUE]

Ambang batas penilaian, yang digunakan untuk menentukan apakah titik data saat ini abnormal.

Jika nilai dalam kolom anomalyScore lebih besar dari nilai dalam kolom threshold, titik data saat ini abnormal. Jika nilai dalam kolom anomalyScore lebih kecil dari nilai dalam kolom threshold, titik data saat ini normal.

mean

DOUBLE

Semua nilai tipe DOUBLE

Nilai rata-rata dari titik data dalam jendela.

std

DOUBLE

Semua nilai tipe DOUBLE

Standar deviasi dari titik data dalam jendela.

latestTimestamp

LONG

Bilangan bulat positif

Timestamp dari titik data terbaru dalam jendela.

warmup

BOOLEAN

  • TRUE

  • FALSE

  • TRUE: Algoritma sedang diinisialisasi dan tidak mendeteksi anomali.

  • FALSE: Algoritma telah diinisialisasi.

istl-esd

anomaly

BOOLEAN

  • TRUE

  • FALSE

  • TRUE: Titik data saat ini abnormal.

  • FALSE: Titik data saat ini normal.

anomalyLevel

STRING

  • NORMAL

  • UNKNOW

  • NORMAL: Tidak ada anomali yang terdeteksi untuk titik data saat ini.

  • UNKNOW: Anomali terdeteksi untuk titik data saat ini dan tidak diklasifikasikan.

residual

DOUBLE

Semua nilai tipe DOUBLE

Nilai residu dari data asli setelah komponen periodik dan komponen tren dihapus.

Dalam algoritma ISTL, titik data diuraikan menjadi tiga komponen dalam format berikut: residual+trend+season.

Jika algoritma sedang diinisialisasi (nilai dalam kolom warmup adalah TRUE), hanya nilai default 0 yang dikembalikan dalam kolom ini.

trend

DOUBLE

Semua nilai tipe DOUBLE

Komponen tren dalam data asli.

Jika algoritma sedang diinisialisasi (nilai dalam kolom warmup adalah TRUE), hanya nilai default 0 yang dikembalikan dalam kolom ini.

season

DOUBLE

Semua nilai tipe DOUBLE

Komponen periodik dalam data asli.

Jika algoritma sedang diinisialisasi (nilai dalam kolom warmup adalah TRUE), hanya nilai default 0 yang dikembalikan dalam kolom ini.

warmup

BOOLEAN

  • TRUE

  • FALSE

  • TRUE: Algoritma sedang diinisialisasi dan tidak mendeteksi anomali.

    Catatan

    Empat siklus titik data diperlukan untuk menginisialisasi algoritma. Selama inisialisasi, nilai yang dikembalikan dalam kolom residual, trend, dan season tidak valid. Nilai default 0 dikembalikan dalam kolom-kolom ini.

  • FALSE: Algoritma telah diinisialisasi.

Kolom tambahan lainnya (sama dengan kolom tambahan yang dikembalikan untuk algoritma esd)

Sama dengan tipe data kolom yang dikembalikan untuk algoritma esd.

Sama dengan nilai valid kolom yang dikembalikan untuk algoritma esd.

Jika Anda menentukan esd.verbose=true saat memanggil fungsi deteksi anomali, mode verbose esd diaktifkan.

Dalam hal ini, semua kolom untuk algoritma esd dan ttest (tidak termasuk kolom anomaly, warmup, dan anomalyLevel) dalam mode verbose dikembalikan.

istl-nsigma

anomaly

BOOLEAN

  • TRUE

  • FALSE

  • TRUE: Titik data saat ini abnormal.

  • FALSE: Titik data saat ini normal.

anomalyLevel

STRING

  • NORMAL

  • UNKNOW

  • NORMAL: Tidak ada anomali yang terdeteksi untuk titik data saat ini.

  • UNKNOW: Anomali terdeteksi untuk titik data saat ini dan tidak diklasifikasikan.

trend

DOUBLE

Semua nilai tipe DOUBLE

Komponen tren dalam data asli.

Jika algoritma sedang diinisialisasi (nilai dalam kolom warmup adalah TRUE), hanya nilai default 0 yang dikembalikan dalam kolom ini.

season

DOUBLE

Semua nilai tipe DOUBLE

Komponen periodik dalam data asli.

Jika algoritma sedang diinisialisasi (nilai dalam kolom warmup adalah TRUE), hanya nilai default 0 yang dikembalikan dalam kolom ini.

residu

DOUBLE

Semua nilai tipe DOUBLE

Nilai residu dari data asli setelah komponen periodik dan komponen tren dihapus.

Jika algoritma sedang diinisialisasi (nilai di kolom warmup adalah TRUE), hanya nilai default 0 yang dikembalikan di kolom ini.

pemanasan

BOOLEAN

  • BENAR

  • SALAH

  • BENAR: Algoritma sedang diinisialisasi dan tidak mendeteksi anomali.

    Catatan

    Empat siklus titik data diperlukan untuk menginisialisasi algoritma. Selama inisialisasi, nilai yang dikembalikan di kolom residu, tren, dan musim tidak valid. Nilai default 0 dikembalikan di kolom-kolom ini.

  • SALAH: Algoritma telah diinisialisasi.

Kolom tambahan lainnya (sama dengan kolom tambahan yang dikembalikan untuk algoritma nsigma)

Sama dengan tipe data dari kolom yang dikembalikan untuk algoritma nsigma.

Sama dengan nilai valid dari kolom yang dikembalikan untuk algoritma nsigma

Jika Anda menentukan nsigma.verbose=true saat memanggil fungsi deteksi anomali, mode verbose nsigma diaktifkan.

Parameter Pelatihan

Parameter pelatihan menentukan model yang digunakan untuk mendeteksi anomali. Nilai parameter ini akan dihapus setelah LindormTSDB di-restart, sehingga perlu dikonfigurasi ulang untuk melatih model. Model dilatih secara real-time untuk beradaptasi dengan karakteristik data deret waktu.

Catatan

Perhatikan hal berikut saat mengonfigurasi parameter pelatihan:

  • Nama parameter tidak peka terhadap huruf besar atau kecil.

  • Nilai parameter dapat berupa digit atau string, dan tidak boleh NULL.

  • Nilai parameter harus berada dalam rentang tertentu.

Algoritma

Parameter

Tipe

Nilai valid

Deskripsi

esd

compression

INTEGER

Bilangan bulat positif. Nilai valid: (10,1000). Nilai default: 100.

Kompleksitas spasial dari struktur data dalam algoritma. Nilai parameter yang lebih besar menunjukkan bahwa algoritma menggunakan lebih banyak memori selama deteksi dan mengembalikan hasil yang lebih akurat.

lenHistoryWindow

INTEGER

Nilai valid: bilangan bulat positif yang sama dengan atau lebih besar dari 20. Nilai default: null.

Panjang jendela waktu referensi. Jika Anda menentukan jendela waktu referensi yang pendek, hanya titik data terbaru dalam jendela waktu yang digunakan sebagai referensi selama deteksi. Jika Anda mengatur parameter ini ke null, semua titik data yang dimasukkan setelah deteksi pertama digunakan sebagai referensi.

nsigma

lenHistoryWindow

INTEGER

Nilai valid: bilangan bulat positif yang sama dengan atau lebih besar dari 20. Nilai default: null.

Panjang jendela waktu referensi. Jika Anda menentukan jendela waktu referensi yang pendek, hanya titik data terbaru dalam jendela waktu yang digunakan sebagai referensi selama deteksi. Jika Anda mengatur parameter ini ke null, semua titik data yang dimasukkan setelah deteksi pertama digunakan sebagai referensi.

ttest

lenDetectWindow

INTEGER

Bilangan bulat positif. Nilai default: 10.

Panjang jendela waktu terbaru di mana Anda ingin mendeteksi anomali.

lenHistoryWindow

INTEGER

Nilai valid: bilangan bulat positif yang sama dengan atau lebih besar dari 20. Nilai default: 100.

Panjang jendela waktu referensi. Jika Anda menentukan jendela waktu referensi yang pendek, hanya titik data terbaru dalam jendela waktu yang digunakan sebagai referensi selama deteksi. Jika Anda mengatur parameter ini ke null, semua titik data yang dimasukkan setelah deteksi pertama digunakan sebagai referensi.

Catatan

Nilai parameter ini harus lebih besar dari nilai lenDetectWindow.

istl-esd

frequency

VARCHAR

String yang terdiri dari digit dan unit waktu. Contoh: 5M, 24H, dan 1D.

Unit waktu yang valid:

  • n/ns: nanodetik.

  • u/us: mikrodetik.

  • m/ms: milidetik.

  • s/S: detik.

  • M/min: menit.

  • H/h: jam.

  • D/d: hari.

Frekuensi pengumpulan data deret waktu. Misalnya, jika satu titik data deret waktu dikumpulkan per jam, atur parameter ini ke 1H.

Penting
  • Jika parameter ini tidak ditentukan, algoritma secara otomatis menghitung frekuensi pengumpulan data deret waktu. Namun, jika banyak nilai hilang dalam data deret waktu, frekuensi yang dihitung mungkin tidak akurat.

  • Jika Anda menentukan parameter frequency, nilai parameter ini harus sama dengan nilai parameter INTERVAL yang ditentukan dalam pernyataan SAMPLE BY INTERVAL.

periods

VARCHAR

String yang terdiri dari digit dan unit waktu. Contoh: 5M, 24H, dan 1D.

Unit waktu yang valid:

  • n/ns: nanodetik.

  • u/us: mikrodetik.

  • m/ms: milidetik.

  • s/S: detik.

  • M/min: menit.

  • H/h: jam.

  • D/d: hari.

Total panjang periode data periodik. Anda dapat menggunakan indeks untuk menentukan beberapa panjang periode. Contoh: periods[0]=1440; periods[1]=1880.

Catatan

Jika parameter ini tidak ditentukan, algoritma secara otomatis menghitung periode.

esd.*

N/A

Parameter pelatihan yang diperlukan untuk mendefinisikan algoritma esd. Parameter ini sama dengan parameter pelatihan yang dijelaskan di bagian esd tabel ini. Anda dapat menambahkan awalan esd. ke parameter pelatihan algoritma esd untuk mengonfigurasi parameter ini. Contoh: esd.lenHistoryWindow=10.

istl-nsigma

frequency

VARCHAR

String yang terdiri dari digit dan unit waktu. Contoh: 5M, 24H, dan 1D.

Unit waktu yang valid:

  • n/ns: nanodetik.

  • u/us: mikrodetik.

  • m/ms: milidetik.

  • s/S: detik.

  • M/min: menit.

  • H/h: jam.

  • D/d: hari.

Frekuensi pengumpulan data deret waktu. Misalnya, jika satu titik data deret waktu dikumpulkan per jam, atur parameter ini ke 1H.

Penting
  • Jika parameter ini tidak ditentukan, algoritma secara otomatis menghitung frekuensi pengumpulan data deret waktu. Namun, jika banyak nilai hilang dalam data deret waktu, frekuensi yang dihitung mungkin tidak akurat.

  • Jika Anda menentukan parameter frequency, nilai parameter ini harus sama dengan nilai parameter INTERVAL yang ditentukan dalam pernyataan SAMPLE BY INTERVAL.

periods

VARCHAR

String yang terdiri dari digit dan unit waktu. Contoh: 5M, 24H, dan 1D.

Unit waktu yang valid:

  • n/ns: nanodetik.

  • u/us: mikrodetik.

  • m/ms: milidetik.

  • s/S: detik.

  • M/min: menit.

  • H/h: jam.

  • D/d: hari.

Total panjang periode data periodik. Anda dapat menggunakan indeks untuk menentukan beberapa panjang periode. Contoh: periods[0]=1440; periods[1]=1880.

Catatan

Jika parameter ini tidak ditentukan, algoritma secara otomatis menghitung periode.

nsigma.*

N/A

Parameter pelatihan yang diperlukan untuk mendefinisikan algoritma nsigma. Parameter ini sama dengan parameter pelatihan yang dijelaskan di bagian nsigma tabel ini. Anda dapat menambahkan awalan nsigma. ke parameter pelatihan algoritma nsigma untuk mengonfigurasi parameter ini. Contoh: nsigma.lenHistoryWindow=10.

Parameter Inferensi

Parameter inferensi hanya berlaku selama deteksi anomali dan tidak peka terhadap huruf besar atau kecil.

Algoritma

Parameter

Tipe

Nilai valid

Deskripsi

esd

alpha

DOUBLE

Nilai default: 0,1. Nilai valid: (0,1).

Tingkat sensitivitas deteksi anomali. Nilai parameter yang lebih besar menunjukkan bahwa algoritma lebih sensitif terhadap anomali dan melaporkan lebih banyak anomali.

direction

VARCHAR

Nilai default: Up.

Jenis anomali yang ingin Anda deteksi.

  • Up: Hanya peningkatan abnormal pada data deret waktu yang dideteksi sebagai anomali.

  • Down: Hanya penurunan abnormal pada data deret waktu yang dideteksi sebagai anomali.

  • Both: Peningkatan dan penurunan abnormal pada data deret waktu keduanya dideteksi sebagai anomali.

maxAnomalyRatio

DOUBLE

Nilai default: 0,3. Nilai valid: (0,1]. Jika Anda mengatur parameter ini ke 1, tidak ada anomali yang akan dilaporkan.

Rasio maksimum berdasarkan mana anomali dideteksi. Sebagai contoh, jika Anda mengatur maxAnomalyRatio menjadi 0,3 dan direction menjadi Up, titik data yang nilainya kurang dari persentil ke-70 tidak akan dideteksi sebagai anomali.

  • Jika Anda mengatur direction menjadi Up, Anda dapat mengonfigurasi parameter ini untuk mencegah titik data dengan nilai lebih kecil dideteksi sebagai anomali.

  • Jika Anda mengatur direction menjadi Down, Anda dapat mengonfigurasi parameter ini untuk mencegah titik data dengan nilai lebih besar dideteksi sebagai anomali.

warmupCount

INTEGER

Bilangan bulat positif. Nilai default: 20.

Jumlah minimum titik data yang diperlukan agar algoritma mulai melaporkan anomali. Sebagai contoh, jika Anda mengatur parameter ini ke 20, algoritma tidak akan melaporkan anomali ketika jumlah titik data yang perlu dideteksi kurang dari 20.

nsigma

n

DOUBLE

Bilangan floating-point bukan nol. Nilai default: 3,0.

  • Jika Anda mengatur n menjadi bilangan positif, algoritma melaporkan anomali ketika selisih antara nilai saat ini dan nilai rata-rata lebih besar daripada hasil kali n dan deviasi standar.

  • Jika Anda mengatur n menjadi bilangan negatif, algoritma melaporkan anomali ketika selisih antara nilai rata-rata dan nilai saat ini lebih besar daripada hasil kali n dan deviasi standar.

warmupCount

INTEGER

Bilangan bulat positif. Nilai default: 20.

Jumlah minimum titik data yang diperlukan agar algoritma mulai melaporkan anomali. Sebagai contoh, jika Anda mengatur parameter ini ke 20, algoritma tidak akan melaporkan anomali ketika jumlah titik data yang perlu dideteksi kurang dari 20.

ttest

alpha

DOUBLE

Nilai default: 0,05. Nilai valid: (0,1).

Tingkat sensitivitas deteksi anomali. Nilai parameter yang lebih besar menunjukkan bahwa algoritma lebih sensitif terhadap anomali dan melaporkan lebih banyak anomali.

direction

VARCHAR

Nilai default: Up.

Jenis anomali yang ingin Anda deteksi.

  • Up: Hanya peningkatan abnormal pada data deret waktu yang dideteksi sebagai anomali.

  • Down: Hanya penurunan abnormal pada data deret waktu yang dideteksi sebagai anomali.

  • Both: Peningkatan dan penurunan abnormal pada data deret waktu keduanya dideteksi sebagai anomali.

istl-esd

esd.*

N/A

Parameter inferensi yang diperlukan untuk mendefinisikan algoritma esd. Parameter ini sama dengan parameter inferensi yang dijelaskan dalam bagian esd tabel ini. Anda dapat menambahkan awalan esd. ke parameter inferensi algoritma esd untuk mengonfigurasi parameter ini. Contoh: esd.direction=Both.

istl-nsigma

nsigma.*

N/A

Mendefinisikan parameter inferensi yang diperlukan oleh algoritma nsigma. Untuk informasi lebih lanjut, lihat Parameter inferensi algoritma nsigma. Anda dapat menambahkan awalan nsigma. ke parameter inferensi algoritma nsigma untuk mengonfigurasi parameter ini. Contoh: nsigma.n=5.

Contoh

  • Contoh 1: Gunakan algoritma esd untuk mendeteksi anomali dalam data suhu pada rentang waktu tertentu di tabel deret waktu bernama sensor.

    SELECT device_id, region, time, anomaly_detect(temperature, 'esd') AS detect_result FROM sensor WHERE time >= '2022-01-01 00:00:00' and time < '2022-01-01 00:01:00' SAMPLE BY 0;

    Hasil berikut dikembalikan:

    +-----------+----------+---------------------------+---------------+
    | device_id |  region  |           time            | detect_result |
    +-----------+----------+---------------------------+---------------+
    | F07A1260  | north-cn | 2022-01-01T00:00:00+08:00 | true          |
    | F07A1260  | north-cn | 2022-01-01T00:00:01+08:00 | false         |
    | F07A1260  | north-cn | 2022-01-01T00:00:02+08:00 | true          |
    | F07A1261  | south-cn | 2022-01-01T00:00:00+08:00 | false         |
    | F07A1261  | south-cn | 2022-01-01T00:00:01+08:00 | false         |
    | F07A1261  | south-cn | 2022-01-01T00:00:02+08:00 | false         |
    | F07A1261  | south-cn | 2022-01-01T00:00:03+08:00 | false         |
    +-----------+----------+---------------------------+---------------+
  • Contoh 2: Gunakan algoritma esd untuk mendeteksi anomali dalam data suhu perangkat F07A1260 pada rentang waktu tertentu di tabel sensor.

    SELECT device_id, region, time, anomaly_detect(temperature, 'esd') AS detect_result FROM sensor WHERE device_id in ('F07A1260') and time >= '2022-01-01 00:00:00' and time < '2022-01-01 00:01:00' SAMPLE BY 0;

    Hasil berikut dikembalikan:

    +-----------+----------+---------------------------+---------------+
    | device_id |  region  |           time            | detect_result |
    +-----------+----------+---------------------------+---------------+
    | F07A1260  | north-cn | 2022-01-01T00:00:00+08:00 | true          |
    | F07A1260  | north-cn | 2022-01-01T00:00:01+08:00 | false         |
    | F07A1260  | north-cn | 2022-01-01T00:00:02+08:00 | true          |
    +-----------+----------+---------------------------+---------------+
  • Contoh 3: Gunakan algoritma esd dengan konfigurasi parameter untuk mendeteksi anomali dalam data suhu perangkat F07A1260 pada rentang waktu tertentu di tabel sensor.

    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-01 00:00:00' and time < '2022-01-01 00:01:00' SAMPLE BY 0;

    Hasil berikut dikembalikan:

    +-----------+----------+---------------------------+---------------+
    | device_id |  region  |           time            | detect_result |
    +-----------+----------+---------------------------+---------------+
    | F07A1260  | north-cn | 2022-01-01T00:00:00+08:00 | false         |
    | F07A1260  | north-cn | 2022-01-01T00:00:01+08:00 | false         |
    | F07A1260  | north-cn | 2022-01-01T00:00:02+08:00 | true          |
    +-----------+----------+---------------------------+---------------+
  • Contoh 4: Gunakan operator downsampling bertingkat MAX dalam pernyataan dan tentukan interval downsampling sebagai 1 menit.

    SELECT time, anomaly_detect(max(temperature), 'esd') AS ad_result, max(temperature) AS rawVal FROM sensor SAMPLE BY 1m;

    Hasil berikut dikembalikan:

    +---------------------------+-----------+-------------+
    |           time            | ad_result |   rawVal    |
    +---------------------------+-----------+-------------+
    | 2022-04-12T06:00:00+08:00 | null      | 923091.3175 |
    | 2022-04-11T08:00:00+08:00 | null      | 8035700     |
    | 2022-04-11T09:00:00+08:00 | null      | 8035690.25  |
    | 2022-04-11T10:00:00+08:00 | null      | 3306277.545 |
    | 2022-04-11T11:00:00+08:00 | null      | 5921167.787 |
    | 2022-04-11T12:00:00+08:00 | null      | 833541.304  |
    +---------------------------+-----------+-------------+
  • Contoh 5: Gunakan operator non-downsampling bertingkat LATEST dalam pernyataan dan tentukan interval downsampling sebagai 0.

    SELECT time, anomaly_detect(latest(temperature), 'esd') AS ad_result, latest(temperature) AS latestVal FROM sensor SAMPLE BY 0;

    Hasil berikut dikembalikan:

    +---------------------------+-----------+-------------+
    |           time            | ad_result |  latestVal  |
    +---------------------------+-----------+-------------+
    | 2022-04-12T06:00:00+08:00 | false     | 923091.3175 |
    | 2022-04-13T07:00:00+08:00 | false     | 8037506.75  |
    | 2022-04-13T07:00:00+08:00 | false     | 50490.2     |
    +---------------------------+-----------+-------------+