ビットマップ関数
ビットマップは 2 通りの方法で構築できます。1 つ目は集約関数 groupBitmap に -State を付けて構築する方法で、もう 1 つは Array オブジェクトからビットマップを構築する方法です。
bitmapAnd
導入バージョン:v20.1.0
2つのビットマップの論理積 (AND) を計算します。
構文
引数
bitmap1— 1 番目のビットマップオブジェクト。AggregateFunction(groupBitmap, T). -bitmap2— 2 番目のビットマップオブジェクト。AggregateFunction(groupBitmap, T).
返り値
両方の入力ビットマップに共通するビットを持つビットマップを返します。AggregateFunction(groupBitmap, T)
例
使用例
bitmapAndCardinality
導入バージョン: v20.1.0
2つのビットマップの論理積 (AND) の基数を返します。
構文
引数
bitmap1— 1 番目のビットマップオブジェクト。AggregateFunction(groupBitmap, T). -bitmap2— 2 番目のビットマップオブジェクト。AggregateFunction(groupBitmap, T).
戻り値
2 つのビットマップの積集合に含まれるセットされたビットの数を返します。UInt64
例
使用例
bitmapAndnot
導入バージョン: v20.1.0
2 つのビットマップの集合差 A AND-NOT B を計算します。
構文
引数
bitmap1— 1 つ目のビットマップオブジェクト。AggregateFunction(groupBitmap, T)-bitmap2— 2 番目のビットマップオブジェクト。AggregateFunction(groupBitmap, T)
返り値
1 つ目のビットマップには存在し、2 つ目のビットマップには存在しないセットされたビットを含むビットマップを返します。AggregateFunction(groupBitmap, T)
例
使用例
bitmapAndnotCardinality
導入バージョン: v20.1.0
2 つのビットマップに対する AND-NOT 演算結果のカーディナリティを返します。
構文
引数
bitmap1— 1 番目のビットマップオブジェクト。AggregateFunction(groupBitmap, T). -bitmap2— 2 番目のビットマップオブジェクト。AggregateFunction(groupBitmap, T).
返り値
bitmap1 AND-NOT bitmap2 の結果中のセットされているビット数を返します。UInt64
例
使用例
bitmapBuild
導入バージョン: v20.1.0
符号なし整数配列からビットマップを生成します。関数 bitmapToArray と逆の処理を行います。
構文
引数
array— 符号なし整数の配列。Array(UInt*)
戻り値
与えられた配列からビットマップを返します。AggregateFunction(groupBitmap, T)
例
使用例
bitmapCardinality
導入バージョン: v20.1.0
bitmap 内で 1 にセットされているビットの数 (基数) を返します。
構文
引数
bitmap— ビットマップオブジェクト。AggregateFunction(groupBitmap, T)。
戻り値
ビットマップ内で 1 に設定されているビットの数を返します。型は UInt64 です。
例
使用例
bitmapContains
導入バージョン: v20.1.0
ビットマップに特定の要素が含まれているかどうかを判定します。
構文
引数
bitmap— ビットマップオブジェクト。型はAggregateFunction(groupBitmap, T)。-value— 存在を確認する要素。型は (U)Int8/16/32/64
返り値
ビットマップに指定した値が含まれていれば 1、含まれていなければ 0 を返します。型は UInt8
例
使用例
bitmapHasAll
導入バージョン: v20.1.0
1 つ目のビットマップが、2 つ目のビットマップに立っているすべてのビットを含んでいるかどうかを判定します。
構文
引数
bitmap1— 1番目のビットマップオブジェクト。AggregateFunction(groupBitmap, T). -bitmap2— 2番目のビットマップオブジェクト。AggregateFunction(groupBitmap, T).
戻り値
2番目のビットマップのすべての set ビットが1番目のビットマップに含まれている場合は 1 を返し、そうでない場合は 0 を返します。UInt8
例
使用例
bitmapHasAny
導入バージョン: v20.1.0
最初のビットマップが、2番目のビットマップでセットされているビットを1つでも含んでいるかどうかをチェックします。
構文
引数
bitmap1— 1 つ目のビットマップオブジェクト。AggregateFunction(groupBitmap, T). -bitmap2— 2 番目のビットマップオブジェクト。AggregateFunction(groupBitmap, T).
返り値
2 番目のビットマップのいずれかのビットが 1 つ目のビットマップにも存在する場合は 1 を返し、そうでない場合は 0 を返します。戻り値の型は UInt8 です。
例
使用例
bitmapMax
導入バージョン: v20.1.0
bitmap 内でセットされているビットのうち、最も大きいビット位置を返します。bitmap が空の場合は 0 を返します。
構文
引数
bitmap— Bitmap オブジェクト。AggregateFunction(groupBitmap, T)。
戻り値
bitmap 内で最も大きいビットが立っている位置を返し、どのビットも立っていない場合は 0 を返します。UInt64
例
使用例
bitmapMin
導入バージョン: v20.1.0
ビットマップ内でセットされている最小のビットの位置を返します。すべてのビットが未セットの場合は UINT32_MAX を返します (ビットマップに 2^64 を超えるビットが含まれる場合は UINT64_MAX を返します) 。
構文
引数
bitmap— Bitmap オブジェクト。AggregateFunction(groupBitmap, T)。
戻り値
bitmap 内でセットされている最小のビット位置、または UINT32_MAX/UINT64_MAX UInt64 を返します。
例
利用例
bitmapOr
導入バージョン: v20.1.0
2つのビットマップに対して論理和 (OR) を計算します。
構文
引数
bitmap1— 1つ目のビットマップオブジェクト。AggregateFunction(groupBitmap, T)。 -bitmap2— 2つ目のビットマップオブジェクト。AggregateFunction(groupBitmap, T)。
戻り値
どちらか一方の入力ビットマップで 1 になっているビットを含むビットマップを返します。AggregateFunction(groupBitmap, T)
例
使用例
bitmapOrCardinality
導入バージョン: v20.1.0
2 つのビットマップの論理和 (OR) のカーディナリティを返します。
構文
引数
bitmap1— 1つ目のビットマップオブジェクト。AggregateFunction(groupBitmap, T). -bitmap2— 2つ目のビットマップオブジェクト。AggregateFunction(groupBitmap, T).
戻り値
2つのビットマップの和集合に含まれる、1 に設定されているビットの数を返します。戻り値の型は UInt64 です。
例
使用例
bitmapSubsetInRange
導入バージョン: v20.1.0
指定された範囲 [start, end) 内のセットされたビットのみを含むビットマップの部分集合を返します。インデックスは 1 から始まります。
構文
引数
bitmap— 部分集合を抽出する対象のビットマップ。AggregateFunction(groupBitmap, T)。 -start— 範囲の開始位置 (含む) 。UInt*-end— 範囲の終了位置 (含まない) 。UInt*
返される値
指定された範囲内のビットのうち、セットされているビットだけを含むビットマップを返します。AggregateFunction(groupBitmap, T)
例
使用例
bitmapSubsetLimit
導入バージョン: v20.1.0
ビットマップの range_start 番目の位置から、最大で cardinality_limit 個の 1 に設定されたビットを含む部分集合を返します。インデックスは 1 始まりです。
構文
引数
bitmap— Bitmap オブジェクト。AggregateFunction(groupBitmap, T)。 -range_start— 範囲の開始位置 (含む) 。UInt32-cardinality_limit— 部分集合の最大カーディナリティ。UInt32
返される値
range_start から開始して、最大で cardinality_limit 個のビットがセットされた bitmap を返します。AggregateFunction(groupBitmap, T)
例
使用例
bitmapToArray
導入バージョン: v20.1.0
ビットマップを符号なし整数の配列に変換します。関数 bitmapBuild の逆の処理を行います。
構文
引数
bitmap— 変換対象のビットマップ。AggregateFunction(groupBitmap, T)。
戻り値
ビットマップに含まれる符号なし整数からなる配列 Array(UInt*) を返します。
例
使用例
bitmapTransform
導入バージョン: v20.1.0
from_array 内の特定のビット値を to_array 内の対応する値と入れ替えることで、ビットマップ内の最大 N ビットを変更します。
構文
引数
bitmap— ビットマップオブジェクト。AggregateFunction(groupBitmap, T). -from_array— 置換対象となる元のセットビットの配列。Array(T). -to_array— 置換後の新しいセットビットの配列。Array(T).
返される値
指定されたマッピングに従って要素が変換された bitmap を返します。AggregateFunction(groupBitmap, T)
例
使用例
bitmapXor
v20.1.0 で導入
2 つのビットマップの対称差 (XOR) を計算します。
構文
引数
bitmap1— 1つ目のビットマップオブジェクト。AggregateFunction(groupBitmap, T). -bitmap2— 2つ目のビットマップオブジェクト。AggregateFunction(groupBitmap, T).
返り値
2つの入力ビットマップのうち、一方にのみ存在し、両方には同時に存在しないビットが立っているビットマップを返します。AggregateFunction(groupBitmap, T)
例
使用例
bitmapXorCardinality
導入バージョン: v20.1.0
2つのビットマップの XOR (対称差) の基数 (cardinality) を返します。
構文
引数
bitmap1— 1 番目のビットマップオブジェクト。AggregateFunction(groupBitmap, T). -bitmap2— 2 番目のビットマップオブジェクト。AggregateFunction(groupBitmap, T).
返される値
2つのビットマップの対称差における、セットされているビットの数を返します。型は UInt64 です。
例
使用例
subBitmap
導入バージョン: v21.9.0
offset の位置から始まる部分ビットマップを返します。返されるビットマップのカーディナリティの上限は cardinality_limit です。
構文
引数
bitmap— Bitmap オブジェクト。AggregateFunction(groupBitmap, T). -offset— 先頭からスキップするセットされたビット数 (0 起算) 。UInt32-cardinality_limit— 部分集合に含めるセットされたビット数の最大値。UInt32
戻り値
offset 個のセットされたビットを昇順でスキップした後、その位置から最大 limit 個のセットされたビットを含むビットマップを返します。AggregateFunction(groupBitmap, T)
例
使用例