位图函数
位图可以通过两种方式构造。第一种方式是通过聚合函数 groupBitmap 与 -State
构造,另一种方式是从数组对象构造位图。
bitmapAnd
引入于:v20.1
计算两个位图的逻辑与(AND)。
语法
参数
bitmap1
— 第一个位图对象。AggregateFunction(groupBitmap, T)
. -bitmap2
— 第二个位图对象。AggregateFunction(groupBitmap, T)
.
返回值
返回包含两个输入位图中均存在的位的位图 AggregateFunction(groupBitmap, T)
示例
用法示例
bitmapAndCardinality
引入于:v20.1
返回两个位图的逻辑与(AND)的基数。
语法
参数
bitmap1
— 第一个位图对象。AggregateFunction(groupBitmap, T)
. -bitmap2
— 第二个位图对象。AggregateFunction(groupBitmap, T)
.
返回值
返回两个位图交集中的设置位的数量 UInt64
示例
用法示例
bitmapAndnot
引入于:v20.1
计算两个位图的逻辑与并取反结果(AND-NOT)。
语法
参数
bitmap1
— 第一个位图对象。AggregateFunction(groupBitmap, T)
. -bitmap2
— 第二个位图对象。AggregateFunction(groupBitmap, T)
.
返回值
返回一个位图,其中包含第一个位图中设置的位,但不包含第二个位图中的位 AggregateFunction(groupBitmap, T)
示例
用法示例
bitmapAndnotCardinality
引入于:v20.1
返回两个位图的 AND-NOT 操作的基数。
语法
参数
bitmap1
— 第一个位图对象。AggregateFunction(groupBitmap, T)
. -bitmap2
— 第二个位图对象。AggregateFunction(groupBitmap, T)
.
返回值
返回 bitmap1 AND-NOT bitmap2
结果中的设置位的数量 UInt64
示例
用法示例
bitmapBuild
引入于:v20.1
从无符号整数数组构建位图。它是函数 bitmapToArray
的反向操作。
语法
参数
array
— 无符号整数数组。Array(UInt*)
返回值
返回提供的数组构建的位图 AggregateFunction(groupBitmap, T)
示例
用法示例
bitmapCardinality
引入于:v20.1
返回位图中设置的位的数量(基数)。
语法
参数
bitmap
— 位图对象。AggregateFunction(groupBitmap, T)
.
返回值
返回位图中设置的位的数量 UInt64
示例
用法示例
bitmapContains
引入于:v20.1
检查位图是否包含特定元素。
语法
参数
bitmap
— 位图对象。AggregateFunction(groupBitmap, T)
. -value
— 待检查的元素。 (U)Int8/16/32/64
返回值
如果位图包含指定值,则返回 1
,否则返回 0
UInt8
示例
用法示例
bitmapHasAll
引入于:v20.1
检查第一个位图是否包含第二个位图的所有设置位。
语法
参数
bitmap1
— 第一个位图对象。AggregateFunction(groupBitmap, T)
. -bitmap2
— 第二个位图对象。AggregateFunction(groupBitmap, T)
.
返回值
如果第二个位图的所有设置位都存在于第一个位图中,则返回 1
,否则返回 0
UInt8
示例
用法示例
bitmapHasAny
引入于:v20.1
检查第一个位图是否包含第二个位图的任何设置位。
语法
参数
bitmap1
— 第一个位图对象。AggregateFunction(groupBitmap, T)
. -bitmap2
— 第二个位图对象。AggregateFunction(groupBitmap, T)
.
返回值
如果第二个位图的任何位存在于第一个位图中,则返回 1
,否则返回 0
UInt8
示例
用法示例
bitmapMax
引入于:v20.1
返回位图中设置的最大位的位置,如果位图为空,则返回 0
。
语法
参数
bitmap
— 位图对象。AggregateFunction(groupBitmap, T)
.
返回值
返回位图中设置的最大位的位置,否则返回 0
UInt64
示例
用法示例
bitmapMin
引入于:v20.1
返回位图中设置的最小位的位置。如果所有位都未设置,则返回 UINT32_MAX
(如果位图包含超过 2^64
个位,则返回 UINT64_MAX
)。
语法
参数
bitmap
— 位图对象。AggregateFunction(groupBitmap, T)
.
返回值
返回位图中设置的最小位的位置,或 UINT32_MAX
/UINT64_MAX
UInt64
示例
用法示例
bitmapOr
引入于:v20.1
计算两个位图的逻辑或(OR)。
语法
参数
bitmap1
— 第一个位图对象。AggregateFunction(groupBitmap, T)
. -bitmap2
— 第二个位图对象。AggregateFunction(groupBitmap, T)
.
返回值
返回一个包含任一输入位图中设置位的位图 AggregateFunction(groupBitmap, T)
示例
用法示例
bitmapOrCardinality
引入于:v20.1
返回两个位图的逻辑或(OR)的基数。
语法
参数
bitmap1
— 第一个位图对象。AggregateFunction(groupBitmap, T)
. -bitmap2
— 第二个位图对象。AggregateFunction(groupBitmap, T)
.
返回值
返回两个位图并集中的设置位的数量 UInt64
示例
用法示例
bitmapSubsetInRange
引入于:v20.1
返回位图的一个子集,仅包含指定范围内的设置位 [start, end)。使用基于 1 的索引。
语法
参数
bitmap
— 要提取子集的位图。AggregateFunction(groupBitmap, T)
. -start
— 范围的开始(包含)。UInt*
-end
— 范围的结束(不包含)。UInt*
返回值
返回仅包含指定范围内设置位的位图 AggregateFunction(groupBitmap, T)
示例
用法示例
bitmapSubsetLimit
引入于:v20.1
返回位图自位置 range_start
开始的子集,最多包含 cardinality_limit
个设置位。使用基于 1 的索引。
语法
参数
bitmap
— 位图对象。AggregateFunction(groupBitmap, T)
. -range_start
— 范围的开始(包含)。UInt32
-cardinality_limit
— 子集的最大基数。UInt32
返回值
返回最多包含 cardinality_limit
个设置位的位图,从 range_start
开始 AggregateFunction(groupBitmap, T)
示例
用法示例
bitmapToArray
引入于:v20.1
将位图转换为无符号整数数组。它是函数 bitmapBuild
的反向操作。
语法
参数
bitmap
— 要转换的位图。AggregateFunction(groupBitmap, T)
.
返回值
返回位图中包含的无符号整数数组 Array(UInt*)
示例
用法示例
bitmapTransform
引入于:v20.1
通过将 from_array
中的特定位值与 to_array
中的对应值交换,改变位图中的最多 N 个位。
语法
参数
bitmap
— 位图对象。AggregateFunction(groupBitmap, T)
. -from_array
— 要替换的原始设置位数组。Array(T)
. -to_array
— 用于替换的新的设置位数组。Array(T)
.
返回值
根据给定的映射,返回转换后的位图 AggregateFunction(groupBitmap, T)
示例
用法示例
bitmapXor
引入于:v20.1
计算两个位图的对称差异(XOR)。
语法
参数
bitmap1
— 第一个位图对象。AggregateFunction(groupBitmap, T)
. -bitmap2
— 第二个位图对象。AggregateFunction(groupBitmap, T)
.
返回值
返回一个包含任一输入位图中设置位的位图,但不包含两个位图中均存在的位 AggregateFunction(groupBitmap, T)
示例
用法示例
bitmapXorCardinality
引入于:v20.1
返回两个位图的 XOR(对称差异)的基数。
语法
参数
bitmap1
— 第一个位图对象。AggregateFunction(groupBitmap, T)
. -bitmap2
— 第二个位图对象。AggregateFunction(groupBitmap, T)
.
返回值
返回两个位图的对称差异中设置位的数量 UInt64
示例
用法示例
subBitmap
引入于:v21.9
返回位图的一个子集,从位置 offset
开始。返回位图的最大基数为 cardinality_limit
。
语法
参数
bitmap
— 位图对象。AggregateFunction(groupBitmap, T)
. -offset
— 从开始(零索引)跳过的设置位数。UInt32
-cardinality_limit
— 包含在子集中的最大设置位数。UInt32
返回值
返回包含最多 limit
个设置位的位图,从 offset
设置位开始,按升序排列 AggregateFunction(groupBitmap, T)
示例
用法示例