函数接收一行记录或者一个BitMap64
对象,返回一行结果。
序号 | 函数接口 | 参数说明 | 返回值 | 功能释义 |
---|---|---|---|---|
1 | arrayToBitmap([x1, …]) | UIntN类型的数组 | BitMap64对象 | 通过一个数组构造一个bitmap对象 |
2 | bitmapToArray(bitmap) | 一个BitMap64对象 | UInt64数组 | 将一个bimap对象转换为数组格式 |
3 | bitmapAnd(bitmap1, bitmap2) | 两个BitMap64对象 | BitMap64对象 | bitmap的交运算 |
4 | bitmapOr(bitmap1, bitmap2) | 两个BitMap64对象 | BitMap64对象 | bitmap的并运算 |
5 | bitmapXor(bitmap1, bitmap2) | 两个BitMap64对象 | BitMap64对象 | bitmap的异或运算 |
6 | bitmapAndnot(bitmap1, bitmap2) | 两个BitMap64对象 | BitMap64对象 | bitmap的差运算 |
7 | bitmapCardinality(bitmap) | 一个BitMap64对象 | UInt64数值 | bitmap中元素的个数 |
8 | bitmapMin(bitmap) | 一个BitMap64对象 | UInt64数值 | bitmap中最小的元素 |
9 | bitmapMax(bitmap) | 一个BitMap64对象 | UInt64数值 | bitmap中最大的元素 |
10 | bitmapAndCardinality | 两个BitMap64对象 | UInt64数值 | bitmap的交运算之后的元素个数 |
11 | bitmapOrCardinality | 两个BitMap64对象 | UInt64数值 | bitmap的并运算之后的元素个数 |
12 | bitmapXorCardinality | 两个BitMap64对象 | UInt64数值 | bitmap的异或运算之后的元素个数 |
13 | bitmapAndnotCardinality | 两个BitMap64对象 | UInt64数值 | bitmap的差运算之后的元素个数 |
14 | bitmapContains(bitmap, integer) | 一个BitMap64对象 | UInt8枚举 | 检查bitmap中是否包含指定元素 |
15 | bitmapHasAll | 两个BitMap64对象 | UInt8枚举 | 检查sub_bitmap是否是bitmap的子集 |
16 | bitmapHasAny | 两个BitMap64对象 | UInt8枚举 | 检查两个bitmap是否存在交集 |
17 | bitmapSubsetInRange | 一个BitMap64对象,两个UIntN数字,标识取值范围 | BitMap64对象 | 检查并返回bitmap中符合给定数值大小范围的值组成的bitmap。 |
18 | bitmapSubsetLimit | 一个BitMap64对象,两个UIntN数字,标识下标启示范围,和子集大小 | BitMap64对象 | 检查并返回由bitmap中指定位置开始的指定数量的元素组成的bitmap |
这些函数主要是对ClickHouse社区相关函数的兼容,详见:
https://clickhouse.tech/docs/en/sql-reference/functions/bitmap-functions/
函数接收多行记录,进行聚合操作,返回一行结果。
序号 | 函数接口 | 参数说明 | 返回值 | 功能释义 |
---|---|---|---|---|
1 | bitmapColumnAnd | BitMap64类型的一列数据 | BitMap64对象 | 接收一个bimap列,该列所有bitmap做交运算 |
2 | bitmapColumnOr | BitMap64类型的一列数据 | BitMap64对象 | 接收一个bimap列,该列所有bitmap做并运算 |
3 | bitmapColumnXor | BitMap64类型的一列数据 | BitMap64对象 | 接收一个bimap列,该列所有bitmap做异或运算 |
4 | bitmapColumnCardinality | BitMap64类型的一列数据 | UInt64数值 | 接收一个bimap列,该列所有bitmap做并运算,返回最终结果bitmap的元素个数 |
5 | bitmapColumnHas | BitMap64类型的一列数据 | UInt8枚举 | 接收一个bimap列,检查该列是否包含指定元素 |
这种函数有两个括号传递参数:
表达式中的算子为交并差。
交集: 1&2
并集:1|2,另一种 1,2
差集:1~2
序号 | 函数接口 | 参数说明 | 返回值 | 功能释义 |
---|---|---|---|---|
1 | bitmapCount | expression是与或非表达式,is_bitmap_execute用于BITMAP_EXECUTE模型,没有默认为0 | UInt64数值 | 对于bitmap_column中的每一行,取其tag,并依据expression指定的计算方式进行bitmap运算,返回最终bitmap中元素个数 |
2 | bitmapMultiCount | expression是与或非表达式 | UInt64数组 | 对于bitmap_column中的每一行,取其tag,并依据每个expr指定的计算方式进行多组bitmap运算,返回每组expr计算的结果bitmap中元素个数 |
3 | bitmapMultiCountWithDate | expression是与或非表达式 | UInt64数据 | 再bitmapMultiCount的基础上,可以分辨出不同的日期。 |
4 | bitmapExtract | expression是与或非表达式 | BitMap64对象 | 对于bitmap_column中的每一行,取其tag,并依据expression指定的计算方式进行bitmap运算,返回最终计算结果的bitmap |
tag_idx一般是用户指定,通常用非负整数比较好,如toInt32(1) as tag_idx
。负数的话,请使用较小负数(如-100),防止对计算结果产生不必要的干扰(内部实现相关)。如果存在相同tag_idx的多行数据,聚合函数会自动把多行bitmap通过OR运算合并为一个,参与计算。最终计算时,一个tag_idx对应一个bitmap。
select * from system.bitengine where xxxxx