Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
✅ Azure Stream Analytics ✅ Fabric Eventstream
Peristiwa grup jendela sesi yang tiba pada waktu yang sama, memfilter periode waktu di mana tidak ada data. Fungsi jendela sesi memiliki tiga parameter utama: batas waktu, durasi maksimum, dan kunci partisi (opsional).
Diagram berikut mengilustrasikan aliran dengan serangkaian peristiwa dan bagaimana mereka dipetakan ke dalam jendela sesi 5 menit waktu habis, dan durasi maksimum 10 menit.
Jendela sesi dimulai ketika peristiwa pertama terjadi. Jika peristiwa lain terjadi dalam batas waktu yang ditentukan dari peristiwa terakhir yang diserap, maka jendela akan meluas untuk menyertakan peristiwa baru. Jika tidak ada peristiwa yang terjadi dalam batas waktu, maka jendela ditutup saat batas waktu habis.
Jika peristiwa terus terjadi dalam batas waktu yang ditentukan, jendela sesi akan terus diperpanjang hingga durasi maksimum tercapai. Harap dicatat bahwa interval pemeriksaan durasi maksimum diatur ke ukuran yang sama dengan durasi maksimum yang ditentukan. Misalnya, jika durasi maksimum adalah 10, maka pemeriksaan pada apakah jendela melebihi durasi maksimum akan terjadi pada t = 0, 10, 20, 30, dll. Itu berarti bahwa durasi aktual jendela sesi kemudian bisa hingga dua kali maxDuration.
Dengan demikian, secara matematis, jendela sesi kami berakhir jika kondisi berikut terpenuhi:
Saat kunci partisi disediakan, peristiwa dikelompokkan bersama oleh kunci partisi, dan jendela sesi diterapkan ke setiap grup secara independen. Ini berguna untuk kasus di mana Anda memerlukan jendela sesi yang berbeda untuk pengguna atau perangkat yang berbeda.
Sintaksis
{SESSIONWINDOW | SESSION} (timeunit, timeoutSize, maxDurationSize) [OVER (PARTITION BY partitionKey)]
{SESSIONWINDOW | SESSION} (Timeout(timeunit , timeoutSize), MaxDuration(timeunit, maxDurationSize)) [OVER (PARTITION BY partitionKey)]
Nota
Jendela Sesi dapat digunakan dengan dua cara di atas.
Argumen
timeunit Adalah unit waktu untuk windowsize. Tabel berikut mencantumkan semua argumen timeunit yang valid.
| Timeunit | Singkatan |
|---|---|
| hari | dd, d |
| jam | Hh |
| menit | mi, n |
| detik | ss, s |
| milidetik | Ms |
| mikrodetik | Mcs |
timeoutsize
Bilangan bulat besar yang menggambarkan ukuran kesenjangan jendela sesi. Data yang terjadi dalam ukuran kesenjangan dikelompokkan bersama-sama di jendela yang sama.
maxdurationsize
Jika ukuran jendela total melebihi maxDurationSize yang ditentukan pada titik pemeriksaan, maka jendela ditutup dan jendela baru dibuka pada titik yang sama. Saat ini, ukuran interval pemeriksaan sama dengan maxDurationSize.
partitionkey
Parameter opsional yang menentukan kunci yang dioperasikan oleh jendela sesi. Jika ditentukan, jendela hanya akan mengelompokkan peristiwa dari kunci yang sama.
Contoh
Misalkan Anda memiliki data json berikut:
[
// time: the timestamp when the user clicks on the link
// user_id: the id of the user
// url: the url the user clicked on
{
"time": "2017-01-26T00:00:00.0000000z",
"user_id": 0,
"url": "www.example.com/a.html"
},
{
"time": "2017-01-26T00:00:20.0000000z",
"user_id": 0,
"url": "www.example.com/b.html"
},
{
"time": "2017-01-26T00:00:55.0000000z",
"user_id": 1,
"url": "www.example.com/c.html"
},
// ...
]
Untuk mengukur berapa lama setiap sesi pengguna, Anda bisa menggunakan kueri berikut:
CREATE TABLE localinput(time DATETIME, user_id BIGINT, url NVARCHAR(MAX))
SELECT
user_id,
MIN(time) AS window_start,
System.Timestamp() AS window_end,
DATEDIFF(s, MIN(time), System.Timestamp()) AS duration_in_seconds
FROM localinput TIMESTAMP BY time
GROUP BY user_id, SessionWindow(minute, 2, 60) OVER (PARTITION BY user_id)
Kueri sebelumnya membuat jendela sesi dengan batas waktu 2 menit, durasi maksimum 60 menit dan kunci partisi user_id. Ini berarti jendela sesi independen akan dibuat untuk setiap user_id. Untuk setiap jendela, kueri ini akan menghasilkan output yang berisi user_id, waktu mulai jendela (window_start), akhir jendela (window_end) dan total durasi sesi pengguna (duration_in_seconds).