# 位图函数

## bitmapBuild

``````bitmapBuild(array)
``````

• `array` – 无符号整数数组.

``````SELECT bitmapBuild([1, 2, 3, 4, 5]) AS res
``````

## bitmapToArray

``````bitmapToArray(bitmap)
``````

• `bitmap` – 位图对象.

``````SELECT bitmapToArray(bitmapBuild([1, 2, 3, 4, 5])) AS res
``````
``````┌─res─────────┐
│ [1,2,3,4,5] │
└─────────────┘
``````

## bitmapSubsetInRange

``````bitmapSubsetInRange(bitmap, range_start, range_end)
``````

• `bitmap` – 位图对象.
• `range_start` – 范围起始点（含）.
• `range_end` – 范围结束点（不含）.

``````SELECT bitmapToArray(bitmapSubsetInRange(bitmapBuild([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,100,200,500]), toUInt32(30), toUInt32(200))) AS res
``````
``````┌─res───────────────┐
│ [30,31,32,33,100] │
└───────────────────┘
``````

## bitmapSubsetLimit

``````bitmapSubsetLimit(bitmap, range_start, limit)
``````

• `bitmap` – 位图对象.
• `range_start` – 范围起始点（含）.
• `limit` – 子位图基数上限.

``````SELECT bitmapToArray(bitmapSubsetLimit(bitmapBuild([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,100,200,500]), toUInt32(30), toUInt32(200))) AS res
``````
``````┌─res───────────────────────┐
│ [30,31,32,33,100,200,500] │
└───────────────────────────┘
``````

## subBitmap

``````subBitmap(bitmap, offset, limit)
``````

• `bitmap` – 位图对象.
• `offset` – 跳过多少个元素.
• `limit` – 子位图基数上限.

``````SELECT bitmapToArray(subBitmap(bitmapBuild([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,100,200,500]), toUInt32(10), toUInt32(10))) AS res
``````
``````┌─res─────────────────────────────┐
│ [10,11,12,13,14,15,16,17,18,19] │
└─────────────────────────────────┘
``````

## bitmapContains

``````bitmapContains(haystack, needle)
``````

• `haystack` – 位图对象.
• `needle` – 元素，类型UInt32.

``````SELECT bitmapContains(bitmapBuild([1,5,7,9]), toUInt32(9)) AS res
``````
``````┌─res─┐
│  1  │
└─────┘
``````

## bitmapHasAny

`hasAny(array，array)`类似，如果位图有任何公共元素则返回1，否则返回0。

``````bitmapHasAny(bitmap,bitmap)
``````

• `bitmap` – bitmap对象。

``````SELECT bitmapHasAny(bitmapBuild([1,2,3]),bitmapBuild([3,4,5])) AS res
``````
``````┌─res─┐
│  1  │
└─────┘
``````

## bitmapHasAll

`hasAll(array，array)`类似，如果第一个位图包含第二个位图的所有元素，则返回1，否则返回0。

``````bitmapHasAll(bitmap,bitmap)
``````

• `bitmap` – bitmap 对象。

``````SELECT bitmapHasAll(bitmapBuild([1,2,3]),bitmapBuild([3,4,5])) AS res
``````
``````┌─res─┐
│  0  │
└─────┘
``````

## 位图和

``````bitmapAnd(bitmap1,bitmap2)
``````

• `bitmap1` – 位图对象。
• `bitmap2` – 位图对象。

``````SELECT bitmapToArray(bitmapAnd(bitmapBuild([1,2,3]),bitmapBuild([3,4,5]))) AS res
``````
``````┌─res─┐
│ [3] │
└─────┘
``````

## 位图或

``````bitmapOr(bitmap1,bitmap2)
``````

• `bitmap1` – 位图对象。
• `bitmap2` – 位图对象。

``````SELECT bitmapToArray(bitmapOr(bitmapBuild([1,2,3]),bitmapBuild([3,4,5]))) AS res
``````
``````┌─res─────────┐
│ [1,2,3,4,5] │
└─────────────┘
``````

## bitmapXor

``````bitmapXor(bitmap1,bitmap2)
``````

• `bitmap1` – 位图对象。
• `bitmap2` – 位图对象。

``````SELECT bitmapToArray(bitmapXor(bitmapBuild([1,2,3]),bitmapBuild([3,4,5]))) AS res
``````
``````┌─res───────┐
│ [1,2,4,5] │
└───────────┘
``````

## bitmapAndnot

``````bitmapAndnot(bitmap1,bitmap2)
``````

• `bitmap1` – 位图对象。
• `bitmap2` – 位图对象。

``````SELECT bitmapToArray(bitmapAndnot(bitmapBuild([1,2,3]),bitmapBuild([3,4,5]))) AS res
``````
``````┌─res───┐
│ [1,2] │
└───────┘
``````

## bitmapCardinality

``````bitmapCardinality(bitmap)
``````

• `bitmap` – 位图对象。

``````SELECT bitmapCardinality(bitmapBuild([1, 2, 3, 4, 5])) AS res
``````
``````┌─res─┐
│   5 │
└─────┘
``````

## bitmapMin

``````bitmapMin(bitmap)
``````

• `bitmap` – 位图对象。

``````SELECT bitmapMin(bitmapBuild([1, 2, 3, 4, 5])) AS res
``````
``````┌─res─┐
│   1 │
└─────┘
``````

## bitmapMax

``````bitmapMax(bitmap)
``````

• `bitmap` – 位图对象。

``````SELECT bitmapMax(bitmapBuild([1, 2, 3, 4, 5])) AS res
``````
``````┌─res─┐
│   5 │
└─────┘
``````

## 位图和标准性

``````bitmapAndCardinality(bitmap1,bitmap2)
``````

• `bitmap1` – 位图对象。
• `bitmap2` – 位图对象。

``````SELECT bitmapAndCardinality(bitmapBuild([1,2,3]),bitmapBuild([3,4,5])) AS res;
``````
``````┌─res─┐
│   1 │
└─────┘
``````

## bitmapOrCardinality

``````bitmapOrCardinality(bitmap1,bitmap2)
``````

• `bitmap1` – 位图对象。
• `bitmap2` – 位图对象。

``````SELECT bitmapOrCardinality(bitmapBuild([1,2,3]),bitmapBuild([3,4,5])) AS res;
``````
``````┌─res─┐
│   5 │
└─────┘
``````

## bitmapXorCardinality

``````bitmapXorCardinality(bitmap1,bitmap2)
``````

• `bitmap1` – 位图对象。
• `bitmap2` – 位图对象。

``````SELECT bitmapXorCardinality(bitmapBuild([1,2,3]),bitmapBuild([3,4,5])) AS res;
``````
``````┌─res─┐
│   4 │
└─────┘
``````

## 位图和非标准性

``````bitmapAndnotCardinality(bitmap1,bitmap2)
``````

• `bitmap1` – 位图对象。
• `bitmap2` - 位图对象。

``````SELECT bitmapAndnotCardinality(bitmapBuild([1,2,3]),bitmapBuild([3,4,5])) AS res;
``````
``````┌─res─┐
│   2 │
└─────┘
``````

Rating: 4.7 - 15 votes

Was this content helpful?
★★★★★