BITMAP

    注:当数据量很大时,最好为高频率的 bitmap_union 查询建立对应的 rollup 表

    TO_BITMAP(expr) : 将 0 ~ 18446744073709551615 的 unsigned bigint 转为 bitmap

    BITMAP_EMPTY(): 生成空 bitmap 列,用于 insert 或导入的时填充默认值

    BITMAP_HASH(expr): 将任意类型的列通过 Hash 的方式转为 bitmap

    1. cat data | curl --location-trusted -u user:passwd -T - -H "columns: dt,page,user_id, user_id=to_bitmap(user_id)" http://host:8410/api/test/testDb/_stream_load
    1. cat data | curl --location-trusted -u user:passwd -T - -H "columns: dt,page,user_id, user_id=bitmap_hash(user_id)" http://host:8410/api/test/testDb/_stream_load

    id2 的列类型是 bitmap

      1. INSERT INTO bitmap_table1 (id, id2) VALUES (1001, to_bitmap(1000)), (1001, to_bitmap(2000));

      id2 的列类型是 bitmap

      1. insert into bitmap_table1 select id, bitmap_union(id2) from bitmap_table2 group by id;

      id2 的列类型是 int

      id2 的列类型是 String

      1. insert into bitmap_table1 select id, bitmap_hash(id_string) from table;

      BITMAP_UNION(expr) : 计算输入 Bitmap 的并集,返回新的bitmap

      BITMAP_UNION_COUNT(expr): 计算输入 Bitmap 的并集,返回其基数,和 BITMAP_COUNT(BITMAP_UNION(expr)) 等价。目前推荐优先使用 BITMAP_UNION_COUNT ,其性能优于 BITMAP_COUNT(BITMAP_UNION(expr))

      INTERSECT_COUNT(bitmap_column_to_count, filter_column, filter_values ...) : 计算满足 filter_column 过滤条件的多个 bitmap 的交集的基数值。 bitmap_column_to_count 是 bitmap 类型的列,filter_column 是变化的维度列,filter_values 是维度取值列表

      下面的 SQL 以上面的 pv_bitmap table 为例:

      计算 user_id 的去重值:

      1. select bitmap_union_count(user_id) from pv_bitmap;

      计算 id 的去重值:

      1. select bitmap_union_int(id) from pv_bitmap;

      计算 user_id 的 留存: