Pengenalan fungsi windowing Stream Analytics
Dalam skenario streaming waktu, melakukan operasi pada data yang ada di jendela temporal adalah pola yang umum. Stream Analytics memiliki dukungan asli untuk fungsi windowing, memungkinkan pengembang menulis pekerjaan pemrosesan streaming yang kompleks dengan sedikit upaya.
Ada lima jenis jendela temporal untuk dipilih:
Anda menggunakan fungsi jendela dalam klausa GROUP BY pada sintaks kueri di pekerjaan Stream Analytics Anda. Anda juga dapat mengagregasi peristiwa melalui beberapa jendela menggunakan fungsi Windows().
Semua operasi windowing akan mengeluarkan hasil di akhir jendela. Saat Anda memulai pekerjaan analisis aliran, Anda dapat menentukan waktu mulai output Pekerjaan, dan sistem secara otomatis mengambil peristiwa sebelumnya di aliran masuk untuk menghasilkan jendela pertama pada waktu yang ditentukan; misalnya, ketika Anda mulai dengan opsi Sekarang , sistem mulai segera memancarkan data. Output dari jendela akan menjadi satu peristiwa berdasarkan fungsi agregat yang digunakan. Peristiwa output memiliki stempel waktu akhir jendela dan semua fungsi jendela didefinisikan dengan panjang tetap.
Jendela tumbling
Gunakan fungsi jendela Tumbling untuk mensegmentasi aliran data ke dalam segmen waktu yang berbeda, dan melakukan fungsi terhadapnya.
Pembferensi utama jendela tumbling adalah:
- Mereka tidak mengulangi.
- Mereka tidak tumpang tindih.
- Peristiwa tidak boleh masuk ke dalam lebih dari satu jendela tumbling.
Berikut adalah data input untuk contoh:
Stamp | CreatedAt | TimeZone |
---|---|---|
1 | 2021-10-26T10:15:01 | PST |
5 | 2021-10-26T10:15:03 | PST |
4 | 2021-10-26T10:15:06 | PST |
... | ... | ... |
Berikut contoh kuerinya:
SELECT System.Timestamp() as WindowEndTime, TimeZone, COUNT(*) AS Count
FROM TwitterStream TIMESTAMP BY CreatedAt
GROUP BY TimeZone, TumblingWindow(second,10)
Berikut sampel outputnya:
WindowEndTime | TimeZone | Hitung |
---|---|---|
2021-10-26T10:15:10 | PST | 5 |
2021-10-26T10:15:20 | PST | 2 |
2021-10-26T10:15:30 | PST | 4 |
Jendela hopping
Fungsi jendela hopping diteruskan tepat waktu dengan periode tetap. Mungkin mudah untuk menganggapnya sebagai jendela tumbling yang dapat tumpang tindih dan dipancarkan lebih sering daripada ukuran jendela. Peristiwa dapat berada di beberapa kumpulan hasil jendela Hopping. Membuat jendela Hopping sama dengan jendela Tumbling, tentukan ukuran hop yang sama dengan ukuran jendela.
Berikut data sampelnya:
Stamp | CreatedAt | Topik |
---|---|---|
1 | 2021-10-26T10:15:01 | Streaming |
5 | 2021-10-26T10:15:03 | Streaming |
4 | 2021-10-26T10:15:06 | Streaming |
... | ... | ... |
Berikut contoh kuerinya:
SELECT System.Timestamp() as WindowEndTime, Topic, COUNT(*) AS Count
FROM TwitterStream TIMESTAMP BY CreatedAt
GROUP BY Topic, HoppingWindow(second,10,5)
Berikut sampel outputnya:
WindowEndTime | Topik | Hitung |
---|---|---|
2021-10-26T10:15:10 | Streaming | 5 |
2021-10-26T10:15:15 | Streaming | 3 |
2021-10-26T10:15:20 | Streaming | 2 |
2021-10-26T10:15:25 | Streaming | 4 |
2021-10-26T10:15:30 | Streaming | 4 |
Jendela sliding
Jendela geser , tidak seperti jendela jatuh atau melompat, peristiwa output hanya untuk titik waktu ketika konten jendela benar-benar berubah. Dengan kata lain, saat peristiwa memasuki atau keluar dari jendela. Jadi, setiap jendela memiliki setidaknya satu peristiwa. Sama seperti jendela hopping, peristiwa dapat berada di lebih dari satu jendela sliding.
Berikut adalah contoh data input:
Stamp | CreatedAt | Topik |
---|---|---|
1 | 2021-10-26T10:15:10 | Streaming |
5 | 2021-10-26T10:15:12 | Streaming |
9 | 2021-10-26T10:15:15 | Streaming |
7 | 2021-10-26T10:15:15 | Streaming |
8 | 2021-10-26T10:15:27 | Streaming |
Berikut contoh kuerinya:
SELECT System.Timestamp() as WindowEndTime, Topic, COUNT(*) AS Count
FROM TwitterStream TIMESTAMP BY CreatedAt
GROUP BY Topic, SlidingWindow(second,10)
HAVING COUNT(*) >=3
Output:
WindowEndTime | Topik | Hitung |
---|---|---|
2021-10-26T10:15:15 | Streaming | 4 |
2021-10-26T10:15:20 | Streaming | 3 |
Jendela sesi
Jendela sesi memfungsikan peristiwa grup yang tiba pada waktu yang sama, memfilter periode waktu di mana tidak ada data. Ini memiliki tiga parameter utama:
- Waktu habis
- Durasi maksimum
- Kunci partisi (opsional).
Jendela sesi dimulai saat peristiwa pertama terjadi. Jika peristiwa lain terjadi dalam batas waktu yang ditentukan dari peristiwa terakhir yang terpakai, maka jendela akan diperpanjang agar dapat menyertakan peristiwa baru. Jika tidak, jika tidak ada peristiwa yang terjadi dalam batas waktu, maka jendela akan ditutup pada saat waktu habis.
Jika peristiwa terus terjadi dalam batas waktu yang ditentukan, jendela sesi terus diperpanjang hingga durasi maksimum tercapai. Interval pemeriksaan durasi maksimum diatur ke ukuran yang sama dengan durasi maks yang ditentukan. Misalnya, jika durasi maksimum adalah 10, maka pemeriksaan pada apakah jendela melebihi durasi maksimum terjadi pada t = 0, 10, 20, 30, dll.
Saat kunci partisi disediakan, peristiwa digabungkan oleh kunci dan jendela sesi diterapkan pada setiap grup secara independen. Partisi ini berguna untuk kasus saat Anda memerlukan jendela sesi yang lain untuk pengguna atau perangkat yang berbeda.
Berikut adalah contoh data input:
Stamp | CreatedAt | Topik |
---|---|---|
1 | 2021-10-26T10:15:01 | Streaming |
2 | 2021-10-26T10:15:04 | Streaming |
3 | 2021-10-26T10:15:13 | Streaming |
... | ... | ... |
Berikut contoh kuerinya:
SELECT System.Timestamp() as WindowEndTime, Topic, COUNT(*) AS Count
FROM TwitterStream TIMESTAMP BY CreatedAt
GROUP BY Topic, SessionWindow(second,5,10)
Output:
WindowEndTime | Topik | Hitung |
---|---|---|
2021-10-26T10:15:09 | Streaming | 2 |
2021-10-26T10:15:24 | Streaming | 4 |
2021-10-26T10:15:31 | Streaming | 2 |
2021-10-26T10:15:39 | Streaming | 1 |
Jendela snapshot
Jendela snapshot mengelompokkan peristiwa yang memiliki tanda waktu yang sama. Tidak seperti jenis windowing lainnya, yang memerlukan fungsi jendela tertentu (seperti SessionWindow()), Anda dapat menerapkan jendela rekam jepret dengan menambahkan System.Timestamp() ke klausa GROUP BY.
Berikut adalah contoh data input:
Stamp | CreatedAt | Topik |
---|---|---|
1 | 2021-10-26T10:15:04 | Streaming |
2 | 2021-10-26T10:15:04 | Streaming |
3 | 2021-10-26T10:15:04 | Streaming |
... | ... | ... |
Berikut contoh kuerinya:
SELECT System.Timestamp() as WindowEndTime, Topic, COUNT(*) AS Count
FROM TwitterStream TIMESTAMP BY CreatedAt
GROUP BY Topic, System.Timestamp()
Berikut sampel outputnya:
WindowEndTime | Topik | Hitung |
---|---|---|
2021-10-26T10:15:04 | Streaming | 4 |
2021-10-26T10:15:10 | Streaming | 2 |
2021-10-26T10:15:13 | Streaming | 1 |
2021-10-26T10:15:22 | Streaming | 2 |
Langkah berikutnya
Lihat artikel berikut: