メインコンテンツへスキップ
bitmap は 2 つの方法で構築できます。1 つ目は、集約関数 groupBitmap に -State を付けて構築する方法です。もう 1 つは、Array オブジェクトから bitmap を構築する方法です。

bitmapAnd

導入バージョン: v20.1.0 2 つの bitmap の論理積 (AND) を計算します。 構文
bitmapAnd(bitmap1, bitmap2)
引数 戻り値 両方の入力ビットマップに共通して存在するビットを含むビットマップを返します AggregateFunction(groupBitmap, T) 使用例
Query
SELECT bitmapToArray(bitmapAnd(bitmapBuild([1, 2, 3]), bitmapBuild([3, 4, 5]))) AS res;
Response
┌─res─┐
│ [3] │
└─────┘

bitmapAndCardinality

導入バージョン: v20.1.0 2 つの bitmap の論理積 (AND) のカーディナリティを返します。 構文
bitmapAndCardinality(bitmap1, bitmap2)
引数 戻り値 2 つのビットマップの積集合に含まれる、セットされたビットの数を返します UInt64 使用例
Query
SELECT bitmapAndCardinality(bitmapBuild([1,2,3]), bitmapBuild([3,4,5])) AS res;
Response
┌─res─┐
│   1 │
└─────┘

bitmapAndnot

導入バージョン: v20.1.0 2つのビットマップの集合差 A AND-NOT B を計算します。 構文
bitmapAndnot(bitmap1, bitmap2)
引数 戻り値 1 番目のビットマップにはあり、2 番目のビットマップにはない set bits を含むビットマップを返します。AggregateFunction(groupBitmap, T) 使用例
Query
SELECT bitmapToArray(bitmapAndnot(bitmapBuild([1, 2, 3]), bitmapBuild([3, 4, 5]))) AS res;
Response
┌─res────┐
│ [1, 2] │
└────────┘

bitmapAndnotCardinality

導入バージョン: v20.1.0 2 つの bitmap に対する AND-NOT (差) 演算のカーディナリティを返します。 構文
bitmapAndnotCardinality(bitmap1, bitmap2)
引数 戻り値 bitmap1 AND-NOT bitmap2 の結果における、セットされているビット数を返します。UInt64 使用例
Query
SELECT bitmapAndnotCardinality(bitmapBuild([1,2,3]), bitmapBuild([3,4,5])) AS res;
Response
┌─res─┐
│   2 │
└─────┘

bitmapBuild

導入バージョン: v20.1.0 符号なし整数配列から bitmap を生成します。これは関数 bitmapToArray とは逆の処理です。 構文
bitmapBuild(array)
引数 戻り値 指定された配列から生成されたbitmapを返します AggregateFunction(groupBitmap, T) 使用例
Query
SELECT bitmapBuild([1, 2, 3, 4, 5]) AS res, toTypeName(res);
Response
┌─res─┬─toTypeName(bitmapBuild([1, 2, 3, 4, 5]))─────┐
│     │ AggregateFunction(groupBitmap, UInt8)        │
└─────┴──────────────────────────────────────────────┘

bitmapCardinality

導入バージョン: v20.1.0 bitmap 内でセットされているビット数 (カーディナリティ) を返します。 構文
bitmapCardinality(bitmap)
引数 戻り値 ビットマップ内でセットされているビットの数を返します。 UInt64 使用例
Query
SELECT bitmapCardinality(bitmapBuild([1, 3, 3, 5, 7, 7])) AS res
Response
┌─res─┐
│   4 │
└─────┘

bitmapContains

導入バージョン: v20.1.0 bitmap に特定の要素が含まれているかどうかを判定します。 構文
bitmapContains(bitmap, value)
引数 戻り値 ビットマップに指定された値が含まれている場合は 1、それ以外は 0 を返します UInt8 使用例
Query
SELECT bitmapContains(bitmapBuild([1, 2, 3]), 2) AS res;
Response
┌─res─┐
│  1  │
└─────┘

bitmapHasAll

導入バージョン: v20.1.0 1番目のbitmapに、2番目のbitmapで1に設定されているすべてのビットが含まれているかどうかを確認します。 構文
bitmapHasAll(bitmap1, bitmap2)
引数 戻り値 2 つ目のビットマップでセットされているすべてのビットが 1 つ目のビットマップに含まれている場合は 1、そうでない場合は 0 を返します UInt8 使用例
Query
SELECT bitmapHasAll(bitmapBuild([1, 2, 3]), bitmapBuild([2, 3])) AS res;
Response
┌─res─┐
│  1  │
└─────┘

bitmapHasAny

導入バージョン: v20.1.0 1つ目のbitmapに、2つ目のbitmapでセットされているビットが1つでも含まれているかどうかを確認します。 構文
bitmapHasAny(bitmap1, bitmap2)
引数 戻り値 2 番目のビットマップのいずれかのビットが 1 番目のビットマップに含まれている場合は 1、それ以外の場合は 0 を返します。UInt8 使用例
Query
SELECT bitmapHasAny(bitmapBuild([1, 2, 3]), bitmapBuild([3, 4, 5])) AS res;
Response
┌─res─┐
│  1  │
└─────┘

bitmapMax

導入バージョン: v20.1.0 bitmap 内でセットされている最大のビット位置を返します。bitmap が空の場合は 0 を返します。 構文
bitmapMax(bitmap)
引数 戻り値 ビットマップで設定されている最上位ビットの位置を返します。ビットが設定されていない場合は 0 を返します。UInt64 使用例
Query
SELECT bitmapMax(bitmapBuild([1, 2, 3, 4, 5])) AS res;
Response
┌─res─┐
│   5 │
└─────┘

bitmapMin

導入バージョン: v20.1.0 bitmap 内でセットされている最小のビット位置を返します。すべてのビットが未設定の場合は UINT32_MAX を返します (bitmap に 2^64 を超えるビットが含まれる場合は UINT64_MAX) 。 構文
bitmapMin(bitmap)
引数 戻り値 ビットマップでセットされている最小のビットの位置、または UINT32_MAX/UINT64_MAX UInt64 を返します。 使用例
Query
SELECT bitmapMin(bitmapBuild([3, 5, 2, 6])) AS res;
Response
┌─res─┐
│   2 │
└─────┘

bitmapOr

導入バージョン: v20.1.0 2 つのビットマップの論理和 (OR) を計算します。 構文
bitmapOr(bitmap1, bitmap2)
引数 戻り値 いずれかの入力ビットマップに含まれる、1 に設定されたビットを持つビットマップを返します AggregateFunction(groupBitmap, T) 使用例
Query
SELECT bitmapToArray(bitmapOr(bitmapBuild([1, 2, 3]), bitmapBuild([3, 4, 5]))) AS res;
Response
┌─res─────────────┐
│ [1, 2, 3, 4, 5] │
└─────────────────┘

bitmapOrCardinality

導入バージョン: v20.1.0 2 つのビットマップの論理和 (OR) のカーディナリティを返します。 構文
bitmapOrCardinality(bitmap1, bitmap2)
引数 戻り値 2 つのビットマップのユニオンにおけるセットビット数を返します。UInt64 使用例
Query
SELECT bitmapOrCardinality(bitmapBuild([1,2,3]), bitmapBuild([3,4,5])) AS res;
Response
┌─res─┐
│   5 │
└─────┘

bitmapSubsetInRange

導入バージョン: v20.1.0 指定した範囲 [start, end) 内の set bits のみを含む bitmap の部分集合を返します。インデックスは 1 から始まります。 構文
bitmapSubsetInRange(bitmap, start, end)
引数 戻り値 指定した範囲内でセットされているビットのみを含むビットマップを返します AggregateFunction(groupBitmap, T) 使用例
Query
SELECT bitmapToArray(bitmapSubsetInRange(bitmapBuild([1, 2, 3, 4, 5]), 2, 5)) AS res;
Response
┌─res───────┐
│ [2, 3, 4] │
└───────────┘

bitmapSubsetLimit

導入バージョン: v20.1.0 位置 range_start から始まる bitmap の subset を返します。含まれる set bits の数は最大 cardinality_limit 個です。インデックスは 1 始まりです。 構文
bitmapSubsetLimit(bitmap, range_start, cardinality_limit)
引数
  • bitmap — ビットマップオブジェクト。AggregateFunction(groupBitmap, T)。 - range_start — 範囲の開始位置 (この値を含む) 。UInt32 - cardinality_limit — 部分集合の最大カーディナリティ。UInt32
戻り値 range_start から始まる、セットされたビットを最大 cardinality_limit 個まで含むビットマップを返します。AggregateFunction(groupBitmap, T) 使用例
Query
SELECT bitmapToArray(bitmapSubsetLimit(bitmapBuild([1, 5, 3, 2, 8]), 3, 2)) AS res;
Response
┌─res────┐
│ [5, 3] │
└────────┘

bitmapToArray

導入バージョン: v20.1.0 bitmap を符号なし整数の配列に変換します。関数 bitmapBuild の逆の操作です。 構文
bitmapToArray(bitmap)
引数 戻り値 bitmap に含まれる符号なし整数の配列を返します。Array(UInt*) 使用例
Query
SELECT bitmapToArray(bitmapBuild([1, 2, 3, 4, 5])) AS res;
Response
┌─res─────────────┐
│ [1, 2, 3, 4, 5] │
└─────────────────┘

bitmapTransform

導入バージョン: v20.1.0 from_array 内の特定のビット値を to_array 内の対応する値に置き換えることで、bitmap 内の最大 N ビットを変更します。 構文
bitmapTransform(bitmap, from_array, to_array)
引数 戻り値 指定されたマッピングに従って要素が変換されたビットマップを返します。AggregateFunction(groupBitmap, T) 使用例
Query
SELECT bitmapToArray(bitmapTransform(bitmapBuild([1, 2, 3, 4, 5]), [2, 4], [20, 40])) AS res;
Response
┌─res───────────────┐
│ [1, 3, 5, 20, 40] │
└───────────────────┘

bitmapXor

導入バージョン: v20.1.0 2 つの bitmap の対称差 (XOR) を返します。 構文
bitmapXor(bitmap1, bitmap2)
引数 戻り値 どちらか一方の入力ビットマップにのみ存在するセットビットを含むビットマップを返します AggregateFunction(groupBitmap, T) 使用例
Query
SELECT bitmapToArray(bitmapXor(bitmapBuild([1, 2, 3]), bitmapBuild([3, 4, 5]))) AS res;
Response
┌─res──────────┐
│ [1, 2, 4, 5] │
└──────────────┘

bitmapXorCardinality

導入バージョン: v20.1.0 2 つの bitmap の XOR (対称差) のカーディナリティを返します。 構文
bitmapXorCardinality(bitmap1, bitmap2)
引数 戻り値 2 つのビットマップの対称差における、セットされたビットの数を返します。UInt64 使用例
Query
SELECT bitmapXorCardinality(bitmapBuild([1,2,3]), bitmapBuild([3,4,5])) AS res;
Response
┌─res─┐
│   4 │
└─────┘

subBitmap

導入バージョン: v21.9.0 offset の位置から始まるビットマップのサブセットを返します。返されるビットマップの最大カーディナリティは cardinality_limit です。 構文
subBitmap(bitmap, offset, cardinality_limit)
引数
  • bitmap — ビットマップオブジェクト。AggregateFunction(groupBitmap, T). - offset — 先頭からスキップするセットされているビット数 (0ベース) 。UInt32 - cardinality_limit — subset に含めるセットされているビットの最大数。UInt32
戻り値 昇順で offset 個のセットされているビットをスキップした後から、最大 limit 個のセットされているビットを含むビットマップを返します AggregateFunction(groupBitmap, T) 使用例
Query
SELECT bitmapToArray(subBitmap(bitmapBuild([1, 2, 3, 4, 5]), 2, 2)) AS res;
Response
┌─res────┐
│ [3, 4] │
└────────┘
最終更新日 2026年6月10日