すべてのプロダクト
Search
ドキュメントセンター

Realtime Compute for Apache Flink:BITMAP 関数

最終更新日:Jan 10, 2026

このトピックでは、Realtime Compute for Apache Flink でサポートされている BITMAP データ型と関連関数について説明します。

制限事項

  • Realtime Compute for Apache Flink の Ververica Runtime (VVR) 11.5 以降のバージョンのみが、BITMAP データ型と関連関数をサポートします。

BITMAP データ型

BITMAP は、32 ビットの符号なし整数のセットを格納するデータ型です。RoaringBitmap 標準に基づく自動回転圧縮フォーマットを使用します。このフォーマットは、大規模データに対する効率的なストレージ、正確な重複排除、およびセット操作に最適です。

標準化されたシリアル化フォーマットにより、外部システムとのシームレスなバイナリレベルでの相互運用性が可能になります。

注意事項

重要

BITMAP 集計関数を使用する場合は、MiniBatch を有効にするか、ウィンドウ集約を使用してください。この方法により、ステートアクセスのオーバーヘッドが削減され、パフォーマンスが大幅に向上します。

  • BITMAP 集計関数は、Append-Only 入力で最高のパフォーマンスを発揮します。Retraction 入力ではパフォーマンスが大幅に低下します。BITMAP に対する複数レベルの GroupBy 集約は避けてください。

  • 現在、BITMAP は INT 型 (32 ビット整数) のみをサポートしています。他のデータ型を格納するには、次の方法があります。

    • BIGINT 型 (64 ビット整数) の場合、データの特徴に基づいて値を INT 型にマッピングする辞書を作成するか、バケット化を使用して格納できます。

    • 整数以外の型の場合、値を INT 型にマッピングする辞書を作成できます。

  • BITMAP 型は、離散的で疎なデータよりも、連続的で密なデータをはるかに効果的に圧縮します。データマッピングを使用して、BITMAP の圧縮効率を向上させることができます。

関数リスト

サポートされている BITMAP 関数は、ビットマップ構築、論理演算、統計情報、フォーマット変換の 4 つの主要なカテゴリに分類されます。

集計関数

SQL

Table API

入力型

出力型

説明

BITMAP_BUILD_AGG(value)

value.bitmapBuildAgg()

INT

BITMAP

32 ビット整数を集約してビットマップを構築します。

BITMAP_AND_AGG(bitmap)

bitmap.bitmapAndAgg()

BITMAP

BITMAP

複数のビットマップの積集合 (AND) を集約します。

BITMAP_OR_AGG(bitmap)

bitmap.bitmapOrAgg()

BITMAP

BITMAP

複数のビットマップの和集合 (OR) を集約します。

BITMAP_XOR_AGG(bitmap)

bitmap.bitmapXorAgg()

BITMAP

BITMAP

複数のビットマップの排他的論理和 (XOR) を集約します。

BITMAP_BUILD_CARDINALITY_AGG(value)

value.bitmapBuildCardinalityAgg()

INT

BIGINT

32 ビット整数を集約してビットマップを構築し、その 64 ビットのカーディナリティを返します。

BITMAP_AND_CARDINALITY_AGG(bitmap)

bitmap.bitmapAndCardinalityAgg()

BITMAP

BIGINT

複数のビットマップの積集合 (AND) を集約し、その 64 ビットのカーディナリティを返します。

BITMAP_OR_CARDINALITY_AGG(bitmap)

bitmap.bitmapOrCardinalityAgg()

BITMAP

BIGINT

複数のビットマップの和集合 (OR) を集約し、その 64 ビットのカーディナリティを返します。

BITMAP_XOR_CARDINALITY_AGG(bitmap)

bitmap.bitmapXorCardinalityAgg()

BITMAP

BIGINT

複数のビットマップの排他的論理和 (XOR) を集約し、その 64 ビットのカーディナリティを返します。

説明

カーディナリティ統計のシナリオでは、特定のビットマップが必要ない場合、BITMAP_CARDINALITY(BITMAP_XX_AGG()) の代わりに BITMAP_XX_CARDINALITY_AGG() を使用してください。これらの関数は同じ結果を生成しますが、前者の方がパフォーマンスが優れています。

スカラー関数

SQL

Table API

入力型

出力型

説明

BITMAP_BUILD(array)

array.bitmapBuild()

ARRAY<INT>

BITMAP

32 ビット整数の配列からビットマップを作成します。

パラメーターが NULL の場合、この関数は NULL を返します。

BITMAP_CARDINALITY(bitmap)

bitmap.bitmapCardinality()

BITMAP

BIGINT

ビットマップの 64 ビットのカーディナリティを返します。

パラメーターが NULL の場合、この関数は NULL を返します。

BITMAP_AND(bitmap1, bitmap2)

bitmap1.bitmapAnd(bitmap2)

BITMAP, BITMAP

BITMAP

2 つのビットマップの積集合 (AND) を計算します。

いずれかのパラメーターが NULL の場合、この関数は NULL を返します。

BITMAP_OR(bitmap1, bitmap2)

bitmap1.bitmapOr(bitmap2)

BITMAP, BITMAP

BITMAP

2 つのビットマップの和集合 (OR) を計算します。

いずれかのパラメーターが NULL の場合、この関数は NULL を返します。

BITMAP_XOR(bitmap1, bitmap2)

bitmap1.bitmapXor(bitmap2)

BITMAP, BITMAP

BITMAP

2 つのビットマップの排他的論理和 (XOR) を計算します。

いずれかのパラメーターが NULL の場合、この関数は NULL を返します。

BITMAP_ANDNOT(bitmap1, bitmap2)

bitmap1.bitmapAndnot(bitmap2)

BITMAP, BITMAP

BITMAP

2 つのビットマップの差集合 (AND NOT) を計算します。

いずれかのパラメーターが NULL の場合、この関数は NULL を返します。

BITMAP_FROM_BYTES(bytes)

bytes.bitmapFromBytes()

BYTES

BITMAP

バイト配列をビットマップに変換します。この関数は、32-bit RoaringBitmap format specification で定義されたフォーマットに従います。

パラメーターが NULL の場合、この関数は NULL を返します。

BITMAP_TO_BYTES(bitmap)

bitmap.bitmapToBytes()

BITMAP

BYTES

ビットマップをバイト配列に変換します。この関数は、32-bit RoaringBitmap format specification で定義されたフォーマットに従います。

パラメーターが NULL の場合、この関数は NULL を返します。

BITMAP_TO_ARRAY(bitmap)

bitmap.bitmapToArray()

BITMAP

ARRAY<INT>

ビットマップを 32 ビット整数の配列に変換します。値は Integer.compareUnsigned によってソートされます。

パラメーターが NULL の場合、この関数は NULL を返します。

BITMAP_TO_STRING(bitmap)

bitmap.bitmapToString()

BITMAP

STRING

ビットマップを文字列に変換します。値は Integer.compareUnsigned によってソートされます。文字列が長すぎる場合は切り捨てられ、末尾に ... が付きます。例:

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

  • 負の値 (符号なしに変換): {0,1,4294967294,4294967295}

  • 長い文字列: {1,2,3,...}

パラメーターが NULL の場合、この関数は NULL を返します。