全部产品
Search
文档中心

Hologres:Fungsi identifikasi pengguna yang dimaksud

更新时间:Jul 02, 2025

Topik ini menjelaskan cara menggunakan fungsi bit_construct dan bit_match untuk identifikasi pengguna yang dimaksud.

Informasi latar belakang

Dalam skenario identifikasi pengguna yang dimaksud, Anda perlu mengidentifikasi pengguna tertentu dari tabel. Sebagai contoh, sebuah tabel berisi beberapa catatan dari satu pengguna, dan setiap catatan memenuhi kondisi yang berbeda. Untuk mengidentifikasi pengguna yang dimaksud, Anda perlu menanyakan pengguna yang memenuhi kombinasi kondisi tertentu.

Sebagai contoh, tanyakan pengguna yang telah mengklik keranjang belanja dan telah melihat favorit dari tabel sampel berikut. Dalam contoh ini, Pengguna A memenuhi kondisi kueri.

Pengguna

Aksi

Halaman

A

klik

Keranjang belanja

B

klik

Beranda

A

lihat

Favorit

B

klik

Keranjang belanja

A

klik

Favorit

Secara tradisional, Anda perlu menentukan kondisi untuk menanyakan data beberapa kali dan menggunakan pernyataan JOIN untuk mendapatkan hasil yang memenuhi kondisi. Metode ini membutuhkan Pernyataan SQL yang kompleks. Selain itu, beberapa pernyataan JOIN mengonsumsi banyak sumber daya. Di Hologres V0.10 dan versi lebih baru, Hologres menyediakan fungsi bit_construct dan bit_match untuk identifikasi pengguna yang dimaksud. Anda hanya perlu menentukan kondisi untuk menanyakan data sekali dan menggunakan fungsi-fungsi tersebut untuk mendapatkan hasil yang memenuhi kondisi. Ini menyederhanakan pengembangan data dalam skenario identifikasi pengguna yang dimaksud dan membantu Anda mendapatkan hasil dengan mudah.

Batasan

Saat menggunakan fungsi identifikasi pengguna yang dimaksud di Hologres, perhatikan batasan berikut:

  • Hanya Hologres V0.10 dan versi lebih baru yang memungkinkan Anda menggunakan fungsi identifikasi pengguna yang dimaksud. Anda dapat melihat versi instance Hologres Anda di konsol Hologres. Jika versi instance Hologres Anda lebih awal dari V0.10, tingkatkan instance Hologres Anda secara manual di konsol Hologres atau bergabunglah dengan grup DingTalk Hologres untuk mengajukan peningkatan instance. Untuk informasi lebih lanjut tentang cara meningkatkan instance Hologres secara manual, lihat Peningkatan Instance. Untuk informasi lebih lanjut tentang cara bergabung dengan grup DingTalk Hologres, lihat Dapatkan dukungan online untuk Hologres.

  • Sebelum menggunakan fungsi-fungsi tersebut, Anda harus mengeksekusi pernyataan berikut untuk menginstal ekstensi sebagai superuser. Ekstensi diinstal pada tingkat database. Untuk setiap database, Anda hanya perlu menginstal ekstensi sekali. Jika Anda membuat database baru, Anda harus mengeksekusi pernyataan lagi.

    -- Instal ekstensi.
    CREATE EXTENSION flow_analysis;
    Catatan

    Untuk menghapus ekstensi, eksekusi pernyataan berikut:

    DROP EXTENSION flow_analysis;

bit_construct

Di Hologres V0.10 dan versi lebih baru, Hologres menyediakan fungsi bit_construct untuk identifikasi pengguna yang dimaksud.

  • Function description

    Fungsi bit_construct mengembalikan bitmap bertipe INTEGER berdasarkan kondisi filter yang ditentukan. Nilai yang dikembalikan bisa memiliki panjang hingga 32 bit.

  • Syntax

    bit_construct(
      a ,
      b ,
      ....,
      a6
    )
  • Parameters

    • Parameter seperti a dan b menentukan kondisi filter yang nilai kembaliannya bertipe BOOLEAN. Maksimal 32 kondisi didukung. Nilai valid: a hingga z dan a1 hingga a6.

    • Fungsi ini mengembalikan nilai bertipe INT.

bit_match

Di Hologres V0.10 dan versi lebih baru, Hologres menyediakan fungsi bit_match untuk identifikasi pengguna yang dimaksud.

  • Function description

    Fungsi bit_match digunakan untuk menghitung lebih lanjut keluaran fungsi bit_construct.

  • Syntax

    bit_match('ekspresi', bitmask)
  • Parameters

    Parameter

    Deskripsi

    Contoh

    ekspresi

    Ekspresi kondisional dalam fungsi bit_construct. Ekspresi dapat berisi operator dan karakter berikut: AND (&), OR (|), NOT (!), dan XOR (^).

    a&b

    bitmask

    Nama bitmap yang dibangun oleh fungsi bit_construct.

    Tidak tersedia

Contoh

Kode sampel berikut memberikan contoh tentang cara menggunakan fungsi identifikasi pengguna yang dimaksud:

  1. Instal ekstensi.

    Eksekusi pernyataan berikut untuk menginstal ekstensi di database sebagai superuser:

    CREATE EXTENSION flow_analysis;
  2. Siapkan tabel dan data.

    Buat tabel yang mencatat ID pengguna dan acara dalam proses belanja online pengguna. Kemudian, masukkan data ke dalam tabel. Gunakan pernyataan sampel berikut:

    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', '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.

    Tanyakan pengguna yang menambahkan produk ke keranjang belanja dan ke favorit dalam periode waktu tertentu.

    Anda dapat menanyakan data dengan salah satu metode berikut:

    • Gunakan klausa WHERE.

      Catatan

      Semakin sedikit data yang diperoleh menggunakan klausa WHERE, semakin baik performa kuerinya.

      WITH tbl as (
      SELECT uid, bit_or(bit_construct(
        a := (action='click' and page='Shopping cart'),
        b := (action='view' and page='Favorites'))) 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);

      Fungsi dalam pernyataan SQL:

      • bit_construct: menggunakan acara Klik keranjang belanja sebagai Kondisi a dan acara Lihat favorit sebagai Kondisi b untuk menanyakan pengguna yang memenuhi kondisi filter.

      • bit_or: melakukan operasi bitwise OR pada pengguna yang memenuhi Kondisi a dan pengguna yang memenuhi Kondisi b. Dalam contoh ini, jika catatan pengguna memenuhi Kondisi a atau b, pengguna tersebut memenuhi kondisi filter.

      • bit_match: menggunakan ekspresi a&b untuk menanyakan pengguna yang memenuhi Kondisi a dan Kondisi b.

    • Gunakan klausa HAVING.

      SELECT uid FROM (
          SELECT uid, bit_or(bit_construct(
            a := (action='click' AND page='Shopping cart'),
            b := (action='view' AND page='Favorites'))) 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'))))
      ) t