Bagikan melalui


series_fir()

Menerapkan filter Respons Impuls Terbatas (FIR) pada seri.

Fungsi tersebut mengambil ekspresi yang berisi array numerik dinamis sebagai input dan menerapkan filter Respons Impuls Terbatas. Dengan menentukan koefisien filter, fungsi ini dapat digunakan untuk menghitung rata-rata bergerak, penghalusan, deteksi perubahan, dan kasus penggunaan lainnya. Fungsi ini mengambil kolom yang berisi array dinamis dan array dinamis statis koefisien filter sebagai input, dan menerapkan filter pada kolom. Output yang dihasilkan adalah kolom array dinamis baru, yang berisi output yang difilter.

Sintaks

series_fir(filter seri, [, normalisasi[, tengah]])

Pelajari selengkapnya tentang konvensi sintaksis.

Parameter

Nama Tipe Wajib Deskripsi
series dynamic ✔️ Array nilai numerik.
filter dynamic ✔️ Array nilai numerik yang berisi koefisien filter.
normalize bool Menunjukkan apakah filter harus dinormalisasi. Yaitu, dibagi dengan jumlah koefisien. Jika filter berisi nilai negatif, maka normalisasi harus ditentukan sebagai false, jika tidak hasilnya akan berupa null. Jika tidak ditentukan, maka nilai default diasumsikan true , tergantung pada adanya nilai negatif dalam filter. Jika filter berisi setidaknya satu nilai negatif, maka normalisasi diasumsikan menjadi false.
pusat bool Menunjukkan apakah filter diterapkan secara simetris pada jendela waktu sebelum dan sesudah titik saat ini, atau pada jendela waktu dari titik saat ini mundur. Secara default, pusat adalah false, yang sesuai dengan skenario data streaming sehingga kita hanya dapat menerapkan filter pada titik saat ini dan yang lebih lama. Namun, untuk pemrosesan ad-hoc Anda dapat mengaturnya ke true, menjaganya tetap sinkron dengan rangkaian waktu. Lihat contoh di bawah. Parameter ini mengontrol penundaan grup filter.

Tip

Normalisasi adalah cara yang mudah untuk memastikan bahwa jumlah koefisien adalah 1. Saat dinormalisasi adalah true, filter tidak memperkuat atau meredakan seri. Misalnya, rata-rata bergerak empat bin dapat ditentukan oleh filter=[1,1,1,1] dan dinormalisasi=true, yang lebih sederhana daripada mengetik [0.25,0.25.0.25,25].

Mengembalikan

Kolom array dinamis baru yang berisi output yang difilter.

Contoh

  • Hitung rata-rata bergerak lima titik dengan mengatur filter=[1,1,1,1,1] dan normalisasi=true (default). Perhatikan efek center=false (default) vs. true:
range t from bin(now(), 1h) - 23h to bin(now(), 1h) step 1h
| summarize t=make_list(t)
| project
    id='TS',
    val=dynamic([0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 20, 40, 100, 40, 20, 10, 0, 0, 0, 0, 0, 0, 0, 0]),
    t
| extend
    5h_MovingAvg=series_fir(val, dynamic([1, 1, 1, 1, 1])),
    5h_MovingAvg_centered=series_fir(val, dynamic([1, 1, 1, 1, 1]), true, true)
| render timechart

Kueri ini mengembalikan:
5h_MovingAvg: Filter rata-rata bergerak lima titik. Lonjakan dihaluskan dan puncaknya bergeser sebesar (5-1)/ 2= 2 jam.
5h_MovingAvg_centered: Sama, tetapi dengan mengatur center=true, puncaknya tetap berada pada lokasi aslinya.

Seri cemara.

  • Untuk menghitung perbedaan antara titik dan yang sebelumnya, atur filter=[1,-1].
range t from bin(now(), 1h) - 11h to bin(now(), 1h) step 1h
| summarize t=make_list(t)
| project id='TS', t, value=dynamic([0, 0, 0, 0, 2, 2, 2, 2, 3, 3, 3, 3])
| extend diff=series_fir(value, dynamic([1, -1]), false, false)
| render timechart

Seri cemara 2.