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=7menunjukkan 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-
iadalah 1, yang menunjukkan bahwa peristiwa ke-i+1memiliki 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.CatatanJika 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 parameteris_relative_windowdisetel 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.
CatatanHari kalender mengacu pada periode waktu
dari 00:00:00 hingga 23:59:59setiap hari. Hari kalender pertamadimulai 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>}.CatatanPeristiwa 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.
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');Lakukan perhitungan berdasarkan tiga hari kalender. Ketika parameter
iddisetel ke 1111 pada 2 Januari 2024, periode dari00:00:02 hingga 23:59:59dianggap 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 adalahid=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)