> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-mintlify-3a82795f.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> 비트맵 함수 문서

# 비트맵 함수

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

{/*AUTOGENERATED_START*/}

<div id="bitmapAnd">
  ## bitmapAnd
</div>

Introduced in: v20.1.0

두 비트맵의 논리곱(AND)을 계산합니다.

**구문**

```sql theme={null}
bitmapAnd(bitmap1, bitmap2)
```

**인수**

* `bitmap1` — 첫 번째 비트맵 객체입니다. [`AggregateFunction(groupBitmap, T)`](/ko/reference/data-types/aggregatefunction). - `bitmap2` — 두 번째 비트맵 객체입니다. [`AggregateFunction(groupBitmap, T)`](/ko/reference/data-types/aggregatefunction).

**반환 값**

두 입력 비트맵에 공통으로 존재하는 비트를 포함한 비트맵을 반환합니다 [`AggregateFunction(groupBitmap, T)`](/ko/reference/data-types/aggregatefunction)

**예시**

**사용 예시**

```sql title=Query theme={null}
SELECT bitmapToArray(bitmapAnd(bitmapBuild([1, 2, 3]), bitmapBuild([3, 4, 5]))) AS res;
```

```response title=Response theme={null}
┌─res─┐
│ [3] │
└─────┘
```

<div id="bitmapAndCardinality">
  ## bitmapAndCardinality
</div>

도입 버전: v20.1.0

두 비트맵의 논리곱(AND)에 대한 카디널리티를 반환합니다.

**구문**

```sql theme={null}
bitmapAndCardinality(bitmap1, bitmap2)
```

**인수**

* `bitmap1` — 첫 번째 비트맵 객체. [`AggregateFunction(groupBitmap, T)`](/ko/reference/data-types/aggregatefunction). - `bitmap2` — 두 번째 비트맵 객체. [`AggregateFunction(groupBitmap, T)`](/ko/reference/data-types/aggregatefunction).

**반환 값**

두 비트맵의 교집합에 있는 1로 설정된 비트 수를 반환합니다 [`UInt64`](/ko/reference/data-types/int-uint)

**예시**

**사용 예시**

```sql title=Query theme={null}
SELECT bitmapAndCardinality(bitmapBuild([1,2,3]), bitmapBuild([3,4,5])) AS res;
```

```response title=Response theme={null}
┌─res─┐
│   1 │
└─────┘
```

<div id="bitmapAndnot">
  ## bitmapAndnot
</div>

도입 버전: v20.1.0

두 비트맵에 대해 집합 차 A AND-NOT B를 계산합니다.

**구문**

```sql theme={null}
bitmapAndnot(bitmap1, bitmap2)
```

**인수**

* `bitmap1` — 첫 번째 비트맵 객체입니다. [`AggregateFunction(groupBitmap, T)`](/ko/reference/data-types/aggregatefunction). - `bitmap2` — 두 번째 비트맵 객체입니다. [`AggregateFunction(groupBitmap, T)`](/ko/reference/data-types/aggregatefunction).

**반환 값**

첫 번째 비트맵에는 있고 두 번째 비트맵에는 없는 비트가 설정된 비트맵을 반환합니다 [`AggregateFunction(groupBitmap, T)`](/ko/reference/data-types/aggregatefunction)

**예시**

**사용 예시**

```sql title=Query theme={null}
SELECT bitmapToArray(bitmapAndnot(bitmapBuild([1, 2, 3]), bitmapBuild([3, 4, 5]))) AS res;
```

```response title=Response theme={null}
┌─res────┐
│ [1, 2] │
└────────┘
```

<div id="bitmapAndnotCardinality">
  ## bitmapAndnotCardinality
</div>

도입 버전: v20.1.0

두 비트맵에 대해 AND-NOT 연산의 카디널리티를 반환합니다.

**구문**

```sql theme={null}
bitmapAndnotCardinality(bitmap1, bitmap2)
```

**인수**

* `bitmap1` — 첫 번째 비트맵 객체입니다. [`AggregateFunction(groupBitmap, T)`](/ko/reference/data-types/aggregatefunction). - `bitmap2` — 두 번째 비트맵 객체입니다. [`AggregateFunction(groupBitmap, T)`](/ko/reference/data-types/aggregatefunction).

**반환 값**

`bitmap1 AND-NOT bitmap2` 결과에서 1로 설정된 비트 수를 반환합니다. [`UInt64`](/ko/reference/data-types/int-uint)

**예시**

**사용 예시**

```sql title=Query theme={null}
SELECT bitmapAndnotCardinality(bitmapBuild([1,2,3]), bitmapBuild([3,4,5])) AS res;
```

```response title=Response theme={null}
┌─res─┐
│   2 │
└─────┘
```

<div id="bitmapBuild">
  ## bitmapBuild
</div>

도입 버전: v20.1.0

부호 없는 정수 배열에서 비트맵을 생성합니다. 함수 [`bitmapToArray`](/ko/reference/functions/regular-functions/bitmap-functions#bitmapToArray)의 반대 기능입니다.

**구문**

```sql theme={null}
bitmapBuild(array)
```

**인수**

* `array` — 부호 없는 정수로 이루어진 배열. [`Array(UInt*)`](/ko/reference/data-types/array)

**반환 값**

지정된 배열에서 생성된 비트맵을 반환합니다. [`AggregateFunction(groupBitmap, T)`](/ko/reference/data-types/aggregatefunction)

**예시**

**사용 예시**

```sql title=Query theme={null}
SELECT bitmapBuild([1, 2, 3, 4, 5]) AS res, toTypeName(res);
```

```response title=Response theme={null}
┌─res─┬─toTypeName(bitmapBuild([1, 2, 3, 4, 5]))─────┐
│     │ AggregateFunction(groupBitmap, UInt8)        │
└─────┴──────────────────────────────────────────────┘
```

<div id="bitmapCardinality">
  ## bitmapCardinality
</div>

도입 버전: v20.1.0

비트맵에서 1로 설정된 비트 수(카디널리티)를 반환합니다.

**구문**

```sql theme={null}
bitmapCardinality(bitmap)
```

**인수**

* `bitmap` — 비트맵 객체. [`AggregateFunction(groupBitmap, T)`](/ko/reference/data-types/aggregatefunction).

**반환 값**

비트맵에 설정된 비트 수를 반환합니다. [`UInt64`](/ko/reference/data-types/int-uint)

**예시**

**사용 예시**

```sql title=Query theme={null}
SELECT bitmapCardinality(bitmapBuild([1, 3, 3, 5, 7, 7])) AS res
```

```response title=Response theme={null}
┌─res─┐
│   4 │
└─────┘
```

<div id="bitmapContains">
  ## bitmapContains
</div>

도입 버전: v20.1.0

비트맵에 특정 요소가 포함되어 있는지 확인합니다.

**구문**

```sql theme={null}
bitmapContains(bitmap, value)
```

**인수**

* `bitmap` — 비트맵 객체. [`AggregateFunction(groupBitmap, T)`](/ko/reference/data-types/aggregatefunction). - `value` — 확인할 요소. [(U)Int8/16/32/64](/ko/reference/data-types/int-uint)

**반환 값**

비트맵에 지정된 값이 포함되어 있으면 `1`, 그렇지 않으면 `0`을 반환합니다. [`UInt8`](/ko/reference/data-types/int-uint)

**예시**

**사용 예시**

```sql title=Query theme={null}
SELECT bitmapContains(bitmapBuild([1, 2, 3]), 2) AS res;
```

```response title=Response theme={null}
┌─res─┐
│  1  │
└─────┘
```

<div id="bitmapHasAll">
  ## bitmapHasAll
</div>

도입 버전: v20.1.0

첫 번째 비트맵에 두 번째 비트맵에서 1로 설정된 비트가 모두 포함되어 있는지 확인합니다.

**구문**

```sql theme={null}
bitmapHasAll(bitmap1, bitmap2)
```

**인수**

* `bitmap1` — 첫 번째 비트맵 객체. [`AggregateFunction(groupBitmap, T)`](/ko/reference/data-types/aggregatefunction). - `bitmap2` — 두 번째 비트맵 객체. [`AggregateFunction(groupBitmap, T)`](/ko/reference/data-types/aggregatefunction).

**반환 값**

두 번째 비트맵에서 설정된 모든 비트가 첫 번째 비트맵에도 있으면 `1`을, 그렇지 않으면 `0`을 반환합니다 [`UInt8`](/ko/reference/data-types/int-uint)

**예시**

**사용 예시**

```sql title=Query theme={null}
SELECT bitmapHasAll(bitmapBuild([1, 2, 3]), bitmapBuild([2, 3])) AS res;
```

```response title=Response theme={null}
┌─res─┐
│  1  │
└─────┘
```

<div id="bitmapHasAny">
  ## bitmapHasAny
</div>

도입 버전: v20.1.0

첫 번째 비트맵에 두 번째 비트맵에서 설정된 비트가 하나라도 있는지 확인합니다.

**구문**

```sql theme={null}
bitmapHasAny(bitmap1, bitmap2)
```

**인수**

* `bitmap1` — 첫 번째 비트맵 객체입니다. [`AggregateFunction(groupBitmap, T)`](/ko/reference/data-types/aggregatefunction). - `bitmap2` — 두 번째 비트맵 객체입니다. [`AggregateFunction(groupBitmap, T)`](/ko/reference/data-types/aggregatefunction).

**반환 값**

두 번째 비트맵의 비트 중 하나라도 첫 번째 비트맵에 포함되어 있으면 `1`을, 그렇지 않으면 `0`을 반환합니다. [`UInt8`](/ko/reference/data-types/int-uint)

**예시**

**사용 예시**

```sql title=Query theme={null}
SELECT bitmapHasAny(bitmapBuild([1, 2, 3]), bitmapBuild([3, 4, 5])) AS res;
```

```response title=Response theme={null}
┌─res─┐
│  1  │
└─────┘
```

<div id="bitmapMax">
  ## bitmapMax
</div>

도입 버전: v20.1.0

비트맵에서 설정된 비트 중 가장 큰 비트의 위치를 반환합니다. 비트맵이 비어 있으면 `0`을 반환합니다.

**구문**

```sql theme={null}
bitmapMax(bitmap)
```

**인수**

* `bitmap` — 비트맵 객체. [`AggregateFunction(groupBitmap, T)`](/ko/reference/data-types/aggregatefunction).

**반환 값**

비트맵에서 설정된 비트 중 가장 큰 비트의 위치를 반환합니다. 설정된 비트가 없으면 `0`을 반환합니다. [`UInt64`](/ko/reference/data-types/int-uint)

**예시**

**사용 예시**

```sql title=Query theme={null}
SELECT bitmapMax(bitmapBuild([1, 2, 3, 4, 5])) AS res;
```

```response title=Response theme={null}
┌─res─┐
│   5 │
└─────┘
```

<div id="bitmapMin">
  ## bitmapMin
</div>

도입 버전: v20.1.0

비트맵에서 설정된 비트 중 가장 작은 비트의 위치를 반환합니다. 모든 비트가 설정 해제된 경우에는 `UINT32_MAX`를 반환하며, 비트맵에 `2^64`개보다 많은 비트가 포함된 경우에는 `UINT64_MAX`를 반환합니다.

**구문**

```sql theme={null}
bitmapMin(bitmap)
```

**인수**

* `bitmap` — 비트맵 객체. [`AggregateFunction(groupBitmap, T)`](/ko/reference/data-types/aggregatefunction).

**반환 값**

비트맵에서 설정된 가장 낮은 비트의 위치 또는 `UINT32_MAX`/`UINT64_MAX` [`UInt64`](/ko/reference/data-types/int-uint)를 반환합니다.

**예시**

**사용 예시**

```sql title=Query theme={null}
SELECT bitmapMin(bitmapBuild([3, 5, 2, 6])) AS res;
```

```response title=Response theme={null}
┌─res─┐
│   2 │
└─────┘
```

<div id="bitmapOr">
  ## bitmapOr
</div>

도입 버전: v20.1.0

두 비트맵의 논리합(OR)을 계산합니다.

**구문**

```sql theme={null}
bitmapOr(bitmap1, bitmap2)
```

**인수**

* `bitmap1` — 첫 번째 비트맵 객체입니다. [`AggregateFunction(groupBitmap, T)`](/ko/reference/data-types/aggregatefunction). - `bitmap2` — 두 번째 비트맵 객체입니다. [`AggregateFunction(groupBitmap, T)`](/ko/reference/data-types/aggregatefunction).

**반환 값**

입력 비트맵 중 하나에라도 존재하는 1로 설정된 비트를 포함한 비트맵을 반환합니다. [`AggregateFunction(groupBitmap, T)`](/ko/reference/data-types/aggregatefunction)

**예시**

**사용 예시**

```sql title=Query theme={null}
SELECT bitmapToArray(bitmapOr(bitmapBuild([1, 2, 3]), bitmapBuild([3, 4, 5]))) AS res;
```

```response title=Response theme={null}
┌─res─────────────┐
│ [1, 2, 3, 4, 5] │
└─────────────────┘
```

<div id="bitmapOrCardinality">
  ## bitmapOrCardinality
</div>

도입 버전: v20.1.0

두 비트맵의 논리합(OR) 결과의 카디널리티를 반환합니다.

**구문**

```sql theme={null}
bitmapOrCardinality(bitmap1, bitmap2)
```

**인수**

* `bitmap1` — 첫 번째 비트맵 객체입니다. [`AggregateFunction(groupBitmap, T)`](/ko/reference/data-types/aggregatefunction). - `bitmap2` — 두 번째 비트맵 객체입니다. [`AggregateFunction(groupBitmap, T)`](/ko/reference/data-types/aggregatefunction).

**반환 값**

두 비트맵의 합집합에서 1로 설정된 비트 수를 반환합니다. [`UInt64`](/ko/reference/data-types/int-uint)

**예시**

**사용 예시**

```sql title=Query theme={null}
SELECT bitmapOrCardinality(bitmapBuild([1,2,3]), bitmapBuild([3,4,5])) AS res;
```

```response title=Response theme={null}
┌─res─┐
│   5 │
└─────┘
```

<div id="bitmapSubsetInRange">
  ## bitmapSubsetInRange
</div>

도입 버전: v20.1.0

지정된 범위 \[start, end) 내에서 설정된 비트만 포함하는 비트맵의 부분 집합을 반환합니다. 인덱스는 1부터 시작합니다.

**구문**

```sql theme={null}
bitmapSubsetInRange(bitmap, start, end)
```

**인수**

* `bitmap` — 부분 집합을 추출할 비트맵입니다. [`AggregateFunction(groupBitmap, T)`](/ko/reference/data-types/aggregatefunction). - `start` — 범위의 시작(포함)입니다. [`UInt*`](/ko/reference/data-types/int-uint) - `end` — 범위의 끝(미포함)입니다. [`UInt*`](/ko/reference/data-types/int-uint)

**반환 값**

지정된 범위에서 1로 설정된 비트만 포함하는 비트맵을 반환합니다 [`AggregateFunction(groupBitmap, T)`](/ko/reference/data-types/aggregatefunction)

**예시**

**사용 예시**

```sql title=Query theme={null}
SELECT bitmapToArray(bitmapSubsetInRange(bitmapBuild([1, 2, 3, 4, 5]), 2, 5)) AS res;
```

```response title=Response theme={null}
┌─res───────┐
│ [2, 3, 4] │
└───────────┘
```

<div id="bitmapSubsetLimit">
  ## bitmapSubsetLimit
</div>

도입 버전: v20.1.0

위치 `range_start`부터 최대 `cardinality_limit`개의 비트가 설정된 비트맵 부분집합을 반환합니다. 인덱싱은 1부터 시작합니다.

**구문**

```sql theme={null}
bitmapSubsetLimit(bitmap, range_start, cardinality_limit)
```

**인수**

* `bitmap` — 비트맵 객체. [`AggregateFunction(groupBitmap, T)`](/ko/reference/data-types/aggregatefunction). - `range_start` — 범위의 시작값(포함). [`UInt32`](/ko/reference/data-types/int-uint) - `cardinality_limit` — 부분 집합의 최대 카디널리티. [`UInt32`](/ko/reference/data-types/int-uint)

**반환 값**

`range_start`부터 시작하는, 최대 `cardinality_limit`개의 비트가 설정된 비트맵을 반환합니다. [`AggregateFunction(groupBitmap, T)`](/ko/reference/data-types/aggregatefunction)

**예시**

**사용 예시**

```sql title=Query theme={null}
SELECT bitmapToArray(bitmapSubsetLimit(bitmapBuild([1, 5, 3, 2, 8]), 3, 2)) AS res;
```

```response title=Response theme={null}
┌─res────┐
│ [5, 3] │
└────────┘
```

<div id="bitmapToArray">
  ## bitmapToArray
</div>

도입 버전: v20.1.0

비트맵을 부호 없는 정수 배열로 변환합니다. 함수 [`bitmapBuild`](/ko/reference/functions/regular-functions/bitmap-functions#bitmapBuild)와 반대되는 기능입니다.

**구문**

```sql theme={null}
bitmapToArray(bitmap)
```

**인수**

* `bitmap` — 변환할 비트맵입니다. [`AggregateFunction(groupBitmap, T)`](/ko/reference/data-types/aggregatefunction).

**반환 값**

비트맵에 포함된 부호 없는 정수 배열을 반환합니다. [`Array(UInt*)`](/ko/reference/data-types/array)

**예시**

**사용 예시**

```sql title=Query theme={null}
SELECT bitmapToArray(bitmapBuild([1, 2, 3, 4, 5])) AS res;
```

```response title=Response theme={null}
┌─res─────────────┐
│ [1, 2, 3, 4, 5] │
└─────────────────┘
```

<div id="bitmapTransform">
  ## bitmapTransform
</div>

도입 버전: v20.1.0

`from_array`의 특정 비트 값을 `to_array`의 해당 값으로 교체하여 비트맵에서 최대 N개의 비트를 변경합니다.

**구문**

```sql theme={null}
bitmapTransform(bitmap, from_array, to_array)
```

**인수**

* `bitmap` — 비트맵 객체. [`AggregateFunction(groupBitmap, T)`](/ko/reference/data-types/aggregatefunction). - `from_array` — 대체할 기존 설정 비트의 배열. [`Array(T)`](/ko/reference/data-types/array). - `to_array` — 대체에 사용할 새 설정 비트의 배열. [`Array(T)`](/ko/reference/data-types/array).

**반환 값**

지정된 매핑에 따라 요소가 변환된 비트맵을 반환합니다. [`AggregateFunction(groupBitmap, T)`](/ko/reference/data-types/aggregatefunction)

**예시**

**사용 예시**

```sql title=Query theme={null}
SELECT bitmapToArray(bitmapTransform(bitmapBuild([1, 2, 3, 4, 5]), [2, 4], [20, 40])) AS res;
```

```response title=Response theme={null}
┌─res───────────────┐
│ [1, 3, 5, 20, 40] │
└───────────────────┘
```

<div id="bitmapXor">
  ## bitmapXor
</div>

도입 버전: v20.1.0

두 비트맵의 대칭 차집합(XOR)을 계산합니다.

**구문**

```sql theme={null}
bitmapXor(bitmap1, bitmap2)
```

**인수**

* `bitmap1` — 첫 번째 비트맵 객체입니다. [`AggregateFunction(groupBitmap, T)`](/ko/reference/data-types/aggregatefunction). - `bitmap2` — 두 번째 비트맵 객체입니다. [`AggregateFunction(groupBitmap, T)`](/ko/reference/data-types/aggregatefunction).

**반환 값**

입력 비트맵 중 한쪽에만 있고 양쪽 모두에 있지는 않은 비트를 포함하는 비트맵을 반환합니다 [`AggregateFunction(groupBitmap, T)`](/ko/reference/data-types/aggregatefunction)

**예시**

**사용 예시**

```sql title=Query theme={null}
SELECT bitmapToArray(bitmapXor(bitmapBuild([1, 2, 3]), bitmapBuild([3, 4, 5]))) AS res;
```

```response title=Response theme={null}
┌─res──────────┐
│ [1, 2, 4, 5] │
└──────────────┘
```

<div id="bitmapXorCardinality">
  ## bitmapXorCardinality
</div>

도입 버전: v20.1.0

두 비트맵의 XOR(대칭 차집합)에 대한 카디널리티를 반환합니다.

**구문**

```sql theme={null}
bitmapXorCardinality(bitmap1, bitmap2)
```

**인수**

* `bitmap1` — 첫 번째 비트맵 객체. [`AggregateFunction(groupBitmap, T)`](/ko/reference/data-types/aggregatefunction). - `bitmap2` — 두 번째 비트맵 객체. [`AggregateFunction(groupBitmap, T)`](/ko/reference/data-types/aggregatefunction).

**반환 값**

두 비트맵의 대칭 차집합에서 1로 설정된 비트 수를 반환합니다 [`UInt64`](/ko/reference/data-types/int-uint)

**예시**

**사용 예시**

```sql title=Query theme={null}
SELECT bitmapXorCardinality(bitmapBuild([1,2,3]), bitmapBuild([3,4,5])) AS res;
```

```response title=Response theme={null}
┌─res─┐
│   4 │
└─────┘
```

<div id="subBitmap">
  ## subBitmap
</div>

도입 버전: v21.9.0

`offset` 위치부터 시작하는 비트맵의 부분 집합을 반환합니다. 반환되는 비트맵의 최대 카디널리티는 `cardinality_limit`입니다.

**구문**

```sql theme={null}
subBitmap(bitmap, offset, cardinality_limit)
```

**인수**

* `bitmap` — 비트맵 객체. [`AggregateFunction(groupBitmap, T)`](/ko/reference/data-types/aggregatefunction). - `offset` — 앞에서부터 건너뛸 1로 설정된 비트 수(0부터 시작). [`UInt32`](/ko/reference/data-types/int-uint) - `cardinality_limit` — 부분 집합에 포함할 1로 설정된 비트의 최대 개수. [`UInt32`](/ko/reference/data-types/int-uint)

**반환 값**

오름차순에서 `offset`개의 1로 설정된 비트를 건너뛴 다음부터 시작하는, 최대 `limit`개의 1로 설정된 비트를 포함하는 비트맵을 반환합니다 [`AggregateFunction(groupBitmap, T)`](/ko/reference/data-types/aggregatefunction)

**예시**

**사용 예시**

```sql title=Query theme={null}
SELECT bitmapToArray(subBitmap(bitmapBuild([1, 2, 3, 4, 5]), 2, 2)) AS res;
```

```response title=Response theme={null}
┌─res────┐
│ [3, 4] │
└────────┘
```
