Fungsi window funnel menganalisis perilaku pengguna, lalu lintas aplikasi, dan konversi tujuan produk dengan melacak event berurutan dalam jendela waktu geser (sliding time window).
Fungsi window funnel mendukung dua sintaks berikut.
|
Function |
Syntax |
Description |
SQL support |
SPL support |
|
window_funnel(sliding_window, timestamp, event_id, ARRAY[event_list01, event_list02...]) |
Mencari rantai event dalam jendela waktu geser dan menghitung jumlah maksimum event berurutan dalam rantai tersebut. Gunakan sintaks ini jika kolom event (event_id) sudah didefinisikan dalam data Anda. |
√ |
× |
|
|
window_funnel(sliding_window, timestamp, ARRAY[event_id=event_list01, event_id=event_list02...]) |
Mencari rantai event dalam jendela waktu geser dan menghitung jumlah maksimum event berurutan dalam rantai tersebut. Gunakan sintaks ini untuk mendefinisikan nilai event kustom non-enumerated guna fleksibilitas lebih tinggi. |
√ |
× |
Cara kerja
Fungsi window funnel mencari rantai event dalam jendela waktu geser, mengidentifikasi urutan kecocokan terpanjang dari awal rantai, dan mengembalikan panjang urutan tersebut.
Fungsi ini menggunakan algoritma berikut:
-
Dimulai dari event pertama dalam rantai yang ditentukan, mengatur penghitung event ke 1, dan membuka jendela geser.
-
Dalam jendela geser, jika event berikutnya terjadi dalam urutan yang benar, penghitung bertambah.
-
Jika urutan terputus, pencarian saat ini dihentikan, penghitung event berhenti bertambah, dan pencarian baru dimulai.
-
Setelah semua pencarian selesai, jika ditemukan beberapa kecocokan, fungsi mengembalikan nilai penghitung tertinggi, yang merepresentasikan panjang rantai event kecocokan terpanjang.
Sebagai contoh, asumsikan jendela waktu geser selama 100 detik dan rantai event Event 1 → Event 2 → Event 3 → Event 4 → Event 5. Jika urutan aktual adalah Event 1 → Event 2 → Event 4 → Event 5 → Event 1 → Event 3, fungsi mengembalikan nilai 2 karena urutan kecocokan terpanjang yang dimulai dari Event 1 adalah Event 1 → Event 2.
-
Pencarian harus dimulai dari event pertama dalam rantai yang ditentukan. Misalnya, jika urutan event aktual adalah Event 2 → Event 3 → Event 4, fungsi mengembalikan nilai 0.
-
Pencarian memerlukan urutan ketat dan tidak boleh melewatkan event. Misalnya, dalam urutan Event 1 → Event 2 → Event 4, kecocokan berhenti setelah Event 2 karena Event 3 dilewati. Oleh karena itu, Event 4 tidak dihitung.

Sintaks
Fungsi window funnel mendukung dua sintaks berikut.
-
Jika kolom event (event_id) sudah didefinisikan dalam data Anda, gunakan sintaks berikut:
window_funnel(sliding_window, timestamp, event_id, ARRAY[event_list01, event_list02...]) -
Untuk mendefinisikan nilai event kustom non-enumerated, gunakan sintaks berikut:
window_funnel(sliding_window, timestamp, ARRAY[event_id=event_list01, event_id=event_list02...])
Parameter
|
Parameter |
Description |
|
sliding_window |
Jendela waktu geser, dalam satuan detik. Nilainya harus bertipe bigint. |
|
timestamp |
Timestamp, dalam satuan detik. Nilainya harus bertipe bigint. Kami menyarankan menggunakan field log bawaan __time__. |
|
event_id |
Field log yang merepresentasikan suatu event, seperti A, B, atau C. Nilainya harus bertipe varchar. |
|
event_list |
Rantai event kustom yang akan dicocokkan, yang dapat berisi hingga 32 event. Nilainya harus bertipe array. Contoh:
|
Contoh
Sebuah toko e-commerce menjalankan promosi dan menggunakan fungsi window funnel untuk menganalisis kinerja konversi. Jalur konversi terdiri dari tiga langkah: melihat komoditas, menambahkan ke keranjang, dan membeli komoditas. Simple Log Service mengumpulkan log untuk event-event tersebut.
Contoh berikut menunjukkan field dalam entri log: behavior_type:pv, category_id:149192, item_id:2073959, timestamp:1511860012, dan user_id:137617.
|
Log field |
Description |
|
behavior_type |
Jenis perilaku pengguna. Nilai yang valid:
|
|
category_id |
ID kategori komoditas. |
|
item_id |
ID komoditas. |
|
timestamp |
Waktu terjadinya perilaku pengguna. |
|
user_id |
ID pengguna. |
Contoh 1
Analisis perilaku pembelian pengguna dalam jendela 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 1000 -
Hasil
-
Nilai
levelsuntuk pengguna 24 adalah 3, yang menunjukkan pengguna tersebut menyelesaikan seluruh jalur: melihat komoditas, menambahkannya ke keranjang, dan membelinya. -
Nilai
levelsuntuk pengguna 14 adalah 2, yang menunjukkan pengguna tersebut melihat komoditas dan menambahkannya ke keranjang tetapi tidak menyelesaikan pembelian.
Kueri mengembalikan 1.000 catatan dalam tabel dengan dua kolom: user_id dan levels.
-
Contoh 2
Analisis berapa banyak pengguna yang menyelesaikan setiap langkah corong.
-
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
-
513.194 pengguna melihat komoditas, dan 138.491 di antaranya keluar setelah langkah ini.
-
374.703 pengguna menambahkan komoditas ke keranjang, dan 198.642 di antaranya keluar setelah langkah ini.
-
176.061 pengguna membeli komoditas.
-
Contoh 3
Hitung laju konversi untuk promosi tersebut.
-
Laju konversi absolut: persentase total pengguna yang menyelesaikan langkah tertentu.
-
Laju konversi relatif: persentase pengguna yang menyelesaikan langkah tertentu relatif terhadap mereka yang menyelesaikan langkah sebelumnya.
-
Pernyataan kueri
* | SELECT *, 100.0 * total /(sum(count) over()) AS "absolute conversion rate", if( lag(total, 1, 0) over() = 0, 100, (100.0 * total / lag(total, 1, 0) over()) ) AS "relative conversion rate" 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 mengembalikan tabel dengan lima kolom: levels, count, total, absolute conversion rate, dan relative conversion rate. Sebagai contoh, pada level 2, laju konversi absolut sekitar 72,72%. Pada level 3, yaitu langkah terakhir, laju konversi absolut sekitar 34,17%, dan laju konversi relatif sekitar 46,99%.
-
grafik corong

-