Topik ini menjelaskan sintaks fungsi segmentasi audiens terperinci bit_construct dan bit_match.
Informasi latar belakang
Dalam skenario segmentasi audiens, Anda sering perlu melakukan segmentasi pengguna berdasarkan tabel detail. Misalnya, satu pengguna mungkin memiliki beberapa catatan, dan setiap catatan memenuhi kondisi yang berbeda. Segmentasi audiens terperinci biasanya melibatkan identifikasi pengguna yang memenuhi kombinasi kondisi tertentu.
Tabel berikut adalah contoh tabel detail. Anda perlu menemukan pengguna yang telah melakukan kedua perilaku click shopping cart dan view favorites page. Dalam contoh ini, pengguna A memenuhi kondisi tersebut.
|
user |
action |
page |
A |
klik |
shopping cart |
B |
klik |
home page |
A |
lihat |
favorites page |
B |
klik |
shopping cart |
A |
klik |
favorites page |
Metode kueri tradisional memerlukan beberapa putaran penyaringan kondisional dan pernyataan JOIN untuk mendapatkan hasil. Pendekatan ini melibatkan penulisan SQL yang kompleks dan mengonsumsi sumber daya signifikan akibat banyaknya operasi JOIN. Mulai dari Hologres V0.10, fungsi bit_construct dan bit_match tersedia untuk skenario segmentasi audiens terperinci. Anda dapat mengambil audiens target hanya dengan satu putaran penyaringan dan perhitungan fungsi, yang menyederhanakan pengembangan dan memberikan hasil lebih cepat.
Batasan
Batasan berikut berlaku saat Anda menggunakan fungsi segmentasi audiens terperinci di Hologres:
-
Fungsi ini hanya didukung di Hologres V0.10 dan versi yang lebih baru. Periksa versi instans Anda saat ini di Konsol Hologres. Jika versi instans Anda lebih lama dari V0.10, lihat Error umum yang menyebabkan kegagalan persiapan upgrade atau bergabunglah dengan grup DingTalk Hologres untuk memberikan masukan. Untuk informasi selengkapnya, lihat Bagaimana cara mendapatkan dukungan online lebih lanjut?.
-
Sebelum menggunakan fungsi segmentasi audiens terperinci, jalankan pernyataan berikut untuk mengaktifkan ekstensi. Ekstensi ini merupakan fitur tingkat database. Anda hanya perlu menjalankan pernyataan ini sekali per database. Jika Anda membuat database baru, Anda harus menjalankan pernyataan ini lagi.
--Create an extension. CREATE EXTENSION flow_analysis;CatatanUntuk menguninstall ekstensi, jalankan perintah berikut.
DROP EXTENSION flow_analysis;
bit_construct
Hologres V0.10 dan versi yang lebih baru menyediakan fungsi bit_construct untuk skenario segmentasi audiens terperinci.
-
Function description
bit_construct mengembalikan bitmap hingga 32 bit sebagai bilangan bulat berdasarkan kondisi filter yang ditentukan.
-
Syntax example
bit_construct( a , b , ...., a6 ) -
Parameter Description
-
Parameter a, b, dan seterusnya merepresentasikan kondisi filter. Tipe datanya adalah bool. Maksimal 32 kondisi didukung. Nama parameter yang valid berkisar dari a hingga z dan a1 hingga a6.
-
Fungsi ini mengembalikan nilai bertipe int.
-
bit_match
Hologres V0.10 dan versi yang lebih baru menyediakan fungsi bit_match untuk skenario segmentasi audiens terperinci.
-
Function description
bit_match melakukan perhitungan lebih lanjut pada hasil yang telah difilter oleh bit_construct.
-
Syntax example
bit_match('expression', bitmask) -
Parameter Description
Parameter
Deskripsi
Contoh
ekspresi
Ekspresi kondisional dalam fungsi bit_construct. Mendukung
&(and),|(or),!(not), dan^(XOR).a&b
bitmask
Nama bitmap yang dibuat oleh bit_construct.
None
Contoh penggunaan
Contoh berikut menunjukkan sintaks lengkap untuk menggunakan fungsi segmentasi audiens terperinci:
-
Aktifkan ekstensi.
Superuser menjalankan pernyataan berikut di database untuk mengaktifkan ekstensi:
CREATE EXTENSION flow_analysis; -
Siapkan tabel dan data.
Kode berikut membuat tabel detail yang mencatat perilaku belanja pengguna. Tabel ini mencakup ID pengguna (uid) dan perilaku sepanjang jalur belanja. Data sampel juga dimasukkan ke dalam tabel.
create table ods_app_dwd( event_time timestamptz, uid bigint, action text, page text, product_code text, from_days int ); insert into ods_app_dwd values('2021-04-03 10:01:30', 274649163, 'click', 'shopping cart', 'MDS', 1); insert into ods_app_dwd values('2021-04-03 10:04:30', 274649163, 'view', 'favorites page', 'MDS', 4); insert into ods_app_dwd values('2021-04-03 10:06:30', 274649165, 'click', 'shopping cart', 'MMS', 8); insert into ods_app_dwd values('2021-04-03 10:09:30', 274649165, 'view', 'shopping cart', 'MDS', 10); -
Tanyakan data.
Kueri pengguna yang baik menambahkan produk ke keranjang belanja maupun menambahkannya ke halaman favorit dalam rentang waktu tertentu.
Anda dapat mengkueri data menggunakan salah satu metode berikut:
-
Gunakan klausa WHERE untuk mengkueri data.
CatatanSemakin sedikit catatan data yang difilter oleh klausa WHERE dalam pernyataan kueri, semakin baik performa kueri.
WITH tbl as ( SELECT uid, bit_or(bit_construct( a := (action='click' and page='shopping cart'), b := (action='view' and page='favorites page'))) as uid_mask FROM ods_app_dwd WHERE event_time > '2021-04-03 10:00:00' AND event_time < '2021-04-04 10:00:00' GROUP BY uid ) SELECT uid from tbl where bit_match('a&b', uid_mask);Daftar berikut menjelaskan pernyataan SQL tersebut:
-
bit_construct: Kondisi a memfilter pengguna yang menambahkan produk ke keranjang belanja. Kondisi b memfilter pengguna yang menambahkan produk ke halaman favorit.
-
bit_or: Melakukan operasi OR logis pada kondisi a dan b yang telah difilter. Dalam contoh ini, jika ada catatan apa pun untuk suatu pengguna yang memenuhi suatu kondisi, pengguna tersebut dianggap memenuhi kondisi tersebut.
-
bit_match: a&b mengembalikan irisan pengguna yang memenuhi kedua kondisi a dan b.
-
-
Gunakan klausa HAVING untuk mengkueri data.
SELECT uid FROM ( SELECT uid, bit_or(bit_construct( a := (action='click' AND page='shopping cart'), b := (action='view' AND page='favorites page'))) as uid_mask FROM ods_app_dwd WHERE event_time > '2021-04-03 10:00:00' AND event_time < '2021-04-04 10:00:00' GROUP BY uid HAVING bit_match('a&b', bit_or(bit_construct( a := (action='click' and page='shopping cart'), b := (action='view' and page='favorites page')))) ) t
-