메인 콘텐츠로 건너뛰기
비트맵은 두 가지 방법으로 만들 수 있습니다. 첫 번째는 집계 함수 groupBitmap-State를 사용해 만드는 방법이고, 다른 하나는 배열 객체에서 비트맵을 만드는 방법입니다.

bitmapAnd

Introduced in: v20.1.0 두 비트맵의 논리곱(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 두 비트맵의 논리곱(AND)에 대한 카디널리티를 반환합니다. 구문
bitmapAndCardinality(bitmap1, bitmap2)
인수 반환 값 두 비트맵의 교집합에 있는 1로 설정된 비트 수를 반환합니다 UInt64 예시 사용 예시
Query
SELECT bitmapAndCardinality(bitmapBuild([1,2,3]), bitmapBuild([3,4,5])) AS res;
Response
┌─res─┐
│   1 │
└─────┘

bitmapAndnot

도입 버전: v20.1.0 두 비트맵에 대해 집합 차 A AND-NOT B를 계산합니다. 구문
bitmapAndnot(bitmap1, bitmap2)
인수 반환 값 첫 번째 비트맵에는 있고 두 번째 비트맵에는 없는 비트가 설정된 비트맵을 반환합니다 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 두 비트맵에 대해 AND-NOT 연산의 카디널리티를 반환합니다. 구문
bitmapAndnotCardinality(bitmap1, bitmap2)
인수 반환 값 bitmap1 AND-NOT bitmap2 결과에서 1로 설정된 비트 수를 반환합니다. UInt64 예시 사용 예시
Query
SELECT bitmapAndnotCardinality(bitmapBuild([1,2,3]), bitmapBuild([3,4,5])) AS res;
Response
┌─res─┐
│   2 │
└─────┘

bitmapBuild

도입 버전: v20.1.0 부호 없는 정수 배열에서 비트맵을 생성합니다. 함수 bitmapToArray의 반대 기능입니다. 구문
bitmapBuild(array)
인수
  • array — 부호 없는 정수로 이루어진 배열. Array(UInt*)
반환 값 지정된 배열에서 생성된 비트맵을 반환합니다. 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 비트맵에서 1로 설정된 비트 수(카디널리티)를 반환합니다. 구문
bitmapCardinality(bitmap)
인수 반환 값 비트맵에 설정된 비트 수를 반환합니다. UInt64 예시 사용 예시
Query
SELECT bitmapCardinality(bitmapBuild([1, 3, 3, 5, 7, 7])) AS res
Response
┌─res─┐
│   4 │
└─────┘

bitmapContains

도입 버전: v20.1.0 비트맵에 특정 요소가 포함되어 있는지 확인합니다. 구문
bitmapContains(bitmap, value)
인수 반환 값 비트맵에 지정된 값이 포함되어 있으면 1, 그렇지 않으면 0을 반환합니다. UInt8 예시 사용 예시
Query
SELECT bitmapContains(bitmapBuild([1, 2, 3]), 2) AS res;
Response
┌─res─┐
│  1  │
└─────┘

bitmapHasAll

도입 버전: v20.1.0 첫 번째 비트맵에 두 번째 비트맵에서 1로 설정된 비트가 모두 포함되어 있는지 확인합니다. 구문
bitmapHasAll(bitmap1, bitmap2)
인수 반환 값 두 번째 비트맵에서 설정된 모든 비트가 첫 번째 비트맵에도 있으면 1을, 그렇지 않으면 0을 반환합니다 UInt8 예시 사용 예시
Query
SELECT bitmapHasAll(bitmapBuild([1, 2, 3]), bitmapBuild([2, 3])) AS res;
Response
┌─res─┐
│  1  │
└─────┘

bitmapHasAny

도입 버전: v20.1.0 첫 번째 비트맵에 두 번째 비트맵에서 설정된 비트가 하나라도 있는지 확인합니다. 구문
bitmapHasAny(bitmap1, bitmap2)
인수 반환 값 두 번째 비트맵의 비트 중 하나라도 첫 번째 비트맵에 포함되어 있으면 1을, 그렇지 않으면 0을 반환합니다. UInt8 예시 사용 예시
Query
SELECT bitmapHasAny(bitmapBuild([1, 2, 3]), bitmapBuild([3, 4, 5])) AS res;
Response
┌─res─┐
│  1  │
└─────┘

bitmapMax

도입 버전: v20.1.0 비트맵에서 설정된 비트 중 가장 큰 비트의 위치를 반환합니다. 비트맵이 비어 있으면 0을 반환합니다. 구문
bitmapMax(bitmap)
인수 반환 값 비트맵에서 설정된 비트 중 가장 큰 비트의 위치를 반환합니다. 설정된 비트가 없으면 0을 반환합니다. UInt64 예시 사용 예시
Query
SELECT bitmapMax(bitmapBuild([1, 2, 3, 4, 5])) AS res;
Response
┌─res─┐
│   5 │
└─────┘

bitmapMin

도입 버전: v20.1.0 비트맵에서 설정된 비트 중 가장 작은 비트의 위치를 반환합니다. 모든 비트가 설정 해제된 경우에는 UINT32_MAX를 반환하며, 비트맵에 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 두 비트맵의 논리합(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 두 비트맵의 논리합(OR) 결과의 카디널리티를 반환합니다. 구문
bitmapOrCardinality(bitmap1, bitmap2)
인수 반환 값 두 비트맵의 합집합에서 1로 설정된 비트 수를 반환합니다. UInt64 예시 사용 예시
Query
SELECT bitmapOrCardinality(bitmapBuild([1,2,3]), bitmapBuild([3,4,5])) AS res;
Response
┌─res─┐
│   5 │
└─────┘

bitmapSubsetInRange

도입 버전: v20.1.0 지정된 범위 [start, end) 내에서 설정된 비트만 포함하는 비트맵의 부분 집합을 반환합니다. 인덱스는 1부터 시작합니다. 구문
bitmapSubsetInRange(bitmap, start, end)
인수 반환 값 지정된 범위에서 1로 설정된 비트만 포함하는 비트맵을 반환합니다 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부터 최대 cardinality_limit개의 비트가 설정된 비트맵 부분집합을 반환합니다. 인덱싱은 1부터 시작합니다. 구문
bitmapSubsetLimit(bitmap, range_start, cardinality_limit)
인수 반환 값 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 비트맵을 부호 없는 정수 배열로 변환합니다. 함수 bitmapBuild와 반대되는 기능입니다. 구문
bitmapToArray(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의 해당 값으로 교체하여 비트맵에서 최대 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 두 비트맵의 대칭 차집합(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 두 비트맵의 XOR(대칭 차집합)에 대한 카디널리티를 반환합니다. 구문
bitmapXorCardinality(bitmap1, bitmap2)
인수 반환 값 두 비트맵의 대칭 차집합에서 1로 설정된 비트 수를 반환합니다 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 — 앞에서부터 건너뛸 1로 설정된 비트 수(0부터 시작). UInt32 - cardinality_limit — 부분 집합에 포함할 1로 설정된 비트의 최대 개수. UInt32
반환 값 오름차순에서 offset개의 1로 설정된 비트를 건너뛴 다음부터 시작하는, 최대 limit개의 1로 설정된 비트를 포함하는 비트맵을 반환합니다 AggregateFunction(groupBitmap, T) 예시 사용 예시
Query
SELECT bitmapToArray(subBitmap(bitmapBuild([1, 2, 3, 4, 5]), 2, 2)) AS res;
Response
┌─res────┐
│ [3, 4] │
└────────┘
마지막 수정일 2026년 6월 10일