비트맵 함수
비트맵은 두 가지 방식으로 생성할 수 있습니다. 첫 번째 방식은 집계 함수 groupBitmap의 -State 변형을 사용해 비트맵을 생성하는 것이고, 다른 방식은 Array 객체로부터 비트맵을 생성하는 것입니다.
bitmapAnd
도입 버전: v20.1
두 비트맵의 논리곱(AND)을 계산합니다.
구문
인수
bitmap1— 첫 번째 비트맵 객체.AggregateFunction(groupBitmap, T). -bitmap2— 두 번째 비트맵 객체.AggregateFunction(groupBitmap, T).
반환값
두 입력 비트맵 모두에 존재하는 비트를 포함하는 비트맵을 반환합니다. AggregateFunction(groupBitmap, T)
예제
사용 예제
bitmapAndCardinality
도입된 버전: v20.1
두 비트맵에 대한 논리곱(AND)의 카디널리티(cardinality)를 반환합니다.
구문
인수
bitmap1— 첫 번째 비트맵 객체입니다.AggregateFunction(groupBitmap, T). -bitmap2— 두 번째 비트맵 객체입니다.AggregateFunction(groupBitmap, T).
반환 값
두 비트맵의 교집합에 포함된 1로 설정된 비트 개수를 반환합니다. UInt64
예시
사용 예시
bitmapAndnot
도입된 버전: v20.1
두 비트맵 A, B에 대해 집합 차이 A AND-NOT B를 계산합니다.
구문
인수
bitmap1— 첫 번째 비트맵 객체.AggregateFunction(groupBitmap, T). -bitmap2— 두 번째 비트맵 객체.AggregateFunction(groupBitmap, T).
반환 값
첫 번째 비트맵에는 존재하지만 두 번째 비트맵에는 존재하지 않는 설정된 비트를 포함하는 비트맵을 반환합니다. AggregateFunction(groupBitmap, T)
예시
사용 예시
bitmapAndnotCardinality
도입 버전: v20.1
두 비트맵에 대해 AND-NOT 연산을 수행한 결과의 카디널리티를 반환합니다.
구문
인수
bitmap1— 첫 번째 비트맵 객체입니다.AggregateFunction(groupBitmap, T). -bitmap2— 두 번째 비트맵 객체입니다.AggregateFunction(groupBitmap, T).
반환 값
bitmap1 AND-NOT bitmap2 연산 결과에서 1로 설정된 비트 수를 반환합니다. UInt64
예시
사용 예시
bitmapBuild
도입: v20.1
비부호 정수 배열에서 비트맵을 생성합니다. 함수 bitmapToArray와 반대 동작을 수행합니다.
구문
인수
array— 부호 없는 정수형 배열입니다.Array(UInt*)
반환 값
제공된 배열로부터 비트맵을 반환합니다. AggregateFunction(groupBitmap, T)
예제
사용 예제
bitmapCardinality
도입 버전: v20.1
비트맵에서 설정된 비트 수(카디널리티)를 반환합니다.
구문
인수
bitmap— Bitmap 객체.AggregateFunction(groupBitmap, T).
반환 값
bitmap에서 설정된 비트의 개수를 반환합니다. UInt64
예시
사용 예시
bitmapContains
도입된 버전: v20.1
비트맵에 특정 요소가 포함되어 있는지 검사합니다.
구문
인수
bitmap— 비트맵 객체.AggregateFunction(groupBitmap, T). -value— 확인할 값. (U)Int8/16/32/64
반환값
비트맵에 지정된 값이 포함되어 있으면 1, 그렇지 않으면 0을 반환합니다. UInt8
예제
사용 예제
bitmapHasAll
도입 버전: v20.1
첫 번째 비트맵에 두 번째 비트맵의 모든 설정 비트가 포함되어 있는지 확인합니다.
구문
인수
bitmap1— 첫 번째 비트맵 객체.AggregateFunction(groupBitmap, T). -bitmap2— 두 번째 비트맵 객체.AggregateFunction(groupBitmap, T).
반환 값
두 번째 비트맵에서 설정된 모든 비트가 첫 번째 비트맵에도 모두 존재하면 1, 그렇지 않으면 0을 반환합니다. UInt8
예시
사용 예시
bitmapHasAny
도입 버전: v20.1
첫 번째 비트맵이 두 번째 비트맵에서 1로 설정된 비트(켜진 비트) 중 하나라도 포함하는지 확인합니다.
구문
인수
bitmap1— 첫 번째 비트맵 객체입니다.AggregateFunction(groupBitmap, T). -bitmap2— 두 번째 비트맵 객체입니다.AggregateFunction(groupBitmap, T).
반환값
두 번째 비트맵의 비트가 하나라도 첫 번째 비트맵에 존재하면 1을 반환하고, 그렇지 않으면 0을 반환합니다. UInt8
예시
사용 예시
bitmapMax
도입된 버전: v20.1
비트맵에서 가장 큰 비트가 설정된 위치를 반환하며, 비트맵이 비어 있으면 0을 반환합니다.
구문
인수
bitmap— 비트맵 객체.AggregateFunction(groupBitmap, T).
반환 값
비트맵에서 가장 높은 위치의 설정된 비트의 위치를 반환하며, 없으면 0을 반환합니다. UInt64
예시
사용 예시
bitmapMin
도입 버전: v20.1
비트맵에서 설정된 비트 중 가장 작은 위치의 비트 인덱스를 반환합니다. 모든 비트가 설정되지(unset) 않은 상태이면 UINT32_MAX를 반환합니다 (2^64개보다 많은 비트를 포함하는 비트맵인 경우에는 UINT64_MAX를 반환합니다).
구문
인수
bitmap— 비트맵 객체입니다.AggregateFunction(groupBitmap, T).
반환 값
비트맵에서 값이 설정된(1인) 비트 중 가장 작은 비트의 위치를 반환하며, 그러한 비트가 없으면 UINT32_MAX/UINT64_MAX UInt64을(를) 반환합니다.
예시
사용 예시
bitmapOr
도입 버전: v20.1
두 비트맵에 대한 논리합(OR)을 계산합니다.
구문
인수
bitmap1— 첫 번째 비트맵 객체입니다.AggregateFunction(groupBitmap, T). -bitmap2— 두 번째 비트맵 객체입니다.AggregateFunction(groupBitmap, T).
반환 값
두 입력 비트맵 중 어느 한쪽에 존재하는 1로 설정된 비트들을 포함하는 비트맵을 반환합니다. AggregateFunction(groupBitmap, T)
예시
사용 예시
bitmapOrCardinality
도입된 버전: v20.1
두 비트맵의 논리합(OR)에 대한 기수(cardinality)를 반환합니다.
구문
인수
bitmap1— 첫 번째 비트맵 객체입니다.AggregateFunction(groupBitmap, T). -bitmap2— 두 번째 비트맵 객체입니다.AggregateFunction(groupBitmap, T).
반환 값
두 비트맵의 합집합에서 설정된 비트 수를 반환합니다. UInt64
예시
사용 예시
bitmapSubsetInRange
도입 버전: v20.1
지정된 범위 [start, end) 내에서 1로 설정된 비트만 포함하는 비트맵 부분집합을 반환합니다. 인덱스는 1부터 시작합니다.
구문
인자
bitmap— 부분 집합을 추출할 비트맵입니다.AggregateFunction(groupBitmap, T). -start— 범위의 시작(포함)입니다.UInt*-end— 범위의 끝(제외)입니다.UInt*
반환 값
지정된 범위에서 비트가 설정된 부분만 포함하는 비트맵을 반환합니다. AggregateFunction(groupBitmap, T)
예시
사용 예시
bitmapSubsetLimit
도입된 버전: v20.1
비트맵에서 위치 range_start부터 시작하여 최대 cardinality_limit개의 set된 비트를 포함하는 부분 비트맵을 반환합니다. 인덱싱은 1부터 시작합니다.
구문
인자
bitmap— Bitmap 객체.AggregateFunction(groupBitmap, T). -range_start— 구간의 시작 값(포함).UInt32-cardinality_limit— 부분집합의 최대 카디널리티(cardinality).UInt32
반환 값
range_start부터 시작하여 최대 cardinality_limit개의 설정된 비트를 포함하는 비트맵을 반환합니다. AggregateFunction(groupBitmap, T)
예시
사용 예시
bitmapToArray
도입 버전: v20.1
비트맵을 부호 없는 정수 배열로 변환합니다. 함수 bitmapBuild의 역연산입니다.
구문
인수
bitmap— 변환할 비트맵입니다.AggregateFunction(groupBitmap, T).
반환값
비트맵에 포함된 부호 없는 정수(UInt)로 구성된 배열을 반환합니다. Array(UInt*)
예시
사용 예시
bitmapTransform
도입 버전: v20.1
from_array의 특정 비트 값을 to_array의 대응 값으로 치환하여 비트맵에서 최대 N개의 비트를 변경합니다.
구문
인자
bitmap— 비트맵 객체.AggregateFunction(groupBitmap, T). -from_array— 대체할 기존 설정 비트 값들의 배열.Array(T). -to_array— 새로 설정할 비트 값들의 배열.Array(T).
반환 값
지정된 매핑에 따라 요소가 변환된 비트맵을 반환합니다. AggregateFunction(groupBitmap, T)
예시
사용 예시
bitmapXor
도입 버전: v20.1
두 비트맵 간의 대칭 차집합(XOR)을 계산합니다.
구문
인수
bitmap1— 첫 번째 비트맵 객체입니다.AggregateFunction(groupBitmap, T). -bitmap2— 두 번째 비트맵 객체입니다.AggregateFunction(groupBitmap, T).
반환 값
두 입력 비트맵 중 하나에만 존재하고 둘 다에는 존재하지 않는 비트가 설정되어 있는 비트맵을 반환합니다. AggregateFunction(groupBitmap, T)
예제
사용 예제
bitmapXorCardinality
도입 버전: v20.1
두 비트맵에 대한 XOR(대칭 차집합)의 카디널리티(원소 개수)를 반환합니다.
구문
인수
bitmap1— 첫 번째 bitmap 객체입니다.AggregateFunction(groupBitmap, T). -bitmap2— 두 번째 bitmap 객체입니다.AggregateFunction(groupBitmap, T).
반환 값
두 bitmap의 대칭 차집합에 있는 1로 설정된 비트 개수를 반환합니다. UInt64
예시
사용 예시
subBitmap
도입된 버전: v21.9
비트맵에서 offset 위치부터 시작하는 부분 비트맵을 반환합니다. 반환되는 비트맵의 최대 카디널리티는 cardinality_limit입니다.
구문
인수
bitmap— Bitmap 객체.AggregateFunction(groupBitmap, T). -offset— 처음부터(0 기준) 건너뛸 set 비트의 개수.UInt32-cardinality_limit— 부분집합에 포함할 set 비트의 최대 개수.UInt32
반환 값
offset 개수만큼 set 비트를 오름차순으로 건너뛴 뒤, 최대 limit개의 set 비트를 포함하는 bitmap을 반환합니다. AggregateFunction(groupBitmap, T)
예시
사용 예시