Roaring Bitmap操作符
8.1.3集群版本开始,DWS支持高效的位图处理操作符,位图操作符在数据库中用于高效地进行集合运算,如交集、并集、差集和异或,通过合理使用位图操作符,可以显著提升数据库的处理效率,满足各种复杂的数据处理需求。适用于需要频繁进行集合运算的场景,如数据挖掘、机器学习中的特征工程,以及需要快速数据筛选和聚合的场景。
- 9.1.1.100集群版本开始支持64位整数的位图。
- 9.1.1.100集群版本中的|、-、@>、<@位图操作符,使用bigint作为输入时,不支持使用nvarchar2类型直接作为bigint输入,需要使用::bigint操作进行数据类型强转换。例如:
select '2022'::nvarchar2::bigint | '\x3a300000010000000000020010000000010002000300'::roaringbitmap;
?column?
----------------------------------------------------
\x3a300000010000000000030010000000010002000300e607
- 9.1.1.200及以上集群版本中支持使用nvarchar2类型直接作为bigint输入,无需再进行强转换。
|
操作符 |
描述 |
返回值类型 |
示例 |
||||
|---|---|---|---|---|---|---|---|
|
= |
比较两个roaringbitmap是否相等。 |
bool |
两个位图完全相同,返回t,表示它们相等。
两个位图包含的元素不同,返回f,表示它们不相等。
|
||||
|
<> |
比较两个roaringbitmap是否不相等。 |
bool |
两个位图完全相同,返回f,表示它们相等。
两个位图包含的元素不同,返回t,表示它们不相等
|
||||
|
& |
计算两个roaringbitmap交集以后的结果。 |
roaringbitmap |
将两个位图交集后的结果,返回共同元素{2,3}。
|
||||
|
| |
计算两个roaringbitmap并集后的结果。 |
roaringbitmap |
计算两个位图的并集结果,返回所有不重复的元素{1,2,3}。
|
||||
|
| |
计算一个roaringbitmap增加一个元素后的结果。 |
roaringbitmap |
计算包含元素{2,3}的位图添加元素4后的结果,返回{2,3,4}。
|
||||
|
# |
计算两个roaringbitmap进行异或后的结果。 |
roaringbitmap |
计算两个位图的异或,返回两个集合中不相同的元素结果{1}。
|
||||
|
- |
计算属于第一个roaringbitmap,但是不属于第二个roaringbitmap的结果集。 |
roaringbitmap |
计算属于第一个位图{2,3,4}的元素,但这些元素不在第二个位图{1,2,3}中,返回结果 {4} ,表示元素4只在第一个位图。
|
||||
|
- |
从roaringbitmap中去掉一个指定ID后的结果集。 |
roaringbitmap |
从位图{2,3,4}中去掉一个指定元素3,返回结果集{2,4}。
|
||||
|
@> |
操作符前面的roaringbitmap是否包含后面的roaringbitmap。 |
bool |
判断操作符@>前面的位图{2,3,4}是否包含后面的位图{2,3},返回t,表示包含。
判断操作符@>前面的位图{2,3,4}是否包含后面的位图5,返回f,表示不包含。
|
||||
|
<@ |
操作符前面的roaringbitmap是否被后面的roaringbitmap包含。 |
bool |
判断操作符<@前面的4是否被后面的位图{2,3,4}包含,返回t,表示包含。
判断操作符<@前面的位图{2,3,4}是否被后面的位图{2,3}包含,返回f,表示不包含。
|
||||
|
&& |
两个roaringbitmap如果有交集返回true,否则返回false。 |
bool |
判断两个位图是否有交集,返回t,表示存在交集{2,3}。
判断两个位图是否有交集,返回f,表示不存在任何交集。
|