Topik ini menjelaskan cara menggunakan fungsi TUMBLE di Realtime Compute for Apache Flink.
Deskripsi
Fungsi TUMBLE mengelompokkan setiap elemen ke dalam jendela tumbling dengan ukuran tertentu. Jendela tumbling biasanya memiliki ukuran tetap dan tidak tumpang tindih. Sebagai contoh, jika didefinisikan jendela tumbling selama 5 menit, aliran data tak terbatas akan dibagi menjadi interval waktu seperti [0:00, 0:05), [0:05, 0:10), dan [0:10, 0:15).
Sintaksis
Anda dapat menggunakan fungsi TUMBLE dalam klausa GROUP BY untuk mendefinisikan jendela tumbling.
TUMBLE(<time-attr>, <size-interval>)
<size-interval>: INTERVAL 'string' timeUnitParameter <time-attr> harus berupa atribut waktu yang valid dalam aliran waktu. Parameter ini menentukan apakah waktu tersebut adalah waktu pemrosesan atau waktu peristiwa. Untuk informasi lebih lanjut tentang cara mendefinisikan atribut waktu, lihat Ikhtisar dan Atribut Waktu.
Fungsi pengenal jendela
Fungsi pengenal jendela digunakan untuk menentukan waktu mulai, waktu akhir, atau atribut waktu dari sebuah jendela. Atribut waktu digunakan untuk menggabungkan jendela tingkat lebih rendah.
Fungsi | Jenis nilai kembali | Deskripsi |
| TIMESTAMP | Mengembalikan waktu mulai jendela, termasuk nilai batas. Sebagai contoh, jika rentang waktu jendela adalah |
| TIMESTAMP | Mengembalikan waktu akhir jendela, termasuk nilai batas. Sebagai contoh, jika rentang waktu jendela adalah |
| TIMESTAMP(rowtime-attr) | Mengembalikan waktu akhir jendela, tidak termasuk nilai batas. Sebagai contoh, jika rentang waktu jendela adalah |
| TIMESTAMP(rowtime-attr) | Mengembalikan waktu akhir jendela, tidak termasuk nilai batas. Sebagai contoh, jika rentang waktu jendela adalah |
Contoh 1: Menghitung jumlah klik per pengguna per menit untuk situs web tertentu berdasarkan waktu peristiwa
Data Uji
username (VARCHAR)
click_url (VARCHAR)
eventtime (VARCHAR)
Jark
http://taobao.com/xxx2024-08-10 10:00:00.0Jark
http://taobao.com/xxx2024-08-10 10:00:10.0Jark
http://taobao.com/xxx2024-08-10 10:00:49.0Jark
http://taobao.com/xxx2024-08-10 10:01:05.0Jark
http://taobao.com/xxx2024-08-10 10:01:58.0Timo
http://taobao.com/xxx2024-08-10 10:02:10.0Timo
http://taobao.com/xxx2024-08-10 10:03:10.0Pernyataan Uji
CREATE TEMPORARY TABLE user_clicks( username varchar, click_url varchar, eventtime varchar, ts AS TO_TIMESTAMP(eventtime), WATERMARK FOR ts AS ts - INTERVAL '2' SECOND -- Tentukan watermark untuk rowtime. ) WITH ( 'connector'='sls', ... ); CREATE TEMPORARY TABLE tumble_output( window_start TIMESTAMP, window_end TIMESTAMP, username VARCHAR, clicks BIGINT ) WITH ( 'connector'='datahub' ... ); INSERT INTO tumble_output SELECT TUMBLE_START(ts, INTERVAL '1' MINUTE) as window_start, TUMBLE_END(ts, INTERVAL '1' MINUTE) as window_end, username, COUNT(click_url) FROM user_clicks GROUP BY TUMBLE(ts, INTERVAL '1' MINUTE),username;Hasil Uji
window_start (TIMESTAMP)
window_end (TIMESTAMP)
username (VARCHAR)
clicks (BIGINT)
2024-08-10 10:00:00.02024-08-10 10:01:00.0Jark
3
2024-08-10 10:01:00.02024-08-10 10:02:00.0Jark
2
2024-08-10 10:02:00.02024-08-10 10:03:00.0Timo
1
Contoh 2: Menghitung jumlah klik per pengguna per menit untuk situs web tertentu berdasarkan waktu pemrosesan
Data Uji
username (VARCHAR)
click_url (VARCHAR)
Jark
http://taobao.com/xxxJark
http://taobao.com/xxxJark
http://taobao.com/xxxJark
http://taobao.com/xxxJark
http://taobao.com/xxxTimo
http://taobao.com/xxxPernyataan Uji
CREATE TEMPORARY TABLE window_test ( username VARCHAR, click_url VARCHAR, ts as PROCTIME() ) WITH ( 'connector'='sls', ... ); CREATE TEMPORARY TABLE tumble_output( window_start TIMESTAMP, window_end TIMESTAMP, username VARCHAR, clicks BIGINT ) WITH ( 'connector'='datahub' -- Log Service memungkinkan Anda mengekspor hanya pernyataan DDL bertipe VARCHAR. Oleh karena itu, DataHub digunakan untuk penyimpanan. ... ); INSERT INTO tumble_output SELECT TUMBLE_START(ts, INTERVAL '1' MINUTE), TUMBLE_END(ts, INTERVAL '1' MINUTE), username, COUNT(click_url) FROM window_test GROUP BY TUMBLE(ts, INTERVAL '1' MINUTE), username;Hasil Uji
window_start (TIMESTAMP)
window_end (TIMESTAMP)
username (VARCHAR)
clicks (BIGINT)
2024-08-10 14:43:00.0002024-08-10 14:44:00.000Jark
5
2024-08-10 14:43:00.0002024-08-10 14:44:00.000Timo
1