全部产品
Search
文档中心

Realtime Compute for Apache Flink:Fungsi BITMAP

更新时间:Jan 10, 2026

Topik ini menjelaskan tipe data BITMAP dan fungsi terkait yang didukung oleh Realtime Compute for Apache Flink.

Batasan

  • Hanya Ververica Runtime (VVR) 11.5 dan versi Realtime Compute for Apache Flink yang lebih baru yang mendukung tipe data BITMAP beserta fungsi terkaitnya.

Tipe data BITMAP

BITMAP adalah tipe data yang menyimpan himpunan bilangan bulat tak bertanda 32-bit. Tipe ini menggunakan format kompresi rotasi otomatis berdasarkan standar RoaringBitmap, sehingga ideal untuk penyimpanan efisien, deduplikasi presisi tinggi, serta operasi himpunan pada data berskala besar.

Format serialisasi standarnya memungkinkan interoperabilitas biner yang lancar dengan sistem eksternal.

Rekomendasi penggunaan

Penting

Saat menggunakan fungsi agregat BITMAP, aktifkan MiniBatch atau gunakan agregasi window untuk mengurangi overhead akses state dan meningkatkan performa secara signifikan.

  • Fungsi agregat BITMAP memberikan performa terbaik dengan input Append-Only. Performanya menurun drastis dengan input Retraction; hindari agregasi GroupBy bertingkat pada BITMAP.

  • BITMAP saat ini hanya mendukung tipe INT (bilangan bulat 32-bit). Untuk menyimpan tipe data lain:

    • Untuk tipe BIGINT (bilangan bulat 64-bit), buat kamus untuk memetakan nilai ke tipe INT berdasarkan karakteristik data atau gunakan bucketing untuk penyimpanan.

    • Untuk tipe non-bilangan bulat, buat kamus untuk memetakan nilai ke tipe INT.

  • Tipe BITMAP melakukan kompresi jauh lebih efektif pada data kontinu dan padat dibandingkan data diskrit dan jarang. Gunakan pemetaan data untuk meningkatkan efisiensi kompresi BITMAP.

Daftar fungsi

Fungsi BITMAP yang didukung terbagi dalam empat kategori utama: pembentukan bitmap, operasi logika, informasi statistik, dan konversi format.

Fungsi agregat

SQL

Table API

Input type

Output type

Description

BITMAP_BUILD_AGG(value)

value.bitmapBuildAgg()

INT

BITMAP

Mengagregasi bilangan bulat 32-bit ke dalam sebuah bitmap.

BITMAP_AND_AGG(bitmap)

bitmap.bitmapAndAgg()

BITMAP

BITMAP

Mengagregasi irisan (AND) dari beberapa bitmap.

BITMAP_OR_AGG(bitmap)

bitmap.bitmapOrAgg()

BITMAP

BITMAP

Mengagregasi gabungan (OR) dari beberapa bitmap.

BITMAP_XOR_AGG(bitmap)

bitmap.bitmapXorAgg()

BITMAP

BITMAP

Mengagregasi exclusive OR (XOR) dari beberapa bitmap.

BITMAP_BUILD_CARDINALITY_AGG(value)

value.bitmapBuildCardinalityAgg()

INT

BIGINT

Mengagregasi bilangan bulat 32-bit ke dalam sebuah bitmap dan mengembalikan cardinalitas 64-bit-nya.

BITMAP_AND_CARDINALITY_AGG(bitmap)

bitmap.bitmapAndCardinalityAgg()

BITMAP

BIGINT

Mengagregasi irisan (AND) dari beberapa bitmap dan mengembalikan cardinalitas 64-bit-nya.

BITMAP_OR_CARDINALITY_AGG(bitmap)

bitmap.bitmapOrCardinalityAgg()

BITMAP

BIGINT

Mengagregasi gabungan (OR) dari beberapa bitmap dan mengembalikan cardinalitas 64-bit-nya.

BITMAP_XOR_CARDINALITY_AGG(bitmap)

bitmap.bitmapXorCardinalityAgg()

BITMAP

BIGINT

Mengagregasi exclusive OR (XOR) dari beberapa bitmap dan mengembalikan cardinalitas 64-bit-nya.

Catatan

Pada skenario statistik cardinalitas, jika Anda tidak memerlukan bitmap spesifiknya, gunakan BITMAP_XX_CARDINALITY_AGG() daripada BITMAP_CARDINALITY(BITMAP_XX_AGG()). Kedua fungsi menghasilkan output yang sama, tetapi yang pertama menawarkan performa lebih baik.

Fungsi skalar

SQL

Table API

Input type

Output type

Description

BITMAP_BUILD(array)

array.bitmapBuild()

ARRAY<INT>

BITMAP

Membuat bitmap dari array bilangan bulat 32-bit.

Jika parameter bernilai NULL, fungsi ini mengembalikan NULL.

BITMAP_CARDINALITY(bitmap)

bitmap.bitmapCardinality()

BITMAP

BIGINT

Mengembalikan cardinalitas 64-bit dari sebuah bitmap.

Jika parameter bernilai NULL, fungsi ini mengembalikan NULL.

BITMAP_AND(bitmap1, bitmap2)

bitmap1.bitmapAnd(bitmap2)

BITMAP, BITMAP

BITMAP

Menghitung irisan (AND) dari dua bitmap.

Jika salah satu parameter bernilai NULL, fungsi ini mengembalikan NULL.

BITMAP_OR(bitmap1, bitmap2)

bitmap1.bitmapOr(bitmap2)

BITMAP, BITMAP

BITMAP

Menghitung gabungan (OR) dari dua bitmap.

Jika salah satu parameter bernilai NULL, fungsi ini mengembalikan NULL.

BITMAP_XOR(bitmap1, bitmap2)

bitmap1.bitmapXor(bitmap2)

BITMAP, BITMAP

BITMAP

Menghitung exclusive OR (XOR) dari dua bitmap.

Jika salah satu parameter bernilai NULL, fungsi ini mengembalikan NULL.

BITMAP_ANDNOT(bitmap1, bitmap2)

bitmap1.bitmapAndnot(bitmap2)

BITMAP, BITMAP

BITMAP

Menghitung selisih (AND NOT) dari dua bitmap.

Jika salah satu parameter bernilai NULL, fungsi ini mengembalikan NULL.

BITMAP_FROM_BYTES(bytes)

bytes.bitmapFromBytes()

BYTES

BITMAP

Mengubah array byte menjadi bitmap. Fungsi ini mengikuti format yang ditentukan dalam spesifikasi format RoaringBitmap 32-bit.

Jika parameter bernilai NULL, fungsi ini mengembalikan NULL.

BITMAP_TO_BYTES(bitmap)

bitmap.bitmapToBytes()

BITMAP

BYTES

Mengubah bitmap menjadi array byte. Fungsi ini mengikuti format yang ditentukan dalam spesifikasi format RoaringBitmap 32-bit.

Jika parameter bernilai NULL, fungsi ini mengembalikan NULL.

BITMAP_TO_ARRAY(bitmap)

bitmap.bitmapToArray()

BITMAP

ARRAY<INT>

Mengubah bitmap menjadi array bilangan bulat 32-bit. Nilai-nilainya diurutkan berdasarkan Integer.compareUnsigned.

Jika parameter bernilai NULL, fungsi ini mengembalikan NULL.

BITMAP_TO_STRING(bitmap)

bitmap.bitmapToString()

BITMAP

STRING

Mengubah bitmap menjadi string. Nilai-nilainya diurutkan berdasarkan Integer.compareUnsigned. Jika string terlalu panjang, maka dipotong dan diakhiri dengan .... Contohnya:

  • {}, {1,2,3,4,5}

  • Nilai negatif (ditransformasi ke unsigned): {0,1,4294967294,4294967295}

  • String panjang: {1,2,3,...}

Jika parameter bernilai NULL, fungsi ini mengembalikan NULL.