メインコンテンツまでスキップ

BITMAP

ビットマップ

ビットマップは、重複をカウントする際によく使用されます。HyperLogLog(HLL)よりも重複の数をより正確にカウントすることができます。ビットマップはより多くのメモリとディスクリソースを消費します。また、ビットマップはINTデータの集約のみをサポートしています。文字列データにビットマップを適用する場合は、低基数辞書を使用してデータをマッピングする必要があります。

このトピックでは、BITMAP列を作成し、ビットマップ関数を使用してその列のデータを集約する方法について、単純な例を提供します。関数の詳細な定義やその他のビットマップ関数については、「ビットマップ関数」を参照してください。

テーブルの作成

  • user_id 列のデータ型がBITMAPである集約テーブルを作成し、データを集約するためにbitmap_union()関数を使用します。

    CREATE TABLE `pv_bitmap` (
    `dt` int(11) NULL COMMENT "",
    `page` varchar(10) NULL COMMENT "",
    `user_id` bitmap BITMAP_UNION NULL COMMENT ""
    ) ENGINE=OLAP
    AGGREGATE KEY(`dt`, `page`)
    COMMENT "OLAP"
    DISTRIBUTED BY HASH(`dt`);
  • userid 列のデータ型がBITMAPである主キーテーブルを作成します。

    CREATE TABLE primary_bitmap (
    `tagname` varchar(65533) NOT NULL COMMENT "タグ名",
    `tagvalue` varchar(65533) NOT NULL COMMENT "タグ値",
    `userid` bitmap NOT NULL COMMENT "ユーザーID")
    ENGINE=OLAP
    PRIMARY KEY(`tagname`, `tagvalue`)
    COMMENT "OLAP"
    DISTRIBUTED BY HASH(`tagname`);

ビットマップ列にデータを挿入する前に、まずto_bitmap()関数を使用してデータを変換する必要があります。

BITMAPの使用方法の詳細については、例えばBITMAPデータをテーブルにロードする方法については、bitmapを参照してください。