ClickHouse/docs/ja/sql_reference/functions/bitmap_functions.md
2020-04-04 12:15:31 +03:00

12 KiB
Raw Blame History

machine_translated machine_translated_rev toc_priority toc_title
true d734a8e46d 49 Bitmap

ビットマップ関数

ビットマップ関数は、二つのビットマップオブジェクトの値の計算のために働く、そのような、および、または、xor、およびない、などの式の計算を使用し

ビットマップオブジェクトの構築方法には2種類あります。 一つは-stateを持つ集約関数groupbitmapによって構築されることであり、もう一つは配列オブジェクトによって構築されることである。 また、bitmapオブジェクトをarrayオブジェクトに変換します。

RoaringBitmapは、ビットマップオブジェクトの実際の格納中にデータ構造にラップされます。 基数が32以下の場合、Set objetが使用されます。 カーディナリティが32より大きい場合、Rooaringbitmapオブジェクトが使用されます。 そのため、低カーディナリティセットの保存が高速になります。

RoaringBitmapの詳細については、以下を参照してください: 鳴き声.

bitmapBuild

符号なし整数配列からビットマップを作成します。

bitmapBuild(array)

パラメータ

  • array unsigned integer array.

例えば

SELECT bitmapBuild([1, 2, 3, 4, 5]) AS res, toTypeName(res)
┌─res─┬─toTypeName(bitmapBuild([1, 2, 3, 4, 5]))─────┐
│     │ AggregateFunction(groupBitmap, UInt8)    │
└─────┴──────────────────────────────────────────────┘

bitmapToArray

ビットマップを整数配列に変換します。

bitmapToArray(bitmap)

パラメータ

  • bitmap bitmap object.

例えば

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

bitmapSubsetInRange

指定された範囲のサブセットを返します(range_endは含みません)。

bitmapSubsetInRange(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

ビットマップのサブセットを作成します。 range_startcardinality_limit.

構文

bitmapSubsetLimit(bitmap, range_start, cardinality_limit)

パラメータ

  • bitmap ビットマップ.
  • range_start The subset starting point. Type: UInt32.
  • cardinality_limit The subset cardinality upper limit. Type: UInt32.

戻り値

サブセット。

タイプ: Bitmap object.

例えば

クエリ:

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] │
└───────────────────────────┘

bitmapContains

かどうかをチェックしますビットマップを含む要素になります。

bitmapContains(haystack, needle)

パラメータ

  • haystack ビットマップ、関数が検索する場所。
  • needle Value that the function searches. Type: UInt32.

戻り値

  • 0 — If haystack 含まない needle.
  • 1 — If haystack 含む needle.

タイプ: UInt8.

例えば

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

bitmapHasAny

るかどうかを判二つのビットマップしていることで交差点にある。

bitmapHasAny(bitmap1, bitmap2)

あなたが確信している場合 bitmap2 一つの要素が含まれています。 bitmapContains 機能。 これは、より効率的に動作します。

パラメータ

  • bitmap* bitmap object.

戻り値

  • 1,もし bitmap1bitmap2 少なくとも同様の要素を持っている。
  • 0 そうでなければ

例えば

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

bitmapHasAll

に類似した hasAll(array, array) 最初のビットマップに1番目のビットマップのすべての要素が含まれる場合は0を返します。 二番目の引数が空のビットマップの場合、1を返します。

bitmapHasAll(bitmap,bitmap)

パラメータ

  • bitmap bitmap object.

例えば

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

bitmapCardinality

UInt64型のビットマップのカーディナリティを再度実行可能。

bitmapCardinality(bitmap)

パラメータ

  • bitmap bitmap object.

例えば

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

bitmapmincomment

セット内のタイプuint64の最小値を再度取り消し、セットが空の場合はuint32_max。

bitmapMin(bitmap)

パラメータ

  • bitmap bitmap object.

例えば

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

bitmapMax

セット内のuint64型の最大値を取り消し、セットが空の場合は0になります。

bitmapMax(bitmap)

パラメータ

  • bitmap bitmap object.

例えば

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

bitmapTransform

ビットマップ内の値の配列を別の値の配列に変換すると、結果は新しいビットマップになります。

bitmapTransform(bitmap, from_array, to_array)

パラメータ

  • bitmap bitmap object.
  • from_array UInt32 array. For idx in range [0, from_array.size()), if bitmap contains from_array[idx], then replace it with to_array[idx]. Note that the result depends on array ordering if there are common elements between from_array and to_array.
  • to_array UInt32 array, its size shall be the same to from_array.

例えば

SELECT bitmapToArray(bitmapTransform(bitmapBuild([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]), cast([5,999,2] as Array(UInt32)), cast([2,888,20] as Array(UInt32)))) AS res
┌─res───────────────────┐
│ [1,3,4,6,7,8,9,10,20] │
└───────────────────────┘

bitmapAnd

二つのビットマップと計算、結果は新しいビットマップです。

bitmapAnd(bitmap,bitmap)

パラメータ

  • bitmap bitmap object.

例えば

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

bitmapOr

二つのビットマップや計算、結果は新しいビットマップです。

bitmapOr(bitmap,bitmap)

パラメータ

  • bitmap bitmap object.

例えば

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

bitmapXor

二つのビットマップxor計算、結果は新しいビットマップです。

bitmapXor(bitmap,bitmap)

パラメータ

  • bitmap bitmap object.

例えば

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

bitmapAndnot

二つのビットマップと計算ではなく、結果は新しいビットマップです。

bitmapAndnot(bitmap,bitmap)

パラメータ

  • bitmap bitmap object.

例えば

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

bitmapAndCardinality

二つのビットマップと計算、型uint64の戻り値のカーディナリティ。

bitmapAndCardinality(bitmap,bitmap)

パラメータ

  • bitmap bitmap object.

例えば

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

ビットmapcardinality

二つのビットマップまたは計算、型uint64の戻り値のカーディナリティ。

bitmapOrCardinality(bitmap,bitmap)

パラメータ

  • bitmap bitmap object.

例えば

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

bitmapXorCardinality

二つのビットマップxor計算、型uint64の戻り値のカーディナリティ。

bitmapXorCardinality(bitmap,bitmap)

パラメータ

  • bitmap bitmap object.

例えば

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

bitmapAndnotCardinality

二つのビットマップと計算ではなく、型uint64のカーディナリティを返します。

bitmapAndnotCardinality(bitmap,bitmap)

パラメータ

  • bitmap bitmap object.

例えば

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

元の記事