全部产品
Search
文档中心

Simple Log Service:Fungsi corong jendela

更新时间:Jun 26, 2025

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:

Penting Jika Anda ingin menggunakan string dalam pernyataan analitik, apit string tersebut dengan tanda kutip tunggal (''). String yang tidak diapit atau diapit dengan tanda kutip ganda ("") menunjukkan nama bidang atau kolom. Sebagai contoh, 'status' menunjukkan string status, sedangkan status atau "status" menunjukkan bidang log status.

Fungsi

Sintaksis

Deskripsi

Didukung di SQL

Didukung di SPL

fungsi window_funnel

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.

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

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

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

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:

  • pv: Melihat informasi tentang komoditas.

  • cart: Menambahkan komoditas ke keranjang belanja online.

  • buy: Membeli komoditas.

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
      1000
  • Hasil 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漏斗函数