Simple Log Service menyediakan fungsi corong jendela yang dapat digunakan untuk menganalisis data seperti perilaku pengguna, lalu lintas aplikasi, dan konversi tujuan produk. Topik ini menjelaskan sintaksis fungsi corong jendela serta memberikan contoh penggunaannya.
Fungsi corong jendela mendukung sintaksis berikut:
Fungsi | Sintaksis | Deskripsi | Didukung di SQL | Didukung di SPL |
window_funnel(sliding_window, timestamp, event_id, ARRAY[event_list01, event_list02...]) | Mencari rantai peristiwa dalam jendela waktu geser dan menghitung jumlah maksimum peristiwa berturut-turut dalam rantai peristiwa. Jika nilai parameter event_id ditentukan dalam rantai peristiwa, Anda dapat menggunakan sintaksis ini. | √ | × | |
window_funnel(sliding_window, timestamp, ARRAY[event_id=event_list01, event_id=event_list02...]) | Mencari rantai peristiwa dalam jendela waktu geser dan menghitung jumlah maksimum peristiwa berturut-turut dalam rantai peristiwa. Jika nilai parameter event_id tidak ditentukan dalam rantai peristiwa dan Anda ingin menggunakan nilai kustom untuk parameter event_id, Anda dapat menggunakan sintaksis ini, yang lebih fleksibel. | √ | × |
Implementasi
Fungsi corong jendela digunakan untuk mencari rantai peristiwa dalam jendela waktu geser dan menghitung jumlah maksimum peristiwa berturut-turut dalam rantai tersebut. Fungsi ini memulai hitungan dari peristiwa pertama dalam rantai, memeriksa peristiwa secara berurutan, dan mengembalikan jumlah maksimum peristiwa berturut-turut.
Fungsi corong jendela bekerja berdasarkan algoritma berikut:
Fungsi memulai hitungan dari peristiwa pertama dalam rantai peristiwa dan menetapkan nilai awal penghitung peristiwa menjadi 1. Kemudian, jendela waktu geser dimulai.
Dalam jendela waktu geser, jika peristiwa dalam rantai terjadi secara berurutan, penghitung peristiwa bertambah.
Dalam jendela waktu geser, jika urutan peristiwa dalam rantai terganggu, penghitung peristiwa berhenti. Pencarian berhenti, dan pencarian baru dimulai. Jumlah maksimum peristiwa berturut-turut dihitung hingga akhir pencarian terakhir.
Pada akhir pencarian terakhir, jika ada beberapa nilai hitungan, fungsi mengembalikan nilai maksimum dari hitungan tersebut. Nilai maksimum ini menunjukkan jumlah maksimum peristiwa berturut-turut.
Sebagai contoh, Anda menentukan jendela waktu geser selama 100 detik dan pola berikut untuk rantai peristiwa: Peristiwa 1, Peristiwa 2, Peristiwa 3, Peristiwa 4, dan Peristiwa 5. Namun, peristiwa dalam rantai terjadi dalam urutan berikut: Peristiwa 1, Peristiwa 2, Peristiwa 4, Peristiwa 5, Peristiwa 1, dan Peristiwa 3. Dalam jendela waktu geser, jumlah maksimum peristiwa berturut-turut adalah 2, yang menunjukkan hubungan sekuensial antara Peristiwa 1 dan Peristiwa 2.
Fungsi harus memulai hitungan dari peristiwa pertama dalam rantai peristiwa. Sebagai contoh, jika fungsi memulai hitungan dalam urutan Peristiwa 2, Peristiwa 3, dan Peristiwa 4, fungsi akan mengembalikan 0.
Fungsi harus menghitung semua peristiwa yang terjadi dalam rantai peristiwa. Sebagai contoh, jika Peristiwa 4 terjadi dalam jendela waktu geser tetapi Peristiwa 3 tidak, pencarian ini tidak terlibat dalam menghitung jumlah maksimum peristiwa berturut-turut.

Sintaksis
Fungsi corong jendela mendukung sintaksis berikut:
Jika nilai parameter event_id ditentukan dalam rantai peristiwa, gunakan sintaksis berikut:
window_funnel(sliding_window, timestamp, event_id, ARRAY[event_list01, event_list02...])Jika nilai parameter event_id tidak ditentukan dalam rantai peristiwa dan Anda ingin menggunakan nilai kustom parameter event_id, gunakan sintaksis berikut, yang lebih fleksibel:
window_funnel(sliding_window, timestamp, ARRAY[event_id=event_list01, event_id=event_list02...])
Parameter
Parameter | Deskripsi |
sliding_window | Jendela waktu geser. Unit: detik. Nilai parameter ini bertipe bigint. |
timestamp | Timestamp. Unit: detik. Nilai parameter ini bertipe bigint. Kami merekomendasikan Anda menggunakan bidang bawaan __time__ dari Simple Log Service. |
event_id | Nama bidang log. Nilai parameter ini adalah nama suatu peristiwa. Contoh: Peristiwa A, Peristiwa B, atau Peristiwa C. Nilai parameter ini bertipe varchar. |
event_list | Rantai peristiwa kustom, yang dapat berisi hingga 32 peristiwa. Nilai parameter ini bertipe array. Contoh:
|
Contoh
Toko e-commerce mengadakan kegiatan promosi dan menganalisis kinerja konversi kegiatan tersebut menggunakan fungsi corong jendela. Proses konversi terdiri dari tiga langkah: melihat informasi tentang komoditas, menambahkan komoditas ke keranjang belanja online, dan kemudian membeli komoditas. Gambar berikut menunjukkan log sampel yang dikumpulkan oleh Simple Log Service.

Bidang log | Deskripsi |
behavior_type | Jenis perilaku pengguna. Nilai yang valid:
|
category_id | ID kategori komoditas. |
item_id | ID komoditas. |
timestamp | Titik waktu ketika perilaku pengguna terjadi. |
user_id | ID pengguna. |
Contoh 1
Menganalisis perilaku pembelian yang dilakukan pengguna dalam waktu 24 jam.
Pernyataan kueri
* | SELECT user_id, window_funnel( 86400, timestamp, ARRAY [behavior_type='pv', behavior_type='cart',behavior_type='buy'] ) AS levels GROUP BY user_id ORDER BY user_id LIMIT 1000Hasil kueri dan analisis
Nilai bidang levels adalah 3 untuk pengguna 24. Pengguna tersebut menyelesaikan pembelian dalam urutan melihat informasi tentang komoditas, menambahkan komoditas ke keranjang belanja online, dan kemudian membeli komoditas.
Nilai bidang levels adalah 2 untuk pengguna 14. Pengguna tersebut melihat informasi tentang komoditas dan menambahkan komoditas ke keranjang belanja online tetapi tidak menyelesaikan pembelian.

Contoh 2
Menganalisis jumlah pengguna yang memiliki jenis perilaku pengguna yang berbeda.
Pernyataan kueri
* | SELECT levels, count, sum(count) over( ORDER BY levels DESC ) AS total FROM ( SELECT levels, count(1) AS count FROM ( SELECT user_id, window_funnel( 86400, timestamp, ARRAY [behavior_type='pv', behavior_type='cart',behavior_type='buy'] ) AS levels FROM log GROUP BY user_id ) GROUP BY levels ORDER BY levels )Hasil kueri dan analisis
Jumlah pengguna yang melihat informasi tentang komoditas adalah 513.194. Jumlah pengguna yang tidak melanjutkan proses pembelian setelah melihat informasi tentang komoditas adalah 138.491.
Jumlah pengguna yang menambahkan komoditas ke keranjang belanja online adalah 374.703. Jumlah pengguna yang tidak melanjutkan proses pembelian setelah menambahkan komoditas ke keranjang belanja online adalah 198.642.
Jumlah pengguna yang membeli komoditas adalah 176.061.

Contoh 3
Menghitung tingkat konversi kegiatan promosi ini.
Tingkat konversi absolut: proporsi pengguna yang melakukan jenis perilaku pengguna tertentu terhadap jumlah total pengguna.
Tingkat konversi relatif: proporsi pengguna yang melakukan jenis perilaku pengguna tertentu terhadap pengguna yang melakukan jenis perilaku pengguna lainnya. Jenis perilaku pengguna yang terakhir terjadi sebelum jenis perilaku pengguna yang pertama.
Pernyataan kueri
* | SELECT *, 100.0 * total /(sum(count) over()) AS "Tingkat konversi absolut", if( lag(total, 1, 0) over() = 0, 100, (100.0 * total / lag(total, 1, 0) over()) ) AS "Tingkat konversi relatif" FROM ( SELECT levels, count, sum(count) over( ORDER BY levels DESC ) AS total FROM ( SELECT levels, count(1) AS count FROM ( SELECT user_id, window_funnel( 86400, timestamp, ARRAY [behavior_type='pv', behavior_type='cart',behavior_type='buy'] ) AS levels FROM log GROUP BY user_id ) GROUP BY levels ) ORDER BY levels )Hasil kueri dan analisis
Hasil kueri dan analisis dalam tabel

Hasil kueri dan analisis dalam grafik corong
