位图函数
位图可以通过两种方式构建。第一种是通过聚合函数 groupBitmap 和 -State
构建的,另一种是从 Array 对象构建位图。
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(如果类型 >= 8 位则返回 UINT64_MAX)。
语法
参数
bitmap
– 位图对象。
示例
结果:
bitmapMax
计算位图中设置的最大位,或者如果位图为空则返回 0。
语法
参数
bitmap
– 位图对象。
示例
结果:
bitmapTransform
在位图中至多替换 N 位。第 i 个替换位的旧值和新值分别由 from_array[i]
和 to_array[i]
给出。
结果依赖于 from_array
和 to_array
的数组顺序。
语法
参数
bitmap
– 位图对象。from_array
– UInt32 数组。对于 idx 在范围 [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
– 位图对象。
示例
结果: