Bagikan melalui


Pengantar fungsi jendela Azure Stream Analytics

Dalam skenario streaming waktu, pola umum adalah melakukan operasi pada data yang terkandung dalam jendela temporal. Stream Analytics memiliki dukungan asli untuk fungsi windowing, sehingga Anda dapat membuat pekerjaan pemrosesan aliran yang kompleks dengan upaya minimal.

Ada lima jenis jendela temporal:

Gunakan fungsi jendela dalam klausa GROUP BY dari sintaks kueri dalam pekerjaan Azure Stream Analytics Anda. Anda juga dapat menggabungkan peristiwa melalui beberapa jendela dengan menggunakan fungsi Windows().

Semua operasi windowing menghasilkan output di akhir jendela. Saat memulai tugas analitik aliran, Anda dapat menentukan waktu mulai keluaran Tugas. Sistem secara otomatis mengambil peristiwa sebelumnya di aliran masuk untuk menghasilkan jendela pertama pada waktu yang ditentukan. Misalnya, ketika Anda mulai dengan opsi Sekarang , opsi ini mulai segera memancarkan data. Output dari jendela adalah kejadian tunggal berdasarkan fungsi agregat yang digunakan. Peristiwa output memiliki stempel waktu akhir jendela dan semua fungsi jendela didefinisikan dengan panjang tetap.

Diagram yang menunjukkan konsep fungsi jendela Azure Stream Analytics.

Jendela bergulir

Gunakan fungsi jendela Tumbling untuk mensegmentasi aliran data ke dalam segmen waktu yang berbeda, dan melakukan fungsi terhadapnya.

Pembedaan utama dari jendela tumbling adalah:

  • Mereka tidak mengulangi.
  • Mereka tidak tumpang tindih.
  • Peristiwa tidak dapat dimasukkan ke dalam lebih dari satu jendela terguling.

Diagram yang memperlihatkan contoh jendela tumbling Azure Stream Analytics.

Berikut adalah data input untuk contoh:

Stempel DibuatPada 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 Jumlah
2021-10-26T10:15:10 Waktu Standar Pasifik 5
2021-10-26T10:15:20 PST 2
2021-10-26T10:15:30 PST 4

Jendela lompat

Fungsi jendela melompat maju dalam waktu pada periode tetap. Mungkin mudah untuk menganggapnya sebagai jendela tumbling yang dapat tumpang tindih dan dipancarkan lebih sering daripada ukuran jendela. Peristiwa dapat menjadi bagian dari lebih dari satu himpunan hasil jendela hopping. Untuk membuat jendela hopping sama dengan jendela tumbling, tentukan ukuran hop agar sama dengan ukuran jendela.

Diagram yang menunjukkan contoh jendela hopping.

Berikut data sampelnya:

Stempel DibuatPada Topik
1 2021-10-26T10:15:01 Siaran Langsung
5 2021-10-26T10:15:03 Siaran Langsung
4 2021-10-26T10:15:06 Siaran Langsung
... ... ...

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 Jumlah
2021-10-26T10:15:10 Siaran Langsung 5
2021-10-26T10:15:15 Siaran Langsung 3
2021-10-26T10:15:20 Siaran Langsung 2
2021-10-26T10:15:25 Siaran Langsung 4
2021-10-26T10:15:30 Siaran Langsung 4

Jendela geser

Jendela geser, tidak seperti jendela jatuh atau melompat, mengeluarkan peristiwa hanya pada titik waktu saat konten jendela benar-benar mengalami perubahan. Dengan kata lain, saat peristiwa masuk atau keluar dari jendela. Jadi, setiap jendela memiliki setidaknya satu peristiwa. Sama seperti jendela hopping, peristiwa dapat berada di lebih dari satu jendela geser.

Diagram yang memperlihatkan contoh jendela geser.

Berikut adalah contoh data input:

Stempel DibuatPada Topik
1 2021-10-26T10:15:10 Siaran Langsung
5 2021-10-26T10:15:12 Siaran Langsung
9 2021-10-26T10:15:15 Siaran Langsung
7 2021-10-26T10:15:15 Siaran Langsung
8 2021-10-26T10:15:27 Siaran Langsung

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

Keluaran:

WindowEndTime Topik Jumlah
2021-10-26T10:15:15 Siaran Langsung 4
2021-10-26T10:15:20 Siaran Langsung 3

Jendela sesi

Jendela sesi mengelompokkan peristiwa yang tiba pada waktu yang berdekatan. Mereka memfilter periode waktu di mana tidak ada data. Fungsi jendela sesi memiliki tiga parameter utama:

  • Jeda Waktu
  • Durasi maksimum
  • Kunci partisi (opsional).

Diagram yang memperlihatkan contoh jendela sesi Azure Stream Analytics.

Jendela sesi dimulai ketika peristiwa pertama terjadi. Jika peristiwa lain terjadi dalam batas waktu yang ditentukan dari peristiwa terakhir yang diserap, jendela akan meluas untuk menyertakan peristiwa baru. Jika tidak ada peristiwa yang terjadi dalam waktu habis, jendela akan ditutup saat waktu habis.

Jika peristiwa terus terjadi dalam batas waktu yang ditentukan, jendela sesi terus diperpanjang hingga durasi maksimum tercapai. Interval pemeriksaan durasi maksimum berukuran 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, dan sebagainya.

Saat Anda memberikan kunci partisi, fungsi mengelompokkan peristiwa berdasarkan kunci tersebut dan menerapkan jendela sesi ke setiap grup secara independen. Pemartisian ini berguna untuk kasus di mana Anda memerlukan jendela sesi yang berbeda untuk pengguna atau perangkat yang berbeda.

Berikut adalah contoh data input:

Stempel DibuatPada Topik
1 2021-10-26T10:15:01 Siaran Langsung
2 2021-10-26T10:15:04 Siaran Langsung
3 2021-10-26T10:15:13 Siaran Langsung
... ... ...

Berikut contoh kuerinya:

SELECT System.Timestamp() as WindowEndTime, Topic, COUNT(*) AS Count
FROM TwitterStream TIMESTAMP BY CreatedAt
GROUP BY Topic, SessionWindow(second,5,10)

Keluaran:

WindowEndTime Topik Jumlah
2021-10-26T10:15:09 Siaran Langsung 2
2021-10-26T10:15:24 Siaran Langsung 4
2021-10-26T10:15:31 Siaran Langsung 2
2021-10-26T10:15:39 Siaran Langsung 1

Jendela snapshot

Cuplikan peristiwa grup Windows yang memiliki tanda waktu yang sama. Tidak seperti jenis windowing lainnya, yang memerlukan fungsi jendela tertentu (seperti SessionWindow()), Anda dapat menerapkan jendela rekam jepret System.Timestamp() dengan menambahkan ke GROUP BY klausa.

Diagram yang menampilkan contoh jendela rekam jepret Steam Analytics.

Berikut adalah contoh data input:

Stempel DibuatPada Topik
1 2021-10-26T10:15:04 Siaran Langsung
2 2021-10-26T10:15:04 Siaran Langsung
3 2021-10-26T10:15:04 Siaran Langsung
... ... ...

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 Jumlah
2021-10-26T10:15:04 Siaran Langsung 4
2021-10-26T10:15:10 Siaran Langsung 2
2021-10-26T10:15:13 Siaran Langsung 1
2021-10-26T10:15:22 Siaran Langsung 2

Langkah selanjutnya

Lihat artikel berikut: