跳到主要内容

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);
注:10002000030000等整形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 |
+-----------------------------------------------------------------------------------------------------------+