BITMAP_AND
BITMAP_AND
두 입력 비트맵에 대한 비트 단위 AND 연산의 결과인 비트맵을 반환하는 집계 함수예요.
출처: 공식 문서
본문
두 입력 비트맵에 대한 비트 단위 AND 연산의 결과인 비트맵을 반환합니다.
관련 항목: Using Bitmaps to Compute Distinct Values for Hierarchical Aggregations
구문 (Syntax)
BITMAP_AND( <bitmap1> , <bitmap2> )
인자 (Arguments)
BITMAP_CONSTRUCT_AGG, BITMAP_OR_AGG 또는 기타 비트맵 함수가 반환한 비트맵입니다.
BITMAP_CONSTRUCT_AGG, BITMAP_OR_AGG 또는 기타 비트맵 함수가 반환한 비트맵입니다.
반환값 (Returns)
두 입력 비트맵 모두에 존재하는 비트만 설정된 비트맵을 나타내는 BINARY 값입니다.
예제 (Examples)
Using Bitmaps to Compute Distinct Values for Hierarchical Aggregations를 참고하세요.
CREATE OR REPLACE TABLE events (user_id INT, value INT);
INSERT INTO events VALUES
(1, 1), (1, 5), (1, 100),
(2, 5), (2, 100), (2, 50000),
(3, 1), (3, 2), (3, 3), (3, 5);
CREATE OR REPLACE TABLE user_bitmaps AS
SELECT
user_id,
BITMAP_BUCKET_NUMBER(value) AS bucket,
BITMAP_CONSTRUCT_AGG(BITMAP_BIT_POSITION(value)) AS bmp
FROM events
GROUP BY user_id, bucket;
SELECT bitmap_to_array(bitmap_and(a.bmp, b.bmp), a.bucket)
FROM user_bitmaps a
JOIN user_bitmaps b ON a.bucket = b.bucket
WHERE a.user_id = 1 AND b.user_id = 3;
+------------------------------------------------------+
| BITMAP_TO_ARRAY(BITMAP_AND(A.BMP, B.BMP), A.BUCKET) |
+------------------------------------------------------+
| [ 1, 5 ] |
+------------------------------------------------------+