ORTHOGONAL_BITMAP_EXPR_CALCULATE
描述
ORTHOGONAL_BITMAP_EXPR_CALCULATE 函数返回对 Bitmap 表达式进行交并差计算后的集合
语法
ORTHOGONAL_BITMAP_EXPR_CALCULATE(<bitmap_column>, <column_to_filter>, <input_string>)
参数说明
参数 | 说明 |
---|---|
bitmap_column | 需要获取值的 Bitmap 类型表达式 |
column_to_filter | 过滤的维度列,即计算的 Key 列 |
input_string | 计算表达式字符串,含义是依据 Key 列进行 Bitmap 交并差集表达式计算,表达式支持的计算符:& 代表交集计算,| 代表并集计算,- 代表差集计算, ^ 代表异或计算,\ 代表转义字符 |
返回值
返回 BITMAP 类型的集合。
举例
select bitmap_count(orthogonal_bitmap_expr_calculate(user_id, tag, '(833736|999777)&(1308083|231207)&(1000|20000-30000)')) from user_tag_bitmap where tag in (833736,999777,130808,231207,1000,20000,30000);
注:1000、20000、30000等整形tag,代表用户不同标签
+-------------------------------------------------------------------------------------------------------------------------------+
| bitmap_count(orthogonal_bitmap_expr_calculate_count(`user_id`, `tag`, '(833736|999777)&(1308083|231207)&(1000|20000-30000)')) |
+-------------------------------------------------------------------------------------------------------------------------------+
| 1000 |
+-------------------------------------------------------------------------------------------------------------------------------+
select bitmap_count(orthogonal_bitmap_expr_calculate(user_id, tag, '(A:a/b|B:2\\-4)&(C:1-D:12)&E:23')) from user_str_tag_bitmap where tag in ('A:a/b', 'B:2-4', 'C:1', 'D:12', 'E:23');
注:'A:a/b', 'B:2-4'等是字符串类型tag,代表用户不同标签, 其中'B:2-4'需要转义成'B:2\\-4'
+-----------------------------------------------------------------------------------------------------------+
| bitmap_count(orthogonal_bitmap_expr_calculate_count(`user_id`, `tag`, '(A:a/b|B:2\\-4)&(C:1-D:12)&E:23')) |
+-----------------------------------------------------------------------------------------------------------+
| 30 |
+-----------------------------------------------------------------------------------------------------------+