All Products
Search
Document Center

Simple Log Service:Fungsi window funnel

Last Updated:Jun 17, 2026

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.

Penting Jika Anda ingin menggunakan string dalam pernyataan analitik, Anda harus membungkus string tersebut dengan tanda petik tunggal (''). String yang tidak dibungkus atau dibungkus dengan tanda petik ganda ("") menunjukkan nama field atau nama kolom. Misalnya, 'status' menunjukkan string status, sedangkan status atau "status" menunjukkan field log status.

Function

Syntax

Description

SQL support

SPL support

window funnel function

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.

Penting
  • 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:

  • ARRAY['A', 'B', 'C']

  • ARRAY[event_id='A', event_id='B', event_id='C']

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:

  • pv: melihat komoditas.

  • cart: menambahkan ke keranjang.

  • buy: membeli komoditas.

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 levels untuk pengguna 24 adalah 3, yang menunjukkan pengguna tersebut menyelesaikan seluruh jalur: melihat komoditas, menambahkannya ke keranjang, dan membelinya.

    • Nilai levels untuk 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漏斗函数