全部产品
Search
文档中心

Hologres:Fungsi corong asosiasi properti (finder_funnel)

更新时间:Jul 02, 2025

Fungsi corong asosiasi properti finder_funnel digunakan untuk menghitung hasil corong dari peristiwa dalam jendela waktu tertentu. Anda dapat menentukan properti peristiwa untuk asosiasi, namun tidak dapat mengelompokkan hasil corong berdasarkan waktu. Topik ini menjelaskan cara menggunakan fungsi ini.

Informasi latar belakang

Fungsi finder_funnel dapat digunakan untuk mengasosiasikan peristiwa berdasarkan properti. Sebagai contoh, Anda mengonfigurasi corong dalam skenario permainan dengan langkah-langkah berikut: masuk ke permainan, memulai permainan, bermain game, penyelesaian level permainan, dan keluar dari permainan. Selain itu, Anda menentukan properti "negara" untuk setiap peristiwa. Dalam hal ini, Anda dapat menggunakan properti tersebut sebagai ID asosiasi untuk memastikan bahwa konversi di setiap langkah dilakukan berdasarkan nilai properti yang sama. Properti yang digunakan untuk asosiasi di langkah-langkah berbeda dalam corong bisa sama atau berbeda, tetapi harus memiliki tipe yang sama.

Batasan

Hanya Hologres V2.2.32 atau lebih baru dan Hologres V3.0.12 atau lebih baru yang mendukung fungsi finder_funnel.

Perhatian

Untuk menggunakan fungsi corong, Anda harus mengeksekusi pernyataan berikut sebagai superuser untuk menginstal ekstensi:

CREATE extension flow_analysis; --Instal ekstensi.
  • Ekstensi diinstal pada tingkat database. Untuk setiap database, Anda hanya perlu menginstal ekstensi sekali.

  • Secara default, ekstensi dimuat ke skema publik. Ekstensi tidak dapat dimuat ke skema lain. Untuk menggunakan ekstensi di skema lain, Anda harus menentukan nama fungsi dalam format public.function, seperti public.windowFunnel.

finder_funnel (fungsi corong asosiasi properti)

Fungsi ini digunakan untuk menghitung kinerja setiap pengguna dalam jendela waktu tertentu dan mendukung analisis asosiasi dalam dimensi peristiwa yang ditentukan.

  • Sintaksis Fungsi:

    finder_funnel(window, start_timestamp, step_interval, step_numbers, num_events, attr_related, time_zone, is_relative_window, server_timestamp, client_timestamp, prop1, prop2, ..., check_event1, check_event2...)
  • Parameter

    Parameter

    Diperlukan

    Deskripsi

    window

    Ya

    Jendela untuk analisis statistik. Satuan: milidetik.

    start_timestamp

    Ya

    Waktu mulai analisis. Tipe TIMESTAMP dan TIMESTAMPTZ didukung.

    step_interval

    Ya

    Durasi ukuran langkah, yaitu granularitas untuk perhitungan dan analisis konversi. Satuan: detik.

    step_numbers

    Ya

    Jumlah langkah yang perlu dianalisis. Sebagai contoh, step_interval=86400 (satu hari), step_numbers=7 menunjukkan data corong dalam tujuh hari, mulai dari waktu yang ditentukan oleh parameter start_timestamp.

    num_events

    Ya

    Jumlah peristiwa yang perlu dianalisis.

    attr_related

    Ya

    Menunjukkan apakah peristiwa memiliki properti terkait. Nilai parameter adalah angka bertipe INT. Jika nilai direpresentasikan dalam biner, tempat ke-i adalah 1, yang menunjukkan bahwa peristiwa ke-i+1 memiliki properti terkait. Dalam banyak kasus, parameter attr_related harus digunakan bersama dengan parameter prop. Jumlah ekspresi prop yang perlu dimasukkan harus sama dengan jumlah 1 yang dikonfigurasi dalam biner.

    Catatan

    Jika parameter attr_related disetel ke 0, peristiwa tidak memiliki properti terkait.

    time_zone

    Ya

    Zona waktu yang sesuai dengan waktu input. Nilai parameter adalah tipe TEXT dan harus menggunakan format zona waktu standar, seperti Asia/Shanghai. Hanya ketika parameter is_relative_window disetel ke true, hasil keluaran dipengaruhi, yang berarti bahwa hasil ditampilkan berdasarkan zona waktu.

    is_relative_window

    Ya

    Menunjukkan apakah jendela adalah jendela multi-hari kalender. Nilai defaultnya adalah false. Jika parameter ini disetel ke true, batasan berikut diberlakukan pada parameter lain:

    • window: Nilai parameter harus merupakan kelipatan bilangan bulat dari 86.400.000.

    • step_interval: Nilai parameter harus 86400, yang menunjukkan bahwa satu ukuran langkah observasi adalah satu hari.

    Catatan

    Hari kalender mengacu pada periode waktu dari 00:00:00 hingga 23:59:59 setiap hari. Hari kalender pertama dimulai dari waktu peristiwa dan berakhir pada 23:59:59, dan hari kalender berikutnya adalah hari penuh. Dalam banyak kasus, Anda dapat menggunakan hari kalender sebagai jendela untuk mengamati data corong harian guna menerapkan operasi bisnis yang lebih rinci.

    server_timestamp

    Ya

    Waktu server saat peristiwa terjadi. Tipe TIMESTAMP dan TIMESTAMPTZ didukung. Parameter ini digunakan untuk menghitung slot peristiwa atau langkah tempat peristiwa tersebut termasuk saat fungsi dijalankan.

    client_timestamp

    Ya

    Waktu klien saat peristiwa terjadi. Tipe TIMESTAMP dan TIMESTAMPTZ didukung. Tipe data waktu yang ditentukan oleh parameter ini harus sama dengan yang ditentukan oleh parameter start_timestamp. Parameter ini digunakan untuk mengurutkan data saat fungsi dijalankan.

    prop

    Ya

    Properti terkait dari peristiwa. Tipe data semua properti harus sama. Jika tidak, perbandingan tidak dapat dilakukan.

    check_event

    Ya

    Daftar peristiwa yang perlu dianalisis. Dalam durasi yang ditentukan oleh parameter window, peristiwa yang memenuhi kondisi tertentu dianggap sebagai peristiwa valid dan berpartisipasi dalam analisis konversi. Sebagai contoh, jika Anda ingin menganalisis tiga peristiwa, masukkan EventName = 'E0001', EventName = 'E0002', EventName = 'E0003'.

  • Hasil yang Dikembalikan

    Hasil yang dikembalikan oleh fungsi ini adalah {<Peristiwa ke-n yang akhirnya dicapai>, <Peristiwa ke-n yang akhirnya dicapai di setiap langkah>}.

    Catatan

    Peristiwa ke-n yang akhirnya dicapai menunjukkan peristiwa dengan nomor tempat tertinggi di antara semua langkah.

funnel_rep (fungsi set hasil corong)

Fungsi funnel_rep memungkinkan Anda menggabungkan hasil corong yang dihitung menggunakan fungsi finder_funnel. Untuk informasi lebih lanjut, lihat Fungsi corong pengelompokan dimensi (finder_group_funnel).

Data sampel

Anda harus mengeksekusi pernyataan berikut untuk menyiapkan data terlebih dahulu:

CREATE TABLE finder_funnel_test_1(id INT, event_time TIMESTAMP, event TEXT, province TEXT,city TEXT);

INSERT INTO finder_funnel_test_1 VALUES 
(1111, '2024-01-02 00:00:00', 'Registration', 'Beijing','Beijing'), 
(1111, '2024-01-02 00:00:01', 'Logon', 'Beijing','Beijing'), 
(1111, '2024-01-02 00:00:02', 'Payment', 'Beijing','Beijing'), 
(1111, '2024-01-02 00:00:03', 'Exit', 'Beijing','Beijing'), 

(1111, '2024-01-03 00:00:00', 'Registration', 'Beijing','Beijing'), 
(1111, '2024-01-03 00:00:01', 'Logon', 'Beijing','Beijing'), 
(1111, '2024-01-03 00:00:02', 'Payment', 'Beijing','Beijing'), 

(1111, '2024-01-04 00:00:00', 'Registration', 'Beijing','Beijing'), 
(1111, '2024-01-04 00:00:01', 'Logon', 'Beijing','Beijing'), 


(2222, '2024-01-02 00:00:00', 'Registration', 'Zhejiang','Hangzhou'), 
(2222, '2024-01-02 00:00:00', 'Logon', 'Zhejiang','Hangzhou'), 
(2222, '2024-01-02 00:00:01', 'Payment', 'Zhejiang','Hangzhou'), 
(2222, '2024-01-02 00:00:03', 'Payment', 'Zhejiang','Hangzhou');

Contoh

Skenario 1: Hitung peristiwa yang dicapai setiap pengguna di setiap langkah, tanpa konfigurasi asosiasi properti

Contoh ini menunjukkan cara menggunakan fungsi finder_funnel berdasarkan data sampel.

Jendela kueri adalah tiga hari, ukuran langkah adalah 3 dan dibagi per hari, serta total empat peristiwa berpartisipasi dalam konversi. Kode:

-- Jendela kueri adalah tiga hari, ukuran langkah adalah 3 dan dibagi per hari, dan total empat peristiwa berpartisipasi dalam konversi.
SELECT
    id,
    finder_funnel (86400000 * 3, EXTRACT(epoch FROM TIMESTAMP'2024-01-02 00:00:00')::BIGINT, 86400, 3, 4, 0, 'Asia/Shanghai', FALSE, event_time, event_time, event = 'Registration', event = 'Logon', event = 'Payment', event = 'Exit') AS funnel_res
FROM
    finder_funnel_test_1
GROUP BY
    id;

Hasil berikut dikembalikan:

  id  | funnel_res 
------+------------
 2222 | {3,3,0,0}
 1111 | {4,4,3,2}
 (2 rows)

Interpretasi hasil di kolom funnel_res: Angka pertama menunjukkan peristiwa ke-n yang akhirnya dicapai pengguna, dan setiap angka berikutnya menunjukkan peristiwa ke-n yang dicapai di setiap langkah. Sebagai contoh, hasil id=1111, funnel_res={4,4,3,2} menunjukkan bahwa pengguna akhirnya mencapai peristiwa keempat. Pengguna mencapai peristiwa keempat di langkah pertama, peristiwa ketiga di langkah kedua, dan peristiwa kedua di langkah ketiga.

Skenario 2: Tentukan properti peristiwa untuk asosiasi

Contoh ini menunjukkan cara menggunakan fungsi finder_funnel berdasarkan data sampel.

Parameter attr_related disetel ke 3, yang dalam biner adalah 11. Nilai tersebut menunjukkan bahwa peristiwa pertama dan kedua memiliki properti terkait. Parameter prop disetel ke province, yang menunjukkan bahwa kedua peristiwa dianalisis dalam dimensi provinsi.

SELECT
    id,
    finder_funnel (86400000 * 3, EXTRACT(epoch FROM TIMESTAMP'2024-01-02 00:00:00')::BIGINT, 86400, 3, 4, 3, 'Asia/Shanghai', FALSE, event_time, event_time, province, province, event = 'Registration', event = 'Logon', event = 'Payment', event = 'Exit') AS funnel_res
FROM
    finder_funnel_test_1
GROUP BY
    id;

Hasil berikut dikembalikan:

  id  | funnel_res 
------+------------
 2222 | {3,3,0,0}
 1111 | {4,4,3,2}
 (2 rows)

Interpretasi hasil di kolom funnel_res: Hasil menampilkan peristiwa ke-n yang akhirnya dicapai setiap pengguna dan peristiwa ke-n yang akhirnya dicapai setiap pengguna di setiap langkah setelah asosiasi properti.

Skenario 3: Lakukan agregasi setelah properti peristiwa tertentu diasosiasikan

Contoh ini menunjukkan cara menggunakan fungsi finder_funnel berdasarkan data sampel.

SELECT
    funnel_rep (3, 4, funnel_res)
FROM (
    SELECT
        id,
        finder_funnel (86400000 * 3, EXTRACT(epoch FROM TIMESTAMP'2024-01-02 00:00:00')::BIGINT, 86400, 3, 4, 3, 'Asia/Shanghai', FALSE, event_time, event_time, province, province, event = 'Registration', event = 'Logon', event = 'Payment', event = 'Exit') AS funnel_res
    FROM
        finder_funnel_test_1
    GROUP BY
        id) a;

Hasil berikut dikembalikan:

                funnel_rep                 
-------------------------------------------
 {"2,2,2,1","2,2,2,1","1,1,1,0","1,1,0,0"}
 (1 row)

Skenario 4: Gunakan beberapa hari kalender sebagai jendela

Dalam skenario ini, beberapa hari kalender digunakan sebagai jendela untuk menampilkan data corong setiap hari kalender. Contoh ini menunjukkan data corong dari empat peristiwa dalam tiga hari kalender.

  1. Buat tabel dan sisipkan data ke dalam tabel.

    CREATE TABLE finder_funnel_test_3(id INT, event_time TIMESTAMP, event TEXT, province TEXT,city TEXT);
    
    INSERT INTO finder_funnel_test_3 VALUES 
    (1111, '2024-01-02 00:00:02', 'Registration', 'Beijing','Beijing'), 
    (1111, '2024-01-02 00:00:03', 'Logon', 'Beijing','Beijing'), 
    
    (1111, '2024-01-03 00:00:04', 'Payment', 'Beijing','Beijing'), 
    
    (1111, '2024-01-05 00:00:01', 'Exit', 'Beijing','Beijing'), 
    
    
    (2222, '2024-01-02 00:00:00', 'Registration', 'Zhejiang','Hangzhou'), 
    (2222, '2024-01-02 00:00:00', 'Logon', 'Zhejiang','Hangzhou'), 
    (2222, '2024-01-02 00:00:01', 'Payment', 'Zhejiang','Hangzhou'), 
    (2222, '2024-01-02 00:00:03', 'Payment', 'Zhejiang','Hangzhou');
  2. Lakukan perhitungan berdasarkan tiga hari kalender. Ketika parameter id disetel ke 1111 pada 2 Januari 2024, periode dari 00:00:02 hingga 23:59:59 dianggap sebagai hari kalender. Tanggal 3 Januari 2024 dan 4 Januari 2024 adalah dua hari kalender lainnya. Tanggal 5 Januari 2024 tidak berada dalam jendela. Oleh karena itu, peristiwa ketiga dicapai ketika hasil akhir yang diamati berdasarkan hari kalender adalah id=1111.

    SELECT
        id,
        finder_funnel (86400000 * 3, EXTRACT(epoch FROM TIMESTAMP'2024-01-02 00:00:00')::BIGINT, 86400, 3, 4, 0, 'Asia/Shanghai', TRUE, event_time, event_time, event = 'Registration', event = 'Logon', event = 'Payment', event = 'Exit') AS funnel_res
    FROM
        finder_funnel_test_3
    GROUP BY
        id;

    Hasil berikut dikembalikan:

     id   | funnel_res 
    ------+------------
     1111 | {3,3,0,0}
     2222 | {3,3,0,0}
     (2 rows)