BITMAP_AND_AGG
BITMAP_AND_AGG
그룹 안의 모든 입력 비트맵에 대한 비트 단위 AND 연산(교집합)의 결과인 비트맵을 반환하는 집계 함수예요.
출처: 공식 문서
본문
그룹 안의 모든 입력 비트맵에 대한 비트 단위 AND 연산(교집합)의 결과인 비트맵을 반환합니다.
관련 항목: Using Bitmaps to Compute Distinct Values for Hierarchical Aggregations
구문 (Syntax)
BITMAP_AND_AGG( <bitmap> )
인자 (Arguments)
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 bucket, bitmap_to_array(bitmap_and_agg(bmp), bucket)
FROM user_bitmaps
GROUP BY bucket;
+--------+----------------------------------------------+
| BUCKET | BITMAP_TO_ARRAY(BITMAP_AND_AGG(BMP), BUCKET) |
+--------+----------------------------------------------+
| 1 | [ 5 ] |
| 2 | [ 50000 ] |
+--------+----------------------------------------------+