位图函数
位图可以通过两种方式构建。第一种方式是通过聚合函数 groupBitmap
与 -State
进行构建,另一种方式是从数组对象构建位图。
bitmapBuild
从无符号整数数组构建位图。
语法
参数
array
– 无符号整数数组。
示例
bitmapToArray
将位图转换为整数数组。
语法
参数
bitmap
– 位图对象。
示例
结果:
bitmapSubsetInRange
返回位图中位于值区间内的子集。
语法
参数
示例
结果:
bitmapSubsetLimit
返回具有最小位值 range_start
并且最多包含 cardinality_limit
元素的位图子集。
语法
参数
示例
结果:
subBitmap
返回位图的一个子集,从位置 offset
开始。返回的位图最大基数为 cardinality_limit
。
语法
参数
示例
结果:
bitmapContains
检查位图是否包含某个元素。
参数
返回值
示例
结果:
bitmapHasAny
检查两个位图是否相交。
如果 bitmap2
恰好包含一个元素,考虑使用 bitmapContains,因为它的效率更高。
语法
参数
bitmap1
– 位图对象 1。bitmap2
– 位图对象 2。
返回值
1
,如果bitmap1
和bitmap2
至少有一个共享元素。0
,否则。
示例
结果:
bitmapHasAll
如果第一个位图包含第二个位图的所有元素,则返回 1,否则返回 0。 如果第二个位图为空,则返回 1。
另请参见 hasAll(array, array)
。
语法
参数
bitmap1
– 位图对象 1。bitmap2
– 位图对象 2。
示例
结果:
bitmapCardinality
返回位图的基数。
语法
参数
bitmap
– 位图对象。
示例
结果:
bitmapMin
计算位图中最小的位值,如果位图为空,则返回 UINT32_MAX。
语法
参数
bitmap
– 位图对象。
示例
结果:
bitmapMax
计算位图中最大的位值,如果位图为空,则返回 0。
语法
参数
bitmap
– 位图对象。
示例
结果:
bitmapTransform
在位图中替换最多 N 位。第 i 个替换位的旧值和新值由 from_array[i]
和 to_array[i]
给出。
结果依赖于 from_array
和 to_array
的数组排序。
语法
参数
bitmap
– 位图对象。from_array
– UInt32 数组。对于索引在范围 [0, from_array.size()) 中的值,如果位图包含 from_array[idx],则将其替换为 to_array[idx]。to_array
– 与from_array
相同大小的 UInt32 数组。
示例
结果:
bitmapAnd
计算两个位图的逻辑与。
语法
参数
bitmap
– 位图对象。
示例
结果:
bitmapOr
计算两个位图的逻辑或。
语法
参数
bitmap
– 位图对象。
示例
结果:
bitmapXor
对两个位图进行异或操作。
语法
参数
bitmap
– 位图对象。
示例
结果:
bitmapAndnot
计算两个位图的逻辑与并对结果取反。
语法
参数
bitmap
– 位图对象。
示例
结果:
bitmapAndCardinality
返回两个位图逻辑与的基数。
语法
参数
bitmap
– 位图对象。
示例
结果:
bitmapOrCardinality
返回两个位图逻辑或的基数。
参数
bitmap
– 位图对象。
示例
结果:
bitmapXorCardinality
返回两个位图异或的基数。
参数
bitmap
– 位图对象。
示例
结果:
bitmapAndnotCardinality
返回两个位图的 AND-NOT 操作的基数。
参数
bitmap
– 位图对象。
示例
结果: