全部产品
Search
文档中心

Hologres:Fungsi segmentasi audiens terperinci

更新时间:Feb 04, 2026

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;
    Catatan

    Untuk 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:

  1. Aktifkan ekstensi.

    Superuser menjalankan pernyataan berikut di database untuk mengaktifkan ekstensi:

    CREATE EXTENSION flow_analysis;
  2. 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);
  3. 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.

      Catatan

      Semakin 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