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.

Diagram that shows the concept of Stream Analytics window functions.

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.

Diagram that shows an example Stream Analytics tumbling window.

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.

Diagram that shows an example of the hopping window.

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.

Diagram that shows an example of a sliding window.

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

Diagram that shows a sample Stream Analytics session window.

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.

Diagram that shows a sample Steam Analytics snapshot window.

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: