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を参照してください。