メインコンテンツまでスキップ
バージョン: Latest-3.4

BITMAP

BITMAP は、count distinct を高速化するためによく使用されます。HyperLogLog (HLL) に似ていますが、count distinct においてより正確です。BITMAP は、より多くのメモリとディスクリソースを消費します。INT データの集計のみをサポートします。文字列データに bitmap を適用したい場合は、低カーディナリティの辞書を使用してデータをマッピングする必要があります。

このトピックでは、BITMAP カラムを作成し、そのカラムのデータを集計するために bitmap 関数を使用する簡単な例を提供します。関数の詳細な定義やその他の Bitmap 関数については、「Bitmap functions」を参照してください。

テーブルを作成する

  • 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 "Tag name",
    `tagvalue` varchar(65533) NOT NULL COMMENT "Tag value",
    `userid` bitmap NOT NULL COMMENT "User ID")
    ENGINE=OLAP
    PRIMARY KEY(`tagname`, `tagvalue`)
    COMMENT "OLAP"
    DISTRIBUTED BY HASH(`tagname`);

BITMAP カラムにデータを挿入する前に、まず to_bitmap() 関数を使用してデータを変換する必要があります。

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